過去問ドリル

AZ-305:Designing Microsoft Azure Infrastructure Solutions ID・ガバナンス・監視ソリューションの設計 問10

ID・ガバナンス・監視ソリューションの設計/認証と認可ソリューションの設計

ある企業は、GitHub のリポジトリから GitHub ホステッド ランナーで実行する GitHub Actions のワークフローで、特定のリソース グループに Bicep をデプロイします。要件は、GitHub 側に Azure の資格情報(シークレットや証明書)を保存しないこと、資格情報の有効期限切れによるパイプライン停止の運用を発生させないこと、本番へのデプロイを GitHub の特定の環境(Production)で実行されたワークフローに限定すること、権限は対象のリソース グループに必要最小限とすることです。認証と認可の設計として最適なものはどれですか。

当サイトのオリジナル問題(AZ-305:Designing Microsoft Azure Infrastructure Solutionsの出題範囲「ID・ガバナンス・監視ソリューションの設計」に対応。実際の試験問題ではありません)

正解:C

解説

Azure の外で動く GitHub Actions などのワークロードが、シークレットなしで Azure に認証するには、ワークロード ID フェデレーションを使います。ユーザー割り当てマネージド ID(またはアプリ登録)にフェデレーション ID 資格情報を構成し、GitHub が発行する OIDC トークンの発行者とサブジェクト(リポジトリや環境など)を信頼する条件を指定すると、条件に合うワークフローだけが短期のトークンで認証できます。保存する資格情報がないため有効期限切れや漏えいの問題がなく、サブジェクトを Production 環境に絞ることで要件も満たせます。認可は、対象のリソース グループに必要最小限のロールだけを割り当てます。

選択肢ごとの解説

  • A誤り。クライアント シークレットは GitHub 側に保存する資格情報であり、有効期限の管理と更新が必要になります。サブスクリプション全体への共同作成者ロールは最小権限にも反します。
  • B誤り。証明書も GitHub 側に保存する資格情報で、有効期限の管理と更新が必要です。環境の承認者を設定しても、保存した資格情報を持つ点は変わらず、要件に反します。
  • C正しい。フェデレーション ID 資格情報により、GitHub のトークンを信頼して資格情報を保存せずに認証でき、サブジェクトで Production 環境に限定し、リソース グループ スコープの最小権限で割り当てられます。
  • D誤り。仮想マシンのシステム割り当てマネージド ID では、その仮想マシンで動くすべてのワークフローが同じ権限を得てしまい、Production 環境で実行されたワークフローだけに限定できません。セルフホステッド ランナーの構築・運用や保守負担も増え、GitHub ホステッド ランナーで実行する前提からも外れます。
AZ-305:Designing Microsoft Azure Infrastructure Solutionsの問題を演習モードで解く