AWS マネージドキーを使用する CodeBuild プロジェクト

CodeBuild のビルド成果物に必要なキーポリシーに応じて、AWS マネージドキーまたはカスタマー管理キーを選択してください。

説明

CodeBuild の encryption_key は、ビルド出力成果物を暗号化するキーを指定します。既定では Amazon S3 用の AWS マネージド KMS キーを使用します。AWS マネージドキーであることだけで、成果物が平文である、または暗号化が弱いとはいえません。

AWS マネージドキーのキーポリシーは直接変更できません。成果物のキーポリシーやライフサイクルを組織が直接管理する必要がある場合は、カスタマー管理キーを選択してください。この設定だけで、キャッシュ、ログ、環境変数などのすべてのビルドデータを一括して保護するわけではありません。

想定される影響

カスタマー管理キーを要求する成果物の保護基準を満たせない場合があります。過剰な成果物読み取り権限は別途制限する必要があり、キー権限が不適切だと成果物のアップロードや読み取りが失敗する可能性があります。

対処方法

  • 必要に応じて、encryption_key に実際のカスタマー管理 KMS キーの ARN またはエイリアスを指定してください。
  • CodeBuild のサービスロールに必要なキー権限を付与し、成果物を読み取るプリンシパルの S3・KMS 権限を最小限にしてください。
  • 成果物の設定と実際の暗号化状態、ビルド・ダウンロードの動作を確認してください。キャッシュやログの保存時の保護、シークレットの受け渡しは別途管理してください。

例

キーの選択とサービスロールだけを示す抜粋です。参照するキーとロールが存在する必要があり、ソース、ビルド環境、成果物の設定も別途必要です。

AWS マネージドキー

hcl
data "aws_kms_key" "by_alias" {
  key_id = "alias/aws/s3"
}

resource "aws_codebuild_project" "example" {
  name           = "project-cloudrail-test"
  service_role   = aws_iam_role.codebuild.arn
  encryption_key = data.aws_kms_key.by_alias.arn
}

Amazon S3 用の AWS マネージドキーを取得し、成果物の暗号化に使用します。

カスタマー管理キー

hcl
data "aws_kms_key" "by_alias" {
  key_id = "alias/myAlias"
}

resource "aws_codebuild_project" "example" {
  name           = "project-cloudrail-test"
  service_role   = aws_iam_role.codebuild2.arn
  encryption_key = data.aws_kms_key.by_alias.arn
}

実際のカスタマー管理キーのエイリアスと、必要な権限を持つサービスロールを使用してください。この例では別のロールを指定しているため、そのロールのキー使用権限と成果物へのアクセス権限も確認する必要があります。

参考資料