DevOps チームは CodePipeline でアプリケーションをデプロイしており、本番データベースの接続情報を 30 日ごとに自動ローテーションさせる必要があります。ローテーション後もアプリケーションがダウンタイムなしに新しい認証情報を使用できることが要件です。最もセキュアで運用効率の高いアプローチはどれですか?
AWS Secrets ManagerはRDS・Redshift・DocumentDBなどの主要データベース向け組み込み自動ローテーション機能を提供します。ローテーション中はAWSPENDINGとAWSCURRENTの2バージョンが共存する期間を設けることでゼロダウンタイムローテーションを実現します。 選択肢Aの「認証情報を SSM Parameter Store」はSSM Parameter Storeは自動ローテーション機能を持たないためLambdaでの手動更新が必要となり運用負荷が発生します。またアプリケーションが起動時にキャッシュした認証情報はローテーション後に古くなり接続エラーが発生する可能性があります。 選択肢Cの「認証情報を CodePipeline の環境変数」はCodePipelineの環境変数への認証情報設定は機密情報管理として不適切であり、30日ごとの手動更新・再デプロイは運用負荷が高くなります。 選択肢Dの「認証情報を S3 バケット内」はS3バケット内ファイルへの保存は機密情報管理として不適切であり、CodeBuildのビルド時取得で認証情報が環境変数に展開されるセキュリティリスクがあります。