シンガポール、日本、韓国、香港、米国東海岸、米国西海岸にまたがる専用リモート MacホストでJenkinsまたはBuildkiteの macOS エージェントを動かし、すでにGitHub ActionsまたはGitLabのセルフホスト runner を運用している場合、予算と監査で苦しくなるのは多くの場合 vCPU ではなく、第二のコントローラがもたらす認証情報の爆発半径です。90 日 PAT を誰が保持するか、どのユーザーコンテキストが match 復号のキーチェーンと ASC セッションを所有するか、バーストホストの再構築時にシークレットがイメージに固定されていないか、といった論点です。本稿では三本の台帳——認証情報トポロジー、ミューテックス規則、リース会計——を示し、Jenkins/Buildkite の段階的リース runbookおよびrunner のラベルとシークレットチェックリストと補完的です。そちらがキューを扱う一方、こちらはアイデンティティ、OIDC、失効経路を扱います。
~/.ssh に Jenkins、buildkite-agent、actions-runner が同居すると、git credential-osxkeychain のプロンプトが出た瞬間に無人 CI が不安定なグリーンになります。六国構成の価値は予測可能なコロケーションと専用 IOです。認証情報トポロジーが曖昧なままでは混乱だけがスケールします。Xcode Cloud ハイブリッド CIも走らせるなら、ASC と内部レジストリのどちらにどのアイデンティティが触れてよいかを明記しない限り、ハイブリッドマトリクスはハイブリッドインシデントになります。
認証情報 RACIを導入してください。プラットフォームがマシンユーザーと OIDC 束縛を、リポジトリがワークフロー範囲を、セキュリティが失効ドリルを所有します。第二コントローラが本番に入ると、ここに隙があるだけで一気に破綻します。
| 観点 | 長寿命 PAT/デプロイキーを優先 | OIDC/短命トークンを優先 |
|---|---|---|
| リース | 月次以上のベースラインホストに限り、イメージ外からシークレット注入するとき | 信頼条件が厳しければ日次/週次バーストでも利用可 |
| 監査粒度 | 「誰がどのホストに PAT を置いたか」の追加ログが必要になり、ローテーションは四半期決算に寄りがち | クラウドがリポジトリ・環境・プールまで束縛でき、ジョブ単位の帰属がしやすい |
| Jenkins プラグイン群 | 多くのプラグインが静的資格情報ファイルを前提とする | 明示的なパイプライン改修が必要で、初期コストは高い |
| Buildkite | フックがシークレットを黙ってエクスポートしうる | フックは組み立てだけにし、シークレットは OIDC で交換した短命トークンから渡す |
| GHA/GitLab runner | セルフホスト runner は長い .credentials ファイルを抱えがち |
クラウド STS への OIDC が主流——まずこちらに合わせる |
赤線:組織全体に効く長寿命 PAT やルート級デプロイキーを日次バーストホストに置かないでください。どうしても必要なら、同じ承認チケットでシークレットの寿命をリース上限に束縛してください。
jenkins、buildkite、runner。CI 用途での対話型ログイン共有は禁止します。ROUTING.md とパイプラインコメントに残します。# Example mutex (replace flock backend with your coordination service)
exec 9>/var/lock/match-decrypt.lock
flock -n 9 || { echo "match decrypt busy"; exit 42; }
# Example split users (LaunchDaemon sketch—do not copy paths blindly)
# UserName=buildkite vs UserName=runner — each HOME keeps its own git credential helper config
.env が、第二コントローラを入れないより悪い理由手作業のキーチェーン対応は監査に耐えません。最後にアンロックしたのが誰か、対話セッションが開いたままかは SOC2 の証跡になりません。万能の .env は単一リポジトリからコンテナを起動できる誰にでも表面を広げ、ジョブ単位の OIDC 最小権限と正反対です。
Jenkins/Buildkite と runner を共存させたいときに、専用 Apple Silicon で安定したリージョン egress とベースライン対バーストのリース分離が欲しければ、MACCOME クラウド Mac miniが物理的なアンカーとして適していることが多く、シンガポール・日本・韓国・香港・米国東西で日次/週次/月次/四半期リースを選べます。コンパイル吞吐を追う前にどのアイデンティティがどのホストにどれだけ滞在してよいかを台帳に載せてください——シミュレータ五つと公証三本分を走らせながら日次ホストに 90 日 PAT を凍結しないでください。
三つの表を出荷してください:マシンユーザー ↔ HOME 対応、ミューテックス対象 ↔ ロック名、OIDC 信頼 ↔ STS 範囲。初日の新メンバーが、ジョブがどのアイデンティティを使うか、失敗時にどのトークン種別を失効させるか、バーストに 90 日 PAT が無い理由を答えられるようにします。
runner のシークレットチェックリストと組み合わせるときは、「GitHub 側 OIDC」と「macOS キーチェーン領域」を同一変更チケットにまとめないと、クラウド上の信頼ポリシーは完璧でもベアメタルのパーティションは空のまま、というズレが残ります。
FAQ
Jenkins、Buildkite、GitHub Actions の runner は同一ホストに共存できますか?
ユーザー分割・キーチェーン領域・排他ステップの直列化があれば可能です。スタック全体で長寿命 PAT を共有しないでください。キューの詳細は段階的リース runbookを参照してください。公開リース段階はレンタル料金をご覧ください。
長寿命シークレットを月次ベースラインホストに載せる理由は何ですか?
日次ホストは入れ替わりが速く、静的シークレットがイメージやバックアップへ漏れやすいです。ベースラインホストが監査上のアイデンティティを固定します。運用の補足はヘルプセンターも併せてご確認ください。