설명
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
}
실제 고객 관리형 키 별칭과 권한이 준비된 서비스 역할을 사용하세요. 다른 역할을 지정했으므로 해당 역할의 키 사용과 결과물 접근 권한도 확인해야 합니다.