Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감
Amazon S3 버킷 키는 AWS Key Management Service(SSE-KMS)을(를) 사용하여 Amazon S3 서버 측 암호화 비용을 절감합니다. 이 새로운 SSE용 버킷 수준 키는 Amazon S3에서 AWS KMS로 가는 요청 트래픽을 줄여 AWS KMS 요청 비용을 최대 99% 줄일 수 있습니다. AWS Management Console에서 몇 번만 클릭하면 클라이언트 애플리케이션을 변경하지 않고도 새 객체에 대한 AWS KMS 기반 암호화에 S3 버킷 키를 사용하도록 버킷을 구성할 수 있습니다.
SSE-KMS용 S3 버킷 키
SSE-KMS로 암호화된 수백만 또는 수십억 개의 객체에 액세스하는 워크로드는 AWS KMS에 대한 대규모 볼륨 요청을 생성할 수 있습니다. S3 버킷 키 없이 SSE-KMS를 사용하여 데이터를 보호하는 경우 Amazon S3는 모든 객체에 대해 개별 AWS KMS 데이터 키를 사용합니다. 그리고 KMS 암호화 객체에 대해 요청이 이루어질 때마다 AWS KMS를 호출합니다. SSE-KMS 작동 방식에 대한 자세한 내용은 AWS Key Management Service(SSE-KMS)를 사용하는 서버 측 암호화로 데이터 보호 단원을 참조하세요.
SSE-KMS용 S3 버킷 키를 사용하도록 버킷을 구성하면 AWS KMS는 버킷에 추가되는 새 객체에 대해 고유한 데이터 키를 생성하는 데 사용되는 버킷 수준 키를 생성합니다. 이 S3 버킷 키는 Amazon S3 내에서 제한된 기간 동안 사용되므로 Amazon S3가 암호화 작업을 완료하기 위해 AWS KMS에 요청할 필요성이 줄어듭니다. 이렇게 하면 S3에서 AWS KMS로 가는 트래픽이 줄어들어, 이전 비용의 일부만 부담하면 S3의 AWS KMS 암호화 객체에 액세스할 수 있습니다.
S3 버킷 키를 구성할 때 이미 버킷에 있는 객체에는 S3 버킷 키가 사용되지 않습니다. 기존 객체에 대해 S3 버킷 키를 구성하려면 COPY 작업을 사용하면 됩니다. 자세한 정보는 배치 작업, REST API, AWS SDK 또는 AWS CLI를 사용하여 객체 수준에서 S3 버킷 키 구성을 참조하세요.
Amazon S3는 동일한 AWS KMS key로 암호화된 객체에 대해서만 S3 버킷 키를 공유합니다.

S3 버킷 키 구성
Amazon S3 콘솔, AWS SDK, AWS CLI 또는 REST API를 통해 새 객체에 SSE-KMS용 S3 버킷 키를 사용하도록 버킷을 구성할 수 있습니다. 또한, REST API, AWS SDK 또는 AWS CLI를 사용하여 개별 객체별 KMS 키를 이용해 버킷의 특정 객체에 대한 S3 버킷 키 구성을 재정의할 수도 있습니다. S3 버킷 키 설정을 볼 수도 있습니다.
S3 버킷 키를 사용하도록 버킷을 구성하기 전에 S3 버킷 키를 사용 설정하기 전에 유의할 변경 사항을(를) 검토하세요.
Amazon S3 콘솔을 사용하여 S3 버킷 키 구성
새 버킷을 생성할 때 새 객체에 SSE-KMS용 S3 버킷 키를 사용하도록 버킷을 구성할 수 있습니다. 버킷 속성을 업데이트하여 새 객체에 SSE-KMS용 S3 버킷 키를 사용하도록 기존 버킷을 구성할 수도 있습니다.
자세한 정보는 새 객체에 SSE-KMS와 함께 S3 버킷 키를 사용하도록 버킷 구성을 참조하십시오.
S3 버킷 키에 대한 REST API, AWS CLI 및 AWS SDK 지원
REST API, AWS CLI 또는 AWS SDK를 사용하여 새 객체에서 SSE-KMS용 S3 버킷 키를 사용하도록 버킷을 구성할 수 있습니다. 객체 수준에서 S3 버킷 키를 사용 설정할 수도 있습니다.
자세한 내용은 다음 자료를 참조하세요.
다음 API는 SSE-KMS에 대한 S3 버킷 키를 지원합니다.
-
-
ServerSideEncryptionRule
은(는) S3 버킷 키를 사용 설정 및 사용 중지하기 위한BucketKeyEnabled
파라미터를 허용합니다.
-
-
-
ServerSideEncryptionRule
은(는)BucketKeyEnabled
에 대한 설정을 반환합니다.
-
-
PutObject, CopyObject, CreateMutlipartUpload 및 PostObject
-
x-amz-server-side-encryption-bucket-key-enabled
요청 헤더는 객체 수준에서 S3 버킷 키를 사용 설정하거나 사용 중지합니다.
-
-
HeadObject, GetObject, UploadPartCopy, UploadPart 및 CompleteMultipartUpload
-
x-amz-server-side-encryption-bucket-key-enabled
응답 헤더는 S3 버킷 키가 객체에 대해 사용 설정 또는 사용 중지되었는지 여부를 나타냅니다.
-
AWS CloudFormation로 작업하기
AWS CloudFormation에서 AWS::S3::Bucket
리소스에는 S3 버킷 키를 사용하거나 사용 중지하는 데 사용할 수 있는 BucketKeyEnabled
라는 암호화 속성이 포함되어 있습니다.
자세한 정보는 AWS CloudFormation 사용을 참조하십시오.
S3 버킷 키를 사용 설정하기 전에 유의할 변경 사항
S3 버킷 키를 사용 설정하기 전에 다음과 같은 관련 변경 사항에 유의하세요.
IAM 또는 KMS 주요 정책
기존 IAM 정책 또는 AWS KMS 키 정책이 객체 Amazon 리소스 이름(ARN)을 암호화 컨텍스트로 사용하여 KMS 키에 대한 액세스를 구체화하거나 제한하는 경우, 이러한 정책은 S3 버킷 키와 함께 작동하지 않습니다. S3 버킷 키는 버킷 ARN을 암호화 컨텍스트로 사용합니다. S3 버킷 키를 사용하기 전에 버킷 ARN을 암호화 컨텍스트로 사용하도록 IAM 정책 또는 AWS KMS 키 정책을 업데이트합니다.
암호화 컨텍스트 및 S3 버킷 키에 대한 자세한 내용은 암호화 컨텍스트 단원을 참조하세요.
AWS KMS CloudTrail 이벤트
S3 버킷 키를 사용하면 AWS KMS CloudTrail 이벤트가 객체 ARN 대신 버킷 ARN을 기록합니다. 또한, 로그에 SSE-KMS 객체에 대한 KMS CloudTrail 이벤트가 줄어든 것을 확인할 수 있습니다. Amazon S3에서 키 구성 요소의 시간은 제한되어 있으므로 AWS KMS에 대한 요청 수가 줄어듭니다.
복제와 함께 S3 버킷 키 사용
S3 버킷 키를 동일 리전 복제(SRR) 및 교차 리전 복제(CRR)와 함께 사용할 수 있습니다.
Amazon S3는 암호화된 객체를 복제할 때 일반적으로 대상 버킷에 복제본 객체의 암호화 설정을 보존합니다. 그러나 원본 객체가 암호화되지 않고 대상 버킷에서 기본 암호화 또는 S3 버킷 키를 사용하는 경우, Amazon S3는 대상 버킷의 구성으로 객체를 암호화합니다.
다음 예에서는 S3 버킷 키가 복제와 함께 작동하는 방식을 보여 줍니다. 자세한 정보는 KMS 키를 사용하여 서버 측 암호화(SSE)로 생성된 객체 복제을 참조하십시오.
예제 1 – 원본 객체가 S3 버킷 키를 사용하고 대상 버킷은 기본 암호화를 사용합니다.
원본 객체가 S3 버킷 키를 사용하지만 대상 버킷은 SSE-KMS와 함께 기본 암호화를 사용하는 경우, 복제본 객체는 대상 버킷에서 S3 버킷 키 암호화 설정을 유지합니다. 대상 버킷은 여전히 SSE-KMS와 함께 기본 암호화를 사용합니다.
예제 2 – 원본 객체가 암호화되지 않았고 대상 버킷은 SSE-KMS와 함께 S3 버킷 키를 사용합니다.
원본 객체가 암호화되지 않았고 대상 버킷은 SSE-KMS와 함께 S3 버킷 키를 사용하는 경우, 원본 객체는 대상 버킷에서 SSE-KMS를 사용하여 S3 버킷 키로 암호화됩니다. 결과적으로 원본 객체의 ETag
는 복제본 객체의 ETag
와 다릅니다. 이러한 차이점을 수용하도록 ETag
를 사용하는 애플리케이션을 업데이트해야 합니다.
S3 버킷 키를 사용한 작업
S3 버킷 키 사용 설정 및 사용에 대한 자세한 내용은 다음 섹션을 참조하세요.