DVA-C02デプロイMEDIUM単一選択

あるチームがAWS CodeBuildのbuildspec.ymlを作成している。ビルドステージで環境変数として使うデータベースのパスワードを安全に管理したい。buildspec.ymlにパスワードを直接記載せず、かつCodeBuildの実行時に自動的に値を取得させる最も適切な方法はどれか。

  1. A. AWS Secrets ManagerまたはAWS Systems Manager Parameter StoreにパスワードをSecureStringとして保存し、buildspec.ymlのenv/secretsまたはenv/parameter-storeセクションで参照する
  2. B. S3バケットにパスワードを格納した設定ファイルを配置し、buildフェーズで aws s3 cp コマンドを使ってダウンロードする
  3. C. buildspec.ymlのenvironmentセクションにpassword変数を定義し、GitリポジトリのREADMEには記載しないようにする
  4. D. CodeBuildプロジェクトの環境変数設定でパスワードを平文で設定し、buildspec.ymlからはその変数名で参照する
解答と解説を見る

正解: A

AWS Secrets ManagerまたはSSM Parameter StoreのSecureStringにシークレットを格納し、buildspec.ymlのenv/secretsセクション(Secrets Manager用)またはenv/parameter-storeセクション(Parameter Store用)で参照することで、パスワードをコードに一切含めずに安全に取得できる。CodeBuildのサービスロールに適切なIAMポリシーを付与するだけで実現可能である。Cはbuildspec.ymlに直接値を書く方法であり、GitリポジトリにコミットされるとパスワードがGitの履歴に残る危険がある。Dはコンソールで平文設定するためAWSコンソールやAPIの権限があれば閲覧可能となり、Secrets Managerより保護レベルが低い。BはS3バケットへのアクセス管理が必要になり、パスワードが設定ファイルに平文で存在するリスクもある。

▸ この試験を本気で演習する(全150問・無料)