새 객체에 대한 SSE-KMS와 함께 S3 Bucket Key를 사용하도록 버킷 구성하기
새 객체에 대한 SSE-KMS와 함께 S3 Bucket Key를 사용하도록 버킷 구성하기 (Configuring your bucket to use an S3 Bucket Key with SSE-KMS for new objects)
AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)를 구성할 때 버킷이 새 객체의 SSE-KMS에 S3 Bucket Key를 사용하도록 구성할 수 있어요.
출처: 문서
본문
AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)를 구성할 때 버킷이 새 객체의 SSE-KMS에 S3 Bucket Key를 사용하도록 구성할 수 있어요. S3 Bucket Keys는 Amazon S3에서 AWS KMS로 가는 요청 트래픽을 줄이고 SSE-KMS 비용을 절감해요. 자세한 내용은 Amazon S3 Bucket Keys로 SSE-KMS 비용 절감하기를 참고하세요.
Amazon S3 콘솔, REST API, AWS SDK, AWS Command Line Interface(AWS CLI) 또는 CloudFormation으로 버킷이 새 객체의 SSE-KMS에 S3 Bucket Key를 사용하도록 구성할 수 있어요. 기존 객체에 S3 Bucket Key를 활성화하거나 비활성화하려면 CopyObject 작업을 사용할 수 있어요. 자세한 내용은 객체 수준에서 S3 Bucket Key 구성하기와 Batch Operations로 SSE-KMS용 S3 Bucket Keys 활성화하기를 참고하세요.
원본 또는 대상 버킷에 S3 Bucket Key가 활성화되면 암호화 컨텍스트는 객체 ARN이 아닌 버킷 ARN이 돼요. 예를 들어 arn:aws:s3:::bucket_ARN과 같아요. 암호화 컨텍스트에 버킷 ARN을 사용하도록 IAM 정책을 업데이트해야 해요. 자세한 내용은 S3 Bucket Keys 및 복제를 참고하세요.
다음 예제는 S3 Bucket Key가 복제와 함께 작동하는 방식을 보여줘요. 자세한 내용은 암호화된 객체 복제하기(SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)를 참고하세요.
사전 요구 사항
버킷이 S3 Bucket Key를 사용하도록 구성하기 전에 S3 Bucket Key 활성화 전에 확인할 변경 사항을 검토하세요.
콘솔 사용
S3 콘솔에서 새 버킷 또는 기존 버킷에 S3 Bucket Key를 활성화하거나 비활성화할 수 있어요. S3 콘솔의 객체는 버킷 구성에서 S3 Bucket Key 설정을 상속해요. 버킷에 S3 Bucket Key를 활성화하면 버킷에 업로드하는 새 객체는 SSE-KMS에 S3 Bucket Key를 사용해요.
S3 Bucket Key가 활성화된 버킷에서 객체 업로드, 복사 또는 수정
S3 Bucket Key가 활성화된 버킷에서 객체를 업로드, 수정 또는 복사하면 해당 객체의 S3 Bucket Key 설정이 버킷 구성에 맞게 업데이트될 수 있어요.
이미 S3 Bucket Key가 활성화된 객체는 복사하거나 수정해도 해당 객체의 S3 Bucket Key 설정이 변경되지 않아요. 그러나 S3 Bucket Key가 활성화되지 않은 객체를 수정하거나 복사하고 대상 버킷에 S3 Bucket Key 구성이 있다면 객체는 대상 버킷의 S3 Bucket Key 설정을 상속해요. 예를 들어 원본 객체에 S3 Bucket Key가 활성화되지 않았지만 대상 버킷에 S3 Bucket Key가 활성화되어 있다면 객체에 S3 Bucket Key가 활성화돼요.
새 버킷을 만들 때 S3 Bucket Key를 활성화하려면
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 열어요.
- 왼쪽 탐색 창에서 **버킷(Buckets)**을 선택해요.
- **버킷 만들기(Create bucket)**를 선택해요.
- 버킷 이름을 입력하고 AWS 리전을 선택해요.
- 기본 암호화(Default encryption) 아래의 **암호화 키 유형(Encryption key type)**에서 **AWS Key Management Service 키(SSE-KMS)**를 선택해요.
- AWS KMS key 아래에서 다음 중 하나를 수행해 KMS 키를 선택해요. 사용 가능한 KMS 키 목록에서 선택하려면 **내 AWS KMS 키에서 선택(Choose from your AWS KMS keys)**을 선택한 다음 사용 가능한 키 목록에서 KMS 키를 선택해요. AWS 관리 키(
aws/s3)와 고객 관리 키 모두 이 목록에 나타나요. 고객 관리 키에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 고객 키와 AWS 키를 참고하세요. KMS 키 ARN을 입력하려면 **AWS KMS 키 ARN 입력(Enter AWS KMS key ARN)**을 선택하고 나타나는 필드에 KMS 키 ARN을 입력해요. AWS KMS 콘솔에서 새 고객 관리 키를 만들려면 **KMS 키 만들기(Create a KMS key)**를 선택해요. AWS KMS 키 생성에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 키 생성을 참고하세요. - Bucket Key 아래에서 **활성화(Enable)**를 선택해요.
- **버킷 만들기(Create bucket)**를 선택해요. Amazon S3가 S3 Bucket Key가 활성화된 버킷을 만들어요. 버킷에 업로드하는 새 객체는 S3 Bucket Key를 사용해요. S3 Bucket Key를 비활성화하려면 이전 단계를 따르고 **비활성화(Disable)**를 선택해요.
기존 버킷에 S3 Bucket Key를 활성화하려면
- https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 열어요.
- 왼쪽 탐색 창에서 **버킷(Buckets)**을 선택해요.
- 버킷(Buckets) 목록에서 S3 Bucket Key를 활성화할 버킷을 선택해요.
- 속성(Properties) 탭을 선택해요.
- 기본 암호화(Default encryption) 아래에서 **편집(Edit)**을 선택해요.
- 기본 암호화(Default encryption) 아래의 **암호화 키 유형(Encryption key type)**에서 **AWS Key Management Service 키(SSE-KMS)**를 선택해요.
- AWS KMS key 아래에서 다음 중 하나를 수행해 KMS 키를 선택해요. 사용 가능한 KMS 키 목록에서 선택하려면 **내 AWS KMS 키에서 선택(Choose from your AWS KMS keys)**을 선택한 다음 사용 가능한 키 목록에서 KMS 키를 선택해요. AWS 관리 키(
aws/s3)와 고객 관리 키 모두 이 목록에 나타나요. 고객 관리 키에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 고객 키와 AWS 키를 참고하세요. KMS 키 ARN을 입력하려면 **AWS KMS 키 ARN 입력(Enter AWS KMS key ARN)**을 선택하고 나타나는 필드에 KMS 키 ARN을 입력해요. AWS KMS 콘솔에서 새 고객 관리 키를 만들려면 **KMS 키 만들기(Create a KMS key)**를 선택해요. AWS KMS 키 생성에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 키 생성을 참고하세요. - Bucket Key 아래에서 **활성화(Enable)**를 선택해요.
- **변경 사항 저장(Save changes)**을 선택해요. Amazon S3가 버킷에 추가된 새 객체에 S3 Bucket Key를 활성화해요. 기존 객체는 S3 Bucket Key를 사용하지 않아요. 기존 객체에 S3 Bucket Key를 구성하려면
CopyObject작업을 사용할 수 있어요. 자세한 내용은 객체 수준에서 S3 Bucket Key 구성하기를 참고하세요. S3 Bucket Key를 비활성화하려면 이전 단계를 따르고 **비활성화(Disable)**를 선택해요.
REST API / AWS CLI / AWS SDK 사용
PutBucketEncryption을 사용해 버킷의 S3 Bucket Key를 활성화하거나 비활성화할 수 있어요. PutBucketEncryption으로 S3 Bucket Key를 구성하려면 SSE-KMS와 함께 기본 암호화를 포함하는 ServerSideEncryptionRule 데이터 형식을 사용해요. 고객 관리 키의 KMS 키 ID를 지정해 고객 관리 키를 선택적으로 사용할 수도 있어요.
자세한 내용과 예제 구문은 PutBucketEncryption을 참고하세요.
다음 예제는 AWS SDK for Java로 SSE-KMS와 S3 Bucket Key를 사용해 기본 버킷 암호화를 활성화해요.
- Java:
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
.withRegion(Regions.DEFAULT_REGION)
.build();
ServerSideEncryptionByDefault serverSideEncryptionByDefault = new ServerSideEncryptionByDefault()
.withSSEAlgorithm(SSEAlgorithm.KMS);
ServerSideEncryptionRule rule = new ServerSideEncryptionRule()
.withApplyServerSideEncryptionByDefault(serverSideEncryptionByDefault)
.withBucketKeyEnabled(true);
ServerSideEncryptionConfiguration serverSideEncryptionConfiguration =
new ServerSideEncryptionConfiguration().withRules(Collections.singleton(rule));
SetBucketEncryptionRequest setBucketEncryptionRequest = new SetBucketEncryptionRequest()
.withServerSideEncryptionConfiguration(serverSideEncryptionConfiguration)
.withBucketName(bucketName);
s3client.setBucketEncryption(setBucketEncryptionRequest);
다음 예제는 AWS CLI로 SSE-KMS와 S3 Bucket Key를 사용해 기본 버킷 암호화를 활성화해요. 사용자 입력 자리 표시자를 자신의 정보로 바꾸세요.
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
"Rules": [
{
"ApplyServerSideEncryptionByDefault": {
"SSEAlgorithm": "aws:kms",
"KMSMasterKeyID": "KMS-Key-ARN"
},
"BucketKeyEnabled": true
}
]
}'
CloudFormation으로 S3 Bucket Key를 구성하는 방법에 대한 자세한 내용은 AWS CloudFormation 사용자 안내서의 AWS::S3::Bucket ServerSideEncryptionRule을 참고하세요.