테이블 버킷에서 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:CreateTables3tables: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
}
]
}
}
}'