설명
CodeBuild의 EncryptionKey는 출력 산출물 암호화에 사용할 KMS 키를 지정합니다. 생략하면 CodeBuild가 Amazon S3용 AWS 관리형 KMS 키를 사용하므로, 키를 명시하지 않았다는 이유만으로 산출물이 평문이라고 판단할 수는 없습니다.
고객 관리형 키를 요구하는 환경에서는 키 정책과 수명 주기를 직접 관리할 수 있도록 적절한 키를 지정해야 합니다. 이 설정이 캐시와 로그의 암호화까지 일괄 구성하지는 않습니다.
잠재적 영향
- 기본 키 사용이 조직의 고객 관리형 키 또는 권한 분리 요구사항에 맞지 않을 수 있습니다.
- 지정한 키의 권한이 부족하거나 키가 비활성화되면 산출물 저장·읽기가 실패할 수 있습니다.
해결 방법
- 고객 관리형 키가 필요한 경우
EncryptionKey에 승인된 키 ARN 또는 별칭을 지정하세요. - 서비스 역할과 산출물을 읽는 주체에 필요한 키·S3 권한을 부여하고 실제 빌드와 읽기를 확인하세요.
- 산출물 암호화 비활성화 여부와 캐시·로그 저장소의 암호화 설정도 별도로 점검하세요.
예시
S3 출력 산출물을 사용하는 프로젝트의 일부입니다. 버킷과 키 입력값, CodeBuildRole, 빌드 환경과 소스 설정은 별도로 준비하세요.
변경 전
yaml
Resources:
BuildProject:
Type: AWS::CodeBuild::Project
Properties:
Name: my-build
ServiceRole: !GetAtt CodeBuildRole.Arn
Artifacts:
Type: S3
Location: !Ref ArtifactBucketName
출력 산출물의 키를 생략해 기본 AWS 관리형 키를 사용합니다. 암호화가 없다는 뜻은 아니지만 고객 관리형 키 요구사항에는 맞지 않을 수 있습니다.
변경 후
yaml
Resources:
BuildProject:
Type: AWS::CodeBuild::Project
Properties:
Name: my-build
EncryptionKey: !Ref ArtifactKeyArn
ServiceRole: !GetAtt CodeBuildRole.Arn
Artifacts:
Type: S3
Location: !Ref ArtifactBucketName
산출물에 사용할 키를 명시합니다. 키를 지정하는 것과 실제로 사용할 수 있는 권한을 마련하는 것은 별도 작업입니다.