AI-200:Developing AI Cloud Solutions on Azure Azure ソリューションのセキュリティ保護・監視・トラブルシューティング 問2
Azure ソリューションのセキュリティ保護・監視・トラブルシューティング/Azure ソリューションのセキュリティ保護(Key Vault・App Configuration)Azure Key Vault に保存した外部 API のキーを、90日ごとにローテーションします。アプリは Key Vault の SDK で、シークレットを名前で指定して取得しています。ローテーションの運用として適切なものはどれですか。
当サイトのオリジナル問題(AI-200:Developing AI Cloud Solutions on Azureの出題範囲「Azure ソリューションのセキュリティ保護・監視・トラブルシューティング」に対応。実際の試験問題ではありません)
- A既存のシークレットを削除してから同じ名前で作り直すため、アプリの停止時間を見込んでおく
- B同じシークレット名で新しいバージョンを作成する。アプリがバージョンを指定せずに取得していれば、次回の取得から最新バージョンの値が使われる
- Cシークレットの値を更新すると古いバージョンは自動で完全に削除されるため、元の値には戻せない
- Dローテーションのたびに新しいシークレット名を作り、アプリのコードの参照先を書き換えて再デプロイする
正解:B
解説
Key Vault のシークレットにはバージョンがあり、同じ名前で値を設定すると新しいバージョンが作られます。バージョンを指定せずに取得すると最新バージョンの値が返るので、アプリを変更せずにローテーションできます。古いバージョンは残っているため、バージョンを指定すれば以前の値も取得できます。有効期限の接近を知らせる Event Grid のイベントを Azure Functions などで受け取り、ローテーションを自動化することもできます。なお、アプリが値をキャッシュしている場合は、定期的に取得し直す仕組みが必要です。
下線の用語は 用語集 で意味を確認できます。
選択肢ごとの解説
- A誤り。削除する必要はありません。同じ名前で新しいバージョンを作ればよく、アプリを止めずにローテーションできます。
- B正しい。バージョンを指定しない取得と新しいバージョンの作成を組み合わせると、アプリを変更せずにローテーションできます。
- C誤り。新しいバージョンを作っても、古いバージョンは自動では削除されません。必要ならバージョンを指定して取得できます。
- D誤り。シークレット名を毎回変えると、コードの変更と再デプロイが必要になります。バージョン管理の仕組みを使えば不要です。