Mac mini M4 をスケジュール可能なビルドノードとして使うとき、ダッシュボードが緑のままでも、攻撃者を黙ってプールに参加させるのは漏えいした登録トークンやスコープ過大の PAT であって、SSH のパスワードではありません。本稿の2026年版チェックリストでは、ローテーション間隔、シークレットの保管境界、漏えいトリアージ用マトリクス、8段階の対応手順、四半期の机上訓練、OIDC 移行の留意点、CMDB に載せる最低限の項目を整理します。形の違う表を2つと、数値しきい値を明示しているので、そのままオンコール用バインダーに貼り込めます。
まだランナーを立ち上げていない場合は、Mac mini M4 上のセルフホスト型 GitHub Actions から始めてください。メンテナンスは ランナーのドレインと引き継ぎ に揃え、CI とエージェントが同一ハードを共有する場合は CI とエージェントのキャパシティ貸し出し を参照してください。リモートコンソールは ヘルプ と VNC を利用してください。
なぜトークンがパスワードより攻撃経路になりやすいか
- 使い捨て登録の悪用: Slack やチケットに貼られたトークンは、おおよそ 60 分以内に悪意あるランナーを登録でき、キューは健全に見えたままになり得ます。
- スコープ過大の PAT: リポジトリへの書き込みにワークフロー編集まで付いたビルド用 PAT は、一度漏えいすると多くのシークレット文脈へ間接的に届きます。
- ディスク上のシークレット: バックアップ同期される
.envや plist にトークンを入れると、上流はローテーションしたのにゴールデンイメージを忘れ、安心感だけが残ります。
ローテーション間隔と保管パターン
| 資格情報 | 推奨する最長寿命 | 保管 |
|---|---|---|
| 組織/リポジトリ登録トークン | ワンタイム、1 時間以内に消費 | 短命のシークレット管理から注入。イメージに焼き込まない |
| きめ細かい PAT(ランナー登録のみ) | 90 日ごとにレビュー、30 日前に警告 | macOS Keychain、最小スコープ |
| デバッグ用の広い PAT | 7 日、またはビルダーでは禁止 | ノートPC のみ。ランナーユーザーのプロファイルには置かない |
漏えいトリアージ・マトリクス
このマトリクスで「ランナーを先に消すか、トークンを先に失効させるか」という口論を終わらせます。第2列を実行し、続けて第3列、検証として第4列を満たしてから、8ステップのチェックリストに進んでください。
| 露出 | 第1アクション | 第2アクション | 証跡 |
|---|---|---|---|
| 公開チャンネルに登録トークン | 無効化し組織フローを再発行 | 直近 24 時間に登録されたランナーを監査 | 不明ホストが削除済み |
| リポジトリとワークフローを編集できる PAT | 直ちに失効 | 異常なワークフローコミットをスキャン | デフォルトブランチの保護が維持されている |
| ランナーセッション窃取の疑い | ホストをオフライン、マシンシークレットをローテーション | 想定外の外向き通信を調査 | 新規セッションは新しいトークンからのみ |
CMDB の最低限: 各ビルド用 Mac には runner_id、有効 PAT のハッシュ指紋、最終ローテーション(UTC)、所有エンジニアリンググループを記録してください。この4項目が欠けると、インシデントの中央値所要時間が 25 分から数時間に伸びます。
OIDC のジョブ身元と PAT
2026年時点では、多くの macOS フリートが OIDC トークンを短命のクラウド資格情報と交換し、長寿命 PAT をディスクに置かない運用に移行しています。GITHUB_TOKEN だけで足りる「クローンとテスト」ジョブと、OIDC やデプロイキーを使う「デプロイ」ジョブを分離してください。そうすれば盗まれたディスクイメージから得られるのは短命の文脈だけになります。移行ではワークフローの断片を 3〜5 か所触ることになりますが、多くの経路では PAT のローテーションは四半期から緊急時のみへ減ります。
監査ログを SIEM に流し、repo.* とランナー登録イベントでアラートを出してください。SIEM がなくても、直近1時間の API 変更を cron で引くだけでも、不正登録のおおよそ 80% は捕捉できます。
四半期の疑似漏えい机上訓練
訓練用チャンネルに合成トークンの断片を投稿し、15 分以内に誰かがマトリクスを適用できるか測ります。初回は組織レベルの資格情報を誰が失効できるか誰も知らずに失敗しがちです。本番で痛む前に役割を決めてください。意思決定の遅延と誤クリックを記録し、訓練頻度を下げる前に、連続して 10% 改善が2回出ることを条件にします。ステージングと本番のランナープール とセットにすると、本番はアラートが漏れてくるかどうかだけを観測できます。
8ステップの漏えい対応チェックリスト
ラック横やクラウドリージョンのランブックに、失効の所有者、ランナー一覧の正確な URL、エスカレーションの電話番号が載った1枚を印刷して置いてください。インシデント中は認知負荷が跳ね上がり、Notion で「前回どう失効したか」を探している 15 分が、クリーンな除去と攻撃者の居座りの分かれ目になります。
- セキュリティチケットを起票: 媒体(Slack/チケット/ログ)とおおよその露出時間を記録する。
- マトリクスの第1・第2アクションを実行: 優先順位の並列議論を避ける。
- 新規ランナー登録を凍結: 新しいトークンチェーンが揃うまで組織ポリシーを厳格化する。
- 疑わしいホストをドレイン: ドレイン SLO に従う。多くの場合 60〜90 分の自然待ち。
- クリーンなランナーを再登録: 新しいトークン、監査用ホスト名サフィックス
-rot-YYYYMMDD。 - 最小権限を検証: 読み取り専用クローンとノーオペビルドで、余計な書き込みスコープがないことを証明する。
- ポストモーテム: なぜチャットに資格情報が残ったか、どの自動化の穴が残ったかを文書化する。
- 72 時間以内の二次スキャン: OAuth アプリごとに残存 PAT 利用を狩る。
- クローズ: CMDB の指紋を更新し、明示的な検証とログレビューの後にのみ新資格情報でグリーンビルドが戻ったことを関係者に通知する。
ランナー用サービスアカウントと FileVault アンロック順序
専用 Mac ビルダーは管理者権限のないサービスアカウントで動かし、パスワードのローテーション方針は PAT と揃えます。対話型の管理者ログインは別ノートPC に置き、ランナープロファイルには置かない。管理者はブラウザセッションやスコープの広い PAT のエクスポートを残しがちです。macOS アップデート後は、FileVault がユーザーホームを完全にアンロックする前に LaunchAgent が読み込まれるか確認してください。順序が崩れると「トークンは有効だがランナーはオフライン」という GitHub ではなく launchd を追うべき症状で時間を浪費します。
誰がチャットに登録トークンを貼ってよいか(理想は誰も不可)を文書化してください。マーケがスクリーンショットをどうしても必要とする場合はマスキングし、撮影後すぐトークンをローテーションします。検索可能なアーカイブにトークンが載る頻度を測り、その指標が下がる方が、誰も読まないパスワード複雑性ルールを数えるより良い KPI です。
クラウド Mac プロバイダーの境界
ベンダーはベアメタルとネットワーク境界を隔離しますが、GitHub の PAT を失効させることはできません。調達文書ではトークンローテーションをアプリケーション責務として明記してください。リージョン別の料金 でキャパシティをバーストするときも、一時的にスコープを広げて「速く動く」ための運用は避け、同じ最小権限 PAT を維持してください。
Mac mini M4 の Apple Silicon ホストなら、マシン単位のランナー身元とディスク隔離が現実的になり、ユニファイドメモリにより、同時のシークレット解析とコンパイルで疑わしいスワップも減ります。NodeMac は香港・日本・韓国・シンガポール・米国で SSH と VNC を提供するため、失効後にクリーンなノードをすばやく立ち上げられます。従量のレンタルはハードのリードタイムを資格情報ローテーションの速度と揃え、ノードをキャトルとして扱うときの MTTR を両方が決めます。