테이블 버킷에서 AWS KMS 키로 SSE 지정하기

테이블 버킷에서 AWS KMS 키로 SSE 지정하기 (SSE-KMS)

테이블 버킷과 테이블의 서버 측 암호화로 AWS KMS 키(SSE-KMS)를 지정하는 방법을 설명해요.

출처: Specifying server-side encryption with AWS KMS keys (SSE-KMS) in table buckets

본문

모든 Amazon S3 테이블 버킷에는 기본적으로 암호화가 구성되어 있고, 테이블 버킷에서 새로 만든 모든 테이블은 자동으로 저장 시(at rest) 암호화돼요. Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)가 모든 테이블 버킷의 기본 암호화 구성이에요. 다른 암호화 유형을 지정하고 싶다면, AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)를 사용할 수 있어요.

SSE-KMS 암호화는 CreateTableBucket 또는 CreateTable 요청에서 지정할 수 있고, PutTableBucketEncryption 요청으로 테이블 버킷의 기본 암호화 구성을 설정할 수도 있어요.

SSE-KMS로 암호화된 테이블과 테이블 버킷에 자동 유지보수가 수행되도록 하려면, maintenance.s3tables.amazonaws.com 서비스 프린시펄에게 여러분의 KMS 키 사용 권한을 부여해야 해요. 자세한 내용은 S3 Tables SSE-KMS 암호화 권한 요구 사항을 참고해 주세요.

테이블 버킷 암호화 지정하기 (Specifying encryption for table buckets)

새 테이블 버킷을 만들 때 기본 암호화 유형으로 SSE-KMS를 지정할 수 있어요. 예시는 Creating a table bucket을 참고해 주세요. 테이블 버킷을 만든 뒤에는 REST API 작업, AWS SDK, AWS Command Line Interface(AWS CLI)로 SSE-KMS를 기본 암호화 설정으로 지정할 수 있어요.

SSE-KMS를 기본 암호화 유형으로 지정하면, 암호화에 사용하는 키가 S3 Tables 유지보수 서비스 프린시펄에 대한 접근을 허용해야 해요. 유지보수 서비스 프린시펄이 접근 권한이 없으면 그 테이블 버킷에 테이블을 만들 수 없어요. 자세한 내용은 S3 Tables 유지보수 서비스 프린시펄에 KMS 키 권한 부여하기를 참고해 주세요.

다음 예시 AWS CLI 명령을 사용하려면 사용자 입력 플레이스홀더를 여러분의 정보로 바꿔 넣으세요.

aws s3tables put-table-bucket-encryption \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
    --encryption-configuration '{"sseAlgorithm": "aws:kms", "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"}' \
    --region us-east-1

DeleteTableBucketEncryption API 작업으로 테이블 버킷의 기본 암호화 설정을 제거할 수 있어요. 암호화 설정을 제거하면 테이블 버킷에서 새로 만드는 테이블은 기본 SSE-S3 암호화를 사용해요.

테이블 암호화 지정하기 (Specifying encryption for tables)

쿼리 엔진, REST API 작업, AWS SDK, AWS Command Line Interface(AWS CLI)를 사용해 새 테이블을 만들 때 SSE-KMS 암호화를 적용할 수 있어요. 테이블을 만들 때 지정한 암호화 설정은 테이블 버킷의 기본 암호화 설정보다 우선해요.

테이블에 SSE-KMS 암호화를 사용할 때, 암호화에 사용하는 키는 S3 Tables 유지보수 서비스 프린시펄이 접근할 수 있어야 해요. 유지보수 서비스 프린시펄이 접근 권한이 없으면 테이블을 만들 수 없어요. 자세한 내용은 S3 Tables 유지보수 서비스 프린시펄에 KMS 키 권한 부여하기를 참고해 주세요.

암호화된 테이블을 만들려면 다음 권한이 필요해요.

  • s3tables:CreateTable
  • s3tables:PutTableEncryption

다음 AWS CLI 예시는 기본 스키마를 가진 새 테이블을 만들고, 이를 고객 관리형 AWS KMS 키로 암호화해요. 명령을 사용하려면 사용자 입력 플레이스홀더를 여러분의 정보로 바꿔 넣으세요.

aws s3tables create-table \
  --table-bucket-arn "arn:aws:s3tables:Region:ownerAccountId:bucket/amzn-s3-demo-table-bucket" \
  --namespace "mydataset" \
  --name "orders" \
  --format "ICEBERG" \
  --encryption-configuration '{
    "sseAlgorithm": "aws:kms",
    "kmsKeyArn": "arn:aws:kms:Region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
  }' \
  --metadata '{
    "iceberg": {
      "schema": {
        "fields": [
          {
            "name": "order_id",
            "type": "string",
            "required": true
          },
          {
            "name": "order_date",
            "type": "timestamp",
            "required": true
          },
          {
            "name": "total_amount",
            "type": "decimal(10,2)",
            "required": true
          }
        ]
      }
    }
  }'

더 알아보기 (Learn more)