目前的 CI 大多數都是跑在 cloud 上面,而且會 scaling,所以我一直以為沒有固定的 IP address (算是我的刻板印象),不過實際查了一下,發現商用 CI 服務是有考慮到的...
Travis CI 的說明是在「ip-addresses.md」這邊,可以透過 nat.travisci.net
這個 DNS record 取得他們的 NAT 會用到的 IP address。
另外他們會在使用前 24 小時前先公佈這組資料,所以如果你設計 cron job 更新的話可以考慮進去:
We will announce changes to this set of IP addresses with a 24 hour notice period.
CircleCI 則是再「IP ranges」這邊提供類似的方式,jobs.knownips.circleci.com
、core.knownips.circleci.com
以及 all.knownips.circleci.com
,另外新增的提前通知會有 30 天:
30 days notice will be given before changes are made to the existing set of IP address ranges.
GitHub Actions 則是可以在「About GitHub's IP addresses」以及「REST API endpoints for meta data」這邊拿到,在 actions
這個 key 下面有 IP address 的列表,測了一下不需要帶 token 就可以取得,不過這邊好像沒看到預先通知的時間...
其實因為這些服務還是共用 IP pool,攻擊者也可以租用這些 CI 服務在上面跑程式... 所以主要的需求還是 compliance,倒不是真的會因此變得有多安全。