AI-200:Developing AI Cloud Solutions on Azure Azure でのコンテナー化されたソリューションの開発 問3
Azure でのコンテナー化されたソリューションの開発/コンテナー アプリケーション ホスティングの実装(Container Registry・App Service)コンテナー化した Web API を Azure App Service にデプロイします。API は環境変数 DB_PASSWORD からデータベースのパスワードを読み取ります。パスワードはイメージに含めず、Azure Key Vault で一元管理したいと考えています。適切な構成はどれですか。
当サイトのオリジナル問題(AI-200:Developing AI Cloud Solutions on Azureの出題範囲「Azure でのコンテナー化されたソリューションの開発」に対応。実際の試験問題ではありません)
- ADockerfile の ENV 命令に DB_PASSWORD を書いてイメージをビルドし、Azure Container Registry にプッシュする
- Bパスワードを、コンテナーの起動コマンドの引数として平文で渡す
- CKey Vault のアクセス キーを App Service の接続文字列に保存し、コンテナー内でパスワードを毎回ダウンロードさせる
- DApp Service のアプリ設定に DB_PASSWORD を作って値を Key Vault 参照にし、App Service のマネージド ID に Key Vault のシークレットを読み取る権限を付与する
正解:D
解説
App Service のアプリ設定は、コンテナーに環境変数として渡されます。アプリ設定の値を Key Vault 参照にすると、App Service が自身のマネージド ID を使って Key Vault からシークレットを取得します。このため、パスワードをイメージや設定に直接書かずに済みます。マネージド ID には、Key Vault のシークレットを読み取る権限を付与しておく必要があります。
下線の用語は 用語集 で意味を確認できます。
選択肢ごとの解説
- A誤り。ENV 命令で書いた値はイメージに含まれ、イメージを取得できる人なら誰でも読めてしまいます。イメージにパスワードを含めないという要件にも反します。
- B誤り。起動コマンドの引数に平文で渡すと、設定やログからパスワードが見えてしまいます。また、Key Vault での一元管理にもなりません。
- C誤り。Key Vault には、ストレージ アカウントのようなアクセス キーはありません。アクセスは Microsoft Entra ID の認証と、ロールやアクセス ポリシーで制御します。
- D正しい。アプリ設定の Key Vault 参照とマネージド ID を組み合わせると、コンテナーには環境変数として値が渡され、資格情報を保存する必要もありません。