설명
DynamoDB의 기본 AWS 소유 키는 저장 데이터를 암호화합니다. 고객이 그 키의 정책이나 수명 주기를 직접 관리하지 않는다는 뜻이며, 데이터가 비암호화 상태라는 뜻은 아닙니다.
조직이 계정 내 키 사용 추적을 요구하면 AWS 관리형 키를, 직접 키 정책과 수명 주기를 통제해야 한다면 고객 관리형 키를 검토하세요. AWS 관리형 키도 고객이 키 정책을 자유롭게 편집하는 키는 아닙니다.
잠재적 영향
- AWS 소유 키가 조직의 키 통제·감사 요건을 충족하지 못할 수 있습니다.
- 고객 관리형 키를 선택한 뒤 권한이나 삭제 일정을 잘못 관리하면 테이블과 관련 백업에 접근하지 못할 수 있습니다.
해결 방법
- 필요한 키 통제 수준과 실제 키 유형을 확인하세요. 허용된 AWS 소유 키를 무조건 교체할 필요는 없습니다.
- 고객 관리형 키가 필요하면
SSEEnabled: true,SSEType: KMS와 승인된KMSMasterKeyId를 지정하고 키 정책·권한·회전을 검토하세요. - 키 변경 후 데이터 접근을 시험하고 이전 키가 필요한 백업도 확인하세요. 저장 암호화와 별개로 테이블 권한은 최소화해야 합니다.
예시
같은 테이블의 키 선택을 비교합니다. 기존 리소스를 관리할 때는 변경 세트와 실제 키 정책, 필요한 백업의 복구 조건을 확인하세요.
AWS 소유 키
yaml
AWSTemplateFormatVersion: "2010-09-09"
Description: Sample CloudFormation template for DynamoDB with AWS-Owned CMK
Resources:
DynamoDBOnDemandTable2:
Type: AWS::DynamoDB::Table
Properties:
TableName: dynamodb-kms-0
AttributeDefinitions:
- AttributeName: pk
AttributeType: S
KeySchema:
- AttributeName: pk
KeyType: HASH
BillingMode: PAY_PER_REQUEST
SSESpecification:
SSEEnabled: false
저장 데이터는 AWS 소유 키로 암호화됩니다. 고객이 직접 관리하는 키 정책은 없습니다.
고객 관리형 키
yaml
AWSTemplateFormatVersion: "2010-09-09"
Description: Sample CloudFormation template for DynamoDB with customer managed CMK
Resources:
dynamodbKMSKey:
Type: AWS::KMS::Key
Properties:
Description: An example CMK
DynamoDBOnDemandTable2:
Type: AWS::DynamoDB::Table
Properties:
TableName: dynamodb-kms-0
AttributeDefinitions:
- AttributeName: pk
AttributeType: S
KeySchema:
- AttributeName: pk
KeyType: HASH
BillingMode: PAY_PER_REQUEST
SSESpecification:
KMSMasterKeyId: !Ref dynamodbKMSKey
SSEEnabled: true
SSEType: KMS
별도 KMS 키를 생성해 테이블에 연결합니다. 생략된 키 정책에는 기본 정책이 적용되므로 배포 주체와 테이블 사용에 필요한 권한을 검토하세요. 사용 중이거나 백업 복원에 필요한 키를 삭제하지 마세요.