설명
DynamoDB는 모든 사용자 데이터를 저장 시 암호화합니다. CloudFormation에서 SSEEnabled를 false로 지정하거나 생략하면 AWS 소유 키를 사용하며, 데이터가 평문으로 저장된다는 뜻은 아닙니다. true는 AWS 관리형 키를 선택하고, 별도의 KMSMasterKeyId를 지정하면 고객 관리형 키를 사용할 수 있습니다.
잠재적 영향
- 선택한 키 유형이 조직의 키 관리·감사 요건에 맞지 않을 수 있습니다.
- 필요한 KMS 권한을 없애거나 사용 중인 키를 비활성화하면 데이터 접근에 문제가 생길 수 있습니다. 저장 암호화는 허용된 사용자의 데이터 접근을 대신 제한하지 않습니다.
해결 방법
- 실제 테이블의 키 유형과 요구사항을 비교하세요. AWS 소유 키가 허용된다면 암호화를 추가로 켤 필요는 없습니다.
- AWS 관리형 키가 필요하면
SSESpecification.SSEEnabled: true를 지정하세요. 고객이 키 정책과 수명 주기를 관리해야 한다면 승인된KMSMasterKeyId도 지정하고 필요한 권한을 준비하세요. - 변경 후 키 상태와 읽기·쓰기를 검증하고 관련 백업을 복구하는 데 필요한 키를 유지하세요. 테이블 접근 권한과 네트워크 보호도 별도로 관리하세요.
예시
두 예시 모두 저장 암호화를 사용합니다. 테이블 이름은 환경에 맞게 정하고 필요한 키 관리 수준을 선택하세요.
AWS 소유 키
yaml
Resources:
MyDynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: my-table
AttributeDefinitions:
- AttributeName: id
AttributeType: N
KeySchema:
- AttributeName: id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
SSESpecification:
SSEEnabled: false
AWS 소유 키로 암호화합니다. 이 키 유형이 조직의 요구에 맞는지 확인하세요.
AWS 관리형 키
yaml
Resources:
MyDynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: my-table
AttributeDefinitions:
- AttributeName: id
AttributeType: N
KeySchema:
- AttributeName: id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
SSESpecification:
SSEEnabled: true
별도 키 ID를 지정하지 않아 기본 DynamoDB AWS 관리형 키를 사용합니다. 고객 관리형 키를 선택한 예시는 아니며 AWS KMS 요금이 적용됩니다.