三つの痛み:永続鍵はブラスト半径を静かに拡大する
第一に、アイデンティティがパイプライン寿命から乖離する。リポジトリ改名やフォーク継承で古い秘密が残り、監査で「どのワークフローが sftp_prod になるのか」を掘らねばならなくなる。複数チームが同一Unixアカウントを共有する リモートMac では、OpenSSH ログは publickey 成功しか示さず、Organization や Group まで追えない。
第二に、シークレット平面が肥大化し最小権限を壊す。organization シークレットは便利だが、実験ワークフローまで本番アップロード経路に触れうる。base64 鍵を echo すればランナーログやキャッシュに残る。ディレクトリ境界と同じ厳しさでスコープを設計する。
第三に、ローテーションカレンダーは事故まで延ばされる。短命トークンは期限を日常化するが、静的鍵は四半期作業として忘れがち。チェックサムゲート や原子リリースと同じ変更管理に憑依管理を置くべきである。
補足:コンプライアンスは失効可能性と職務分離を求める。OIDCクレームで staging/production を境界化し、run id・issuer・principal を証明書拡張と突合せよ。高並列で同一秘密を使い回すと漏えい時の半径が拡大するため、アカウントまたは鍵を分割せよ。
資格モデル:OIDC、deploy key、PAT、SSH証明書
GitHub Actions OIDC / GitLab JWT はランナーがトークン交換サービスに身元を示し、短命SSH鍵やユーザ証明書を発行させる。信頼の根を静的ファイルから監査可能な連鎖へ移す。発行基盤にはMFA・パッチ・レート制限・SIEM連携が要る。発行失敗を黙殺すると開発者PCへの手動アップロードというシャドウITに戻る。
deploy key は単一リポ・単一目標プレフィックスで規律ある小チーム向き。読み取り専用と書き込みを分離し、公開鍵コメントにワークフローと責任者を書く。PAT は主にHTTPS Git向けでSFTPと同一secret名に置くな。SSH証明書 はTTLとPrincipalを運び、chroot と相性が良い。
交換エンドポイントと署名鍵も高価値資産であり、失敗時アラートと手動フォールバック手順を用意する。
意思決定マトリクス
ファイアウォール変更チケットと同じ文書に結論を残す。
| モデル | 向く場面 | 露出時間 | 運用負荷 |
|---|---|---|---|
| 長寿命 deploy key | 最小チーム・低頻度リリース | 高 | 初期低・長期高 |
| OIDC→短命SSH | 中規模・規制・クレーム境界 | 低(分単位) | 中高(HA) |
| SSHユーザ証明書 | 既存CA | 中低 | 中 |
| Unix分割のみ | 移行中 | 中 | 低中 |
資格を細かくしても MaxSessions 圧力は残る。
実装:GitHub Actions から sshd まで六段以上
ステージングで検証し、sshd リロード時は二系統シェルを維持する。
# 1 OIDC を有効化(公式手順に従う)
# 2 JWT 検証後、RUNNER_TEMP に短命 ed25519 またはユーザ証明書を書き込み
Host mac-ci-prod
HostName 10.0.50.20
User sftp_ci_prod
IdentityFile "$RUNNER_TEMP/ci_ed25519"
StrictHostKeyChecking accept-new
ServerAliveInterval 60
# RSYNC_RSH="ssh -F ~/.ssh/config_ci -o BatchMode=yes"
# Match User + internal-sftp + ChrootDirectory
# authorized_keys コメント例 gh:org/repo:workflow:environment
production environment とレビュアを結びつけ、ログはフィンガープリントと RUN_ID のみ。アップロードは 原子リリース ディレクトリへ。
定量基準:二重鍵・SIEM
静的鍵は本番Macビルダーで30日ごとレビュー。二重鍵は72時間重複、ロールバック用に24時間読み取りのみ保持。発行KMSは14日以内に復旧訓練。SIEM は github_actor・run_id・environment・key_fp・Unixアカウントを結合する。
ランナー衛生:マネージド短命ディスクは鍵退避に有利。セルフホストはtmpfsと再イメージで残留ファイルを減らす。握手P95が800msを超えたらバスチョンCPUとFWセッションを先に疑う。
発行鍵の四半期テーブルトップ演習でエスクロー漏れを可視化し、Terraform と同じリポジトリに教訓を残す。
FAQ とホスト型リモートMac
OIDCだけで deploy key は消えるか
sshdが信頼できる材料を返す発行コンポーネントが必要。
ログに絶対出してはいけないもの
PEM本文、生シークレット、パスフレーズ付き対話コマンド。
トークンが短くてもUnix分割は必要か
認証とディレクトリPOSIX分離は別層である。
まとめ:短命でクレーム境界されたCI認証を chroot・並行・原子配布と揃えよ。限界:発行・プロキシ・ログは自前運用が残る。SFTPMAC のホスト型 リモートMac は入口とテナント分離を束ね、コンパイラと配布に集中できる。
自前Macは電源・予備部品・リモートハンズコストを抱え、憑依管理の遅れと相乗する。経営層には恒久秘密削減と監査準備時間短縮を数値で語れ。
入口とディレクトリを一体で任せたいチームは SFTPMAC プランを参照。
