Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감 - Amazon Simple Storage Service

Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감

Amazon S3 버킷 키는 AWS Key Management Service(AWS KMS) 키(SSE-KMS)를 사용하여 Amazon S3 서버 측 암호화 비용을 절감합니다. SSE-KMS용 버킷 수준 키를 사용하면 Amazon S3에서 AWS KMS로 가는 요청 트래픽을 줄여 AWS KMS 요청 비용을 최대 99%까지 줄일 수 있습니다. AWS Management Console에서 몇 번만 클릭하면 클라이언트 애플리케이션을 변경하지 않고도 새 객체에 대한 SSE-KMS 암호화에 S3 버킷 키를 사용하도록 버킷을 구성할 수 있습니다.

참고

S3 버킷 키는 AWS Key Management Service(AWS KMS) 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS)에 지원되지 않습니다.

SSE-KMS용 S3 버킷 키

SSE-KMS로 암호화된 수백만 또는 수십억 개의 객체에 액세스하는 워크로드는 AWS KMS에 대한 대규모 볼륨 요청을 생성할 수 있습니다. S3 버킷 키 없이 SSE-KMS를 사용하여 데이터를 보호하는 경우 Amazon S3는 모든 객체에 대해 개별 AWS KMS 데이터 키를 사용합니다. 이 경우, Amazon S3는 KMS 암호화 객체에 대해 요청이 이루어질 때마다 AWS KMS를 호출합니다. SSE-KMS 작동 방식에 대한 자세한 내용은 AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS) 사용 단원을 참조하십시오.

SSE-KMS에 S3 버킷 키를 사용하도록 버킷을 구성하면, AWS가 AWS KMS에서 수명이 짧은 버킷 수준 키를 생성하여 S3 내에 임시로 보관합니다. 이 버킷 수준 키는 수명 주기 동안 새 객체의 데이터 키를 생성합니다. S3 버킷 키는 Amazon S3 내에서 제한된 기간 동안 사용되므로 S3가 암호화 작업을 완료하기 위해 AWS KMS에 요청할 필요성이 줄어듭니다. 이렇게 하면 S3에서 AWS KMS로 가는 트래픽이 줄어들어, 이전 비용의 일부만 부담하면 Amazon S3의 AWS KMS 암호화 객체에 액세스할 수 있습니다.

요청자의 키 액세스가 AWS KMS CloudTrail 이벤트에서 캡처되도록 요청자당 최소 한 번은 고유한 버킷 수준 키를 가져옵니다. Amazon S3는 호출자가 서로 다른 역할 또는 계정을 사용하거나 범위 지정 정책이 다른 동일한 역할을 사용하는 경우 호출자를 다른 요청자로 취급합니다. AWS KMS 요청 절감액에는 요청자 수, 요청 패턴 및 요청된 객체의 상대적 기간이 반영됩니다. 예를 들어, 요청자 수가 적고 제한된 시간 내에 여러 객체를 요청한다면, 동일한 버킷 수준 키로 암호화해도 절감 효과가 큽니다.

참고

S3 버킷 키를 사용하면 버킷 수준 키를 사용하여 Encrypt, GenerateDataKey, Decrypt 작업에 대한 AWS KMS 요청을 줄여 AWS KMS 요청 비용을 절감할 수 있습니다. 설계상 이 버킷 수준 키를 이용하는 후속 요청은 AWS KMS API 요청으로 이어지지 않으며 AWS KMS 키 정책에 대한 액세스를 검증하지 않습니다.

S3 버킷 키를 구성할 때 이미 버킷에 있는 객체에는 S3 버킷 키가 사용되지 않습니다. 기존 객체에 대해 S3 버킷 키를 구성하려면 CopyObject 작업을 사용하면 됩니다. 자세한 내용은 객체 수준에서 S3 버킷 키 구성 단원을 참조하십시오.

Amazon S3는 동일한 AWS KMS key로 암호화된 객체에 대해서만 S3 버킷 키를 공유합니다. S3 버킷 키는 AWS KMS에서 생성한 KMS 키, 가져온 키 구성 요소사용자 지정 키 스토어가 지원하는 키 구성 요소와 호환됩니다.

버킷의 객체에 대한 데이터 키를 만드는 버킷 키를 생성하는 AWS KMS를 보여 주는 다이어그램.

S3 버킷 키 구성

Amazon S3 콘솔, AWS SDK, AWS CLI 또는 REST API를 통해 새 객체에 SSE-KMS용 S3 버킷 키를 사용하도록 버킷을 구성할 수 있습니다. 버킷에서 S3 버킷 키가 활성화되면, SSE-KMS 키가 별도로 지정된 채로 업로드된 객체는 자체 S3 버킷 키를 사용합니다. S3 버킷 키 설정과 무관하게 true 또는 false 값이 있는 x-amz-server-side-encryption-bucket-key-enabled 헤더를 요청에 포함하면 버킷 설정을 재정의할 수 있습니다.

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 버킷 키를 지원합니다.

AWS CloudFormation 작업

AWS CloudFormation에서 AWS::S3::Bucket 리소스에는 S3 버킷 키를 사용하거나 사용 중지하는 데 사용할 수 있는 BucketKeyEnabled라는 암호화 속성이 포함되어 있습니다.

자세한 내용은 AWS CloudFormation 사용하기 섹션을 참조하십시오.

S3 버킷 키를 사용 설정하기 전에 유의할 변경 사항

S3 버킷 키를 활성화하기 전에 다음과 같은 관련 변경 사항에 유의하십시오.

IAM 및 AWS KMS 키 정책

기존 AWS Identity and Access Management(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 버킷 키가 복제와 함께 작동하는 방식을 보여 줍니다. 자세한 내용은 서버 측 암호화(SSE-C, SSE-S3, SSE-KMS, DSSE-KMS)를 사용하여 생성된 객체 복제 단원을 참조하십시오. 

예시 1 – 소스 객체가 S3 버킷 키를 사용하고 대상 버킷은 기본 암호화를 사용합니다.

원본 객체가 S3 버킷 키를 사용하지만 대상 버킷은 SSE-KMS와 함께 기본 암호화를 사용하는 경우, 복제본 객체는 대상 버킷에서 S3 버킷 키 암호화 설정을 유지합니다. 대상 버킷은 여전히 SSE-KMS와 함께 기본 암호화를 사용합니다.

예시 2 – 소스 객체가 암호화되지 않았고 대상 버킷은 SSE-KMS와 함께 S3 버킷 키를 사용합니다.

소스 객체가 암호화되지 않았고 대상 버킷은 SSE-KMS와 함께 S3 버킷 키를 사용하는 경우, 복제본 객체는 대상 버킷에서 SSE-KMS와 함께 S3 버킷 키로 암호화됩니다. 결과적으로 원본 객체의 ETag는 복제본 객체의 ETag와 다릅니다. 이러한 차이점을 수용하도록 ETag를 사용하는 애플리케이션을 업데이트해야 합니다.

S3 버킷 키를 사용한 작업

S3 버킷 키 사용 설정 및 사용에 대한 자세한 내용은 다음 섹션을 참조하십시오.