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