DynamoDB 테이블 암호화 키 설정 점검

DynamoDB의 기본 암호화와 필요한 KMS 키 관리 방식을 확인하세요.

설명

DynamoDB에는 애플리케이션 상태, 사용자 데이터와 세션 정보가 저장될 수 있습니다. DynamoDB 테이블은 항상 저장 시 암호화되며 기본적으로 AWS 소유 키를 사용합니다.

Terraform에서 server_side_encryption.enabled = false는 암호화를 끄는 설정이 아니라 AWS 소유 키를 선택합니다. true이면서 kms_key_arn이 없으면 AWS 관리형 키를 사용하고, 고객 관리형 키는 ARN으로 별도 지정합니다.

잠재적 영향

기본 키가 조직의 키 정책이나 수명주기 통제 요구를 충족하지 못할 수 있습니다. 필요한 키 권한을 잃으면 데이터 접근이나 복구에 영향을 줄 수 있습니다. 암호화가 테이블과 스트림의 접근 권한을 대신하지는 않습니다.

해결 방법

  • 요구사항에 따라 AWS 소유 키, AWS 관리형 키 또는 고객 관리형 키를 선택하세요.
  • 별도 고객 관리형 키가 필요하면 enabled = true와 실제 kms_key_arn을 지정하고 필요한 권한을 유지하세요.
  • 적용 후 실제 사용 키와 정상적인 데이터 접근을 확인하세요. 기존 백업 복구에 필요한 키도 사용할 수 있게 유지하세요.

예시

두 예시는 모두 암호화된 테이블을 생성하며 사용하는 키 관리 방식이 다릅니다.

AWS 소유 키 사용

hcl
resource "aws_dynamodb_table" "orders_table" {
  name             = "example"
  hash_key         = "TestTableHashKey"
  billing_mode     = "PAY_PER_REQUEST"
  stream_enabled   = true
  stream_view_type = "NEW_AND_OLD_IMAGES"

  attribute {
    name = "TestTableHashKey"
    type = "S"
  }

  server_side_encryption {
    enabled = false
  }
}

AWS 소유 키로 암호화합니다.

AWS 관리형 키 사용

hcl
resource "aws_dynamodb_table" "orders_table" {
  name             = "example"
  hash_key         = "TestTableHashKey"
  billing_mode     = "PAY_PER_REQUEST"
  stream_enabled   = true
  stream_view_type = "NEW_AND_OLD_IMAGES"

  attribute {
    name = "TestTableHashKey"
    type = "S"
  }

  server_side_encryption {
    enabled = true
  }
}

기본 AWS 관리형 KMS 키를 선택합니다. 조직이 키 정책을 직접 관리해야 한다면 고객 관리형 키 ARN도 지정하세요.

참조