変更要約: AZ-400 第3章を深掘り(比較表・シナリオ・FAQ・ひっかけ・深掘り段落を各節に追加、図を日本語版に対応)
3.3IaC・依存関係・シークレットの管理
パイプラインの周辺——IaC(ARM/Bicep/Terraform)、パッケージ管理(Azure Artifacts)、サービス接続、シークレット(Key Vault/変数グループ)、自己ホストランナー——を理解します。再現可能で安全な配信を実現します。
パイプラインはインフラ・依存・機密も扱います。IaC で環境を再現可能にし、シークレットは安全に注入します。
3.3.1IaC・依存・シークレット
- IaC:ARM/Bicep(Azure ネイティブ)/Terraform(マルチクラウド)で環境を再現可能に。
- Azure Artifacts:依存パッケージ(npm/NuGet/Maven/Python)をフィードで一元管理(上流ソース対応)。
- サービス接続:外部リソースへの接続。ワークロード ID フェデレーションでシークレットレス化が望ましい。
- シークレット:Key Vault や変数グループ(シークレット変数)から実行時に安全注入。ログに出さない。
「Azure ネイティブ IaC=ARM/Bicep、マルチクラウド=Terraform」「依存パッケージの一元管理=Azure Artifacts」「外部接続=サービス接続(できれば ID フェデレーションでキーレス)」「機密注入=Key Vault/変数グループ(シークレット変数)」 は AZ-400 で頻出です。シークレットはログに出さず、可能ならキーレス(フェデレーション/マネージド ID)にします。
AZ-400 のパイプライン周辺は「再現可能なインフラ・健全な依存・安全な機密」を問います。IaC は環境をコード化して再現性を担保し、ARM テンプレート/Bicep(Azure ネイティブ・宣言的、Bicep は ARM をより簡潔にした DSL)と Terraform(マルチクラウド・state 管理)を要件で選びます。パイプラインから IaC を適用し、what-if/plan で差分をプレビューしてから適用するのが安全です。依存パッケージは Azure Artifacts のフィードで一元管理し、上流ソース(npm/NuGet/PyPI/Maven 公開リポジトリ)をプロキシ・キャッシュ、社内/公開を 1 エンドポイントに統合します。サービス接続は外部リソース(Azure サブスクリプション、レジストリ、Kubernetes 等)への認可で、可能ならワークロード ID フェデレーション(OIDC)でシークレットを保持しないキーレス接続にします(マネージド ID も同様の発想)。シークレットは Azure Key Vault(パイプラインから Key Vault タスク/変数で参照)や変数グループのシークレット変数で実行時に注入し、issecret=true でログにマスク、ハードコードしません。さらに承認/チェックをサービス接続や環境に付けて、本番リソースへのアクセスを保護します。設計の要は、IaC で再現性、Artifacts で依存の一元化、キーレス接続と Key Vault で機密を安全に、を組み合わせることです。
| 対象 | 手段 | 要点 |
|---|---|---|
| インフラの再現性 | ARM/Bicep / Terraform | Azure ネイティブ / マルチクラウド・差分プレビュー |
| 依存パッケージ | Azure Artifacts(フィード) | 上流プロキシ・社内/公開を統合 |
| 外部リソース接続 | サービス接続 | ワークロード ID フェデレーションでキーレス |
| 機密の注入 | Key Vault / 変数グループ | 実行時注入・ログにマスク・直書き禁止 |
シナリオ:パイプラインから本番 Azure サブスクリプションへインフラをデプロイするが、サービスプリンシパルのシークレットを保持・ローテーションする運用を避けたい。→ サービス接続をワークロード ID フェデレーション(OIDC)で構成し、シークレットなしで Azure に認可(キーレス)。インフラは Bicep でコード化し、what-if で差分を確認後に適用。アプリの機密は Key Vault から参照し、本番のサービス接続/環境には承認チェックを付けて保護します。
FAQ:ARM/Bicep と Terraform はどちらを選ぶ? Azure だけを宣言的に管理し、Azure の新機能へ即追従したいなら Bicep(ARM をより簡潔に書ける Azure ネイティブ)。複数クラウド/プロバイダーを横断して同じツール・state 管理で扱いたいなら Terraform。どちらもパイプラインから適用でき、適用前の差分プレビュー(Bicep の what-if、Terraform の plan)で安全性を高めます。
ひっかけ:サービス接続にサービスプリンシパルのシークレットを保存して使い続けるのは、ローテーション負担と漏洩リスクの点で望ましくありません。可能ならワークロード ID フェデレーション(OIDC)でキーレスにします。また機密を YAML やパイプライン変数に平文で置く/ログ出力するのは厳禁で、Key Vault/シークレット変数から注入し issecret でマスクします。
3.3.2この節のまとめ
- 再現性=IaC(ARM/Bicep/Terraform)/依存=Azure Artifacts
- 接続=サービス接続(キーレス推奨)/機密=Key Vault/変数グループ
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. パイプラインから機密(接続文字列やキー)を、ログに出さず安全に参照したい。何を使いますか?
Q2. 複数チームで共有する依存パッケージ(npm/NuGet 等)を一元管理し、上流も統合したい。何を使いますか?
Q3. パイプラインから Azure リソースへ、サービスプリンシパルのシークレットを保持せずに接続したい。最適なのは?

