変更要約: AZ-400 第4章を深掘り(比較表・シナリオ・FAQ・ひっかけ・深掘り段落を各節に追加、図を日本語版に対応)
4.2シークレットと資格情報の管理
機密の安全な扱い——Key Vault、変数グループ/シークレット変数、マネージド ID/ワークロード ID フェデレーション、シークレットスキャン、最小権限——を理解します。資格情報の漏洩を防ぎます。
最大のリスクは資格情報の漏洩です。機密は Key Vault に集約し、可能ならキーレス(フェデレーション/マネージド ID)にします。
4.2.1シークレット管理
- Key Vault:機密を集約し、変数グループ連携でパイプラインへ安全に渡す。
- シークレット変数:実行時にのみ注入し、ログに出さない(マスクされる)。
- キーレス:ワークロード ID フェデレーション/マネージド ID で長期キーを排除。
- シークレットスキャン:コミットへの機密混入を検出(プッシュ保護で push を阻止)。最小権限も徹底。
「機密の集約=Key Vault」「実行時のみ注入=シークレット変数(ログ非表示)」「キーレス=ワークロード ID フェデレーション/マネージド ID」「混入検出=シークレットスキャン/プッシュ保護」 は AZ-400 で頻出です。漏洩した資格情報は履歴削除だけでなく必ずローテーションします。
AZ-400 のシークレット管理は「資格情報を持たない・漏らさない・漏れたら即無効化する」設計を問います。機密は Azure Key Vault に集約し、パイプラインからは Key Vault 連携の変数グループや Key Vault タスクで実行時にのみ取得、シークレット変数は issecret=true でログにマスクされ平文表示されません。理想はそもそもキーを持たない(キーレス)ことで、Azure リソースへの認可はアプリ/サービスはマネージド ID、外部 CI(GitHub Actions/Azure Pipelines のサービス接続)はワークロード ID フェデレーション(OIDC)で短命トークンを取得し、長期のクライアントシークレットや PAT を排除します。コミットへの混入は シークレットスキャン+プッシュ保護で検出/阻止し、PAT/SAS/サービスプリンシパルには有効期限と最小スコープを設定、Key Vault キーはローテーションします。万一資格情報が漏洩した場合の鉄則は、履歴からの削除だけでは不十分で、必ずローテーション(無効化&再発行)——push やログに出た時点で漏洩済みだからです。権限は最小権限(必要なスコープ/期間のみ)を徹底します。設計の要は、Key Vault 集約・実行時注入・キーレス(フェデレーション/マネージド ID)・スキャンによる混入防止・漏洩時のローテーションを組み合わせ、資格情報リスクを最小化することです。
| 課題 | 対策 | 要点 |
|---|---|---|
| 機密の保管/受け渡し | Key Vault + 変数グループ連携 | 実行時のみ注入・ログでマスク |
| 長期キーの排除 | マネージド ID / ワークロード ID フェデレーション | キーレス・短命トークン |
| コミットへの混入 | シークレットスキャン+プッシュ保護 | 検出で push を阻止 |
| 漏洩後の対応 | ローテーション(必須) | 履歴削除だけでは不十分 |
シナリオ:Azure Pipelines から本番 Azure と外部 API に接続するが、長期のシークレットや PAT を保持・ローテーションする運用を無くしたい。→ Azure への接続はサービス接続をワークロード ID フェデレーション(OIDC)にしてキーレス化、アプリ実行時の Azure リソースアクセスはマネージド ID。どうしても必要な外部 API キーは Key Vault に置き、変数グループ連携で実行時のみ注入(ログはマスク)。コミットへの混入はシークレットスキャンのプッシュ保護で阻止します。
FAQ:マネージド ID とワークロード ID フェデレーションはどう使い分ける? マネージド ID は Azure 上で動くワークロード(VM/App Service/関数等)が Azure リソースへキーレスでアクセスする仕組み。ワークロード ID フェデレーション(OIDC)は Azure 外(GitHub Actions、他クラウド、Kubernetes など)の ID を信頼し、シークレットなしで Azure のロールを引き受けさせる仕組みです。どちらも長期キーを排除する「キーレス」の手段です。
ひっかけ:漏洩した資格情報を「履歴から消せば安全」とするのは誤り——push/ログに出た時点で漏洩済みなので必ずローテーションします。また「キーレスにできる」のに長期のサービスプリンシパルシークレットや PAT を変数に保存し続けるのは避け、マネージド ID/ワークロード ID フェデレーションを選びます。機密の平文ログ出力も厳禁(シークレット変数で自動マスク)。
4.2.2この節のまとめ
- 機密=Key Vault+シークレット変数(ログ非表示)
- キーレス=フェデレーション/マネージド ID/検出=シークレットスキャン
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. パイプラインの機密を一元的に保管し、変数グループ経由で安全に参照させたい。何を使いますか?
Q2. 長期のサービスプリンシパルシークレットを保持せずに、パイプラインから Azure へ認証したい。何を使いますか?
Q3. シークレット変数の値が誤ってビルドログに出力されないようにしたい。どう扱われますか?

