테이블 버킷에서 AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS)

테이블 버킷에서 AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS) (Using SSE-KMS in table buckets)

테이블 버킷에는 Amazon S3 관리형 키(SSE-S3)를 사용한 서버 측 암호화로 테이블을 자동으로 암호화하는 기본 암호화 구성이 있어요. 이 암호화는 S3 테이블 버킷의 모든 테이블에 적용되며 비용이 들지 않아요.

출처: 문서

본문

키 순환과 접근 정책 권한 부여를 관리하는 것처럼 암호화 키에 대해 더 많은 제어가 필요하다면 테이블 버킷이 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)를 사용하도록 구성할 수 있어요. AWS KMS의 보안 제어는 암호화 관련 규정 준수 요구 사항을 충족하는 데 도움이 될 수 있어요. SSE-KMS에 대한 자세한 내용은 "Using server-side encryption with AWS KMS keys (SSE-KMS)" 문서를 참고하세요.

테이블과 테이블 버킷에서 SSE-KMS는 어떻게 동작하나요

테이블 버킷의 SSE-KMS는 일반 용도 버킷의 SSE-KMS와 다음 방식으로 달라요.

  • 테이블 버킷과 개별 테이블 모두에 대해 암호화 설정을 지정할 수 있어요.
  • SSE-KMS에는 고객 관리형 키만 사용할 수 있어요. AWS 관리형 키는 지원되지 않아요.
  • 특정 역할과 AWS 서비스 주체가 AWS KMS 키에 접근할 수 있도록 권한을 부여해야 해요. 자세한 내용은 "Permission requirements for S3 Tables SSE-KMS encryption" 문서를 참고하세요. 여기에는 다음에 대한 접근 부여가 포함돼요.
    • S3 유지 관리 주체 – 암호화된 테이블에서 테이블 유지 관리를 수행하는 역할
    • S3 Tables 통합 역할 – AWS 분석 서비스에서 암호화된 테이블로 작업하는 역할
    • 클라이언트 접근 역할 – Apache Iceberg 클라이언트에서 암호화된 테이블에 직접 접근하는 역할
    • S3 메타데이터 주체 – 암호화된 S3 메타데이터 테이블을 업데이트하는 역할
  • 암호화된 테이블은 테이블 수준 키를 사용해 AWS KMS에 보내는 요청 수를 최소화하므로 SSE-KMS로 암호화된 테이블 작업을 더 비용 효율적으로 만들어요.

테이블 버킷의 SSE-KMS 암호화

테이블 버킷을 만들 때 기본 암호화 유형으로 SSE-KMS를 선택하고 암호화에 사용할 특정 KMS 키를 선택할 수 있어요. 해당 버킷 안에서 만든 테이블은 테이블 버킷에서 이런 암호화 설정을 자동으로 상속해요. 테이블 버킷의 기본 암호화 설정은 AWS CLI, S3 API, AWS SDK로 언제든 수정하거나 제거할 수 있어요. 테이블 버킷의 암호화 설정을 수정하면 그 설정은 해당 버킷에서 새로 만드는 테이블에만 적용돼요. 기존 테이블의 암호화 설정은 바뀌지 않아요. 자세한 내용은 "Specifying encryption for table buckets" 문서를 참고하세요.

테이블의 SSE-KMS 암호화

버킷의 기본 암호화 구성과 관계없이 개별 테이블을 다른 KMS 키로 암호화하는 옵션도 있어요. 개별 테이블의 암호화를 설정하려면 테이블을 만들 때 원하는 암호화 키를 지정해야 해요. 기존 테이블의 암호화를 바꾸려면 원하는 키로 새 테이블을 만들고 기존 테이블의 데이터를 새 테이블로 복사해야 해요. 자세한 내용은 "Specifying encryption for tables" 문서를 참고하세요.

AWS KMS 암호화를 사용할 때 S3 Tables는 각 테이블과 관련된 새 객체를 암호화하는 고유한 테이블 수준 데이터 키를 자동으로 만들어요. 이 키는 제한된 기간 동안 사용되어 암호화 작업 중 추가 AWS KMS 요청의 필요를 최소화하고 암호화 비용을 줄여요. 이는 SSE-KMS의 S3 Bucket Keys와 유사해요.

테이블과 테이블 버킷의 SSE-KMS 암호화 모니터링 및 감사

SSE-KMS로 암호화된 데이터에 대한 AWS KMS 키 사용을 감사하려면 AWS CloudTrail 로그를 사용할 수 있어요. GenerateDataKey, Decrypt 같은 암호화 작업에 대한 인사이트를 얻을 수 있어요. CloudTrail은 이벤트 이름, 사용자 이름, 이벤트 소스 등 검색을 필터링할 수 있는 많은 속성 값을 지원해요.

Amazon S3 테이블과 테이블 버킷에 대한 암호화 구성 요청은 CloudTrail Events로 추적할 수 있어요. CloudTrail 로그에는 다음 API 이벤트 이름이 사용돼요.

  • s3tables:PutTableBucketEncryption
  • s3tables:GetTableBucketEncryption
  • s3tables:DeleteTableBucketEncryption
  • s3tables:GetTableEncryption
  • s3tables:CreateTable
  • s3tables:CreateTableBucket

참고: 테이블 버킷에는 EventBridge가 지원되지 않아요.

더 알아보기 (Learn more)

  • 암호화 (Encryption)
  • SSE-KMS 적용하기 (Enforcing SSE-KMS)