메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

S3 버킷에 대한 Amazon S3 기본 암호화

Amazon S3 기본 암호화를 사용하면 S3 버킷의 기본 암호화 동작을 설정할 수 있습니다. 버킷에 저장되는 모든 객체를 암호화하도록 버킷에 대한 기본 암호화를 설정할 수 있습니다. Amazon S3 관리형 키(SSE-S3) 또는 AWS KMS 관리형 키(SSE-KMS)로 서버 측 암호화를 사용하여 객체를 암호화합니다.

서버 측 암호화를 사용하는 경우 Amazon S3에서는 데이터 센터의 디스크에 저장하기 전에 객체를 암호화하고 객체를 다운로드할 때 이를 복호화합니다. 서버 측 암호화를 사용한 데이터 보호 및 암호화 키 관리에 대한 자세한 내용은 암호화를 사용하여 데이터 보호 단원을 참조하십시오.

기본 암호화는 모든 기존 S3 버킷과 새 S3 버킷에 작동합니다. 기본 암호화를 사용하지 않고 버킷에 저장된 모든 객체를 암호화하려면 모든 객체 스토리지 요청에 암호화 정보를 포함시켜야 합니다. 또한 암호화 정보를 포함하지 않는 스토리지 요청을 거부하도록 S3 버킷 정책을 설정해야 합니다.

S3 버킷의 기본 암호화를 사용하는 데 대한 추가 비용은 없습니다. 기본 암호화 기능을 구성하도록 요청할 경우 표준 Amazon S3 요청 요금이 발생합니다. 요금에 대한 자세한 내용은 Amazon S3 요금을 참조하십시오. SSE-KMS 암호화 키 스토리지의 경우 AWS Key Management Service 요금이 적용됩니다. 요금은 AWS KMS 요금에 나와 있습니다.

S3 버킷에 대한 Amazon S3 기본 암호화를 설정하려면 어떻게 해야 합니까?

이 단원에서는 Amazon S3 기본 암호화를 설정하는 방법을 설명합니다. AWS SDK, Amazon S3 REST API, AWS Command Line Interface(AWS CLI) 또는 Amazon S3 콘솔을 사용하여 기본 암호화를 활성화할 수 있습니다. S3 버킷에 대한 기본 암호화를 설정하는 가장 간편한 방법은 AWS Management Console을 사용하는 것입니다.

다음 방법 중 하나를 사용하여 버킷에서 기본 암호화를 설정할 수 있습니다.

  • Amazon S3 콘솔을 사용합니다. 자세한 내용은 S3 버킷을 생성하려면 어떻게 해야 합니까?(출처: Amazon Simple Storage Service 콘솔 사용 설명서)를 참조하십시오.

  • 다음 REST API를 사용합니다.

    • REST API PUT 버킷 암호화 작업을 사용하여 기본 암호화를 활성화하고 사용할 서버 측 암호화 유형(SSE-S3 또는 SSE-KMS)을 설정합니다.

    • REST API DELETE 버킷 암호화를 사용하여 객체의 기본 암호화를 비활성화합니다. 기본 암호화를 비활성화한 후 Amazon S3는 PUT 요청에 암호화 정보가 포함되는 경우에만 객체를 암호화합니다. 자세한 내용은 PUT 객체PUT 객체 - 복사를 참조하십시오.

    • REST API GET 버킷 암호화를 사용하여 현재 기본 암호화 구성을 확인합니다.

  • AWS CLI 및 AWS SDK를 사용합니다. 자세한 내용은 AWS SDK, CLI 및 Explorer 사용 단원을 참조하십시오.

버킷에 대한 기본 암호화를 활성화한 후에는 다음 암호화 동작이 적용됩니다.

  • 기본 암호화가 활성화되기 전에 버킷에 있었던 객체의 암호화는 변경되지 않습니다.

  • 기본 암호화를 활성화한 후 객체를 업로드하는 경우:

    • PUT 요청 헤더에 암호화 정보가 포함되지 않는 경우 Amazon S3는 버킷의 기본 암호화 설정을 사용하여 객체를 암호화합니다.

    • PUT 요청 헤더에 암호화 정보가 포함되는 경우 Amazon S3는 객체를 Amazon S3에 저장하기 전에 PUT 요청의 암호화 정보를 사용하여 객체를 암호화합니다. PUT이 성공하면 응답은 응답 헤더에 암호화 정보가 있는 HTTP/1.1 200 OK입니다. 자세한 내용은 PUT Object 단원을 참조하십시오.

  • 기본 암호화 구성에 대해 SSE-KMS 옵션을 사용할 경우 AWS KMS의 RPS에 대한 KMS(초당 요청 수) 제한이 적용됩니다. AWS KMS 제한과 한도 증가를 요청하는 방법에 대한 자세한 내용은 AWS KMS 제한을 참조하십시오.

암호화 적용에 대해 버킷 정책 사용에서 기본 암호화로 전환

현재 암호화 헤더가 없는 PUT 요청을 거부하는 버킷 정책을 사용하여 S3 버킷에 대한 객체 암호화를 적용하는 경우 다음 절차를 사용하여 기본 암호화 사용을 시작하는 것이 좋습니다.

암호화 헤더가 없는 PUT 요청을 거부하는 버킷 정책 사용에서 기본 암호화 사용으로 변경하려면

  1. 기본 암호화에 SSE-KMS를 사용하도록 지정할 계획인 경우 모든 PUTGET 객체 요청이 서명 버전 4를 사용하여 서명되고 SSL 연결을 통해 Amazon S3로 전송되는지 확인하십시오. AWS KMS 사용에 대한 자세한 내용은 AWS KMS 관리형 키(SSE-KMS)를 사용하는 서버 측 암호화로 데이터 보호 단원을 참조하십시오.

    참고

    기본적으로 Amazon S3 콘솔, the AWS CLI 버전 1.11.108 이상, 2016년 5월 이후 릴리스된 모든 AWS SDK는 서명 버전 4를 사용하여 요청을 서명하고 SSL 연결을 통해 Amazon S3로 전송합니다.

  2. 암호화 헤더가 없는 PUT 요청을 거부하는 버킷 정책 설명을 삭제합니다. (대체될 버킷 정책의 백업 복사본을 저장하는 것이 좋습니다.)

  3. 암호화 동작이 원하는 대로 설정되도록 하려면 여러 PUT 요청을 테스트하여 실제 워크로드를 면밀하게 시뮬레이션합니다.

  4. SSE-KMS와 함께 기본 암호화를 사용하는 경우 변경하기 전에 클라이언트를 모니터링하여 실패하지 은 실패 PUTGET 요청이 있는지 확인합니다. 이러한 요청은 1단계에 따라 업데이트하지 않은 요청일 가능성이 높습니다. Change the 실패 PUT 또는 GET 요청이 AWS 서명 버전 4로 서명되고 SSL을 통해 전송되도록 변경합니다.

S3 버킷에 대해 기본 암호화를 활성화한 후 암호화 헤더가 없는 PUT 요청을 통해 Amazon S3에 저장된 객체는 버킷 레벨 기본 암호화 설정을 사용하여 암호화됩니다.

교차 리전 복제에 기본 암호화 사용

교차 리전 복제 대상 버킷에 대한 기본 암호화를 활성화한 후에는 다음 암호화 동작이 적용됩니다.

  • 원본 버킷의 객체가 암호화되지 않은 경우 대상 버킷의 복제본 객체는 대상 버킷의 기본 암호화 설정을 사용하여 암호화됩니다. 결과적으로 원본 객체의 ETag는 복제본 객체의 ETag와 다릅니다. 이러한 차이점을 수용하도록 ETag를 사용하는 애플리케이션을 업데이트해야 합니다.

  • 원본 버킷의 객체가 SSE-S3 또는 SSE-KMS를 사용하여 암호화되는 경우 대상 버킷의 복제본 객체는 원본 객체 암호화와 동일한 암호화를 사용합니다. 대상 버킷의 기본 암호화 설정은 사용되지 않습니다.

CloudTrail 및 CloudWatch를 사용한 기본 암호화 모니터링

AWS CloudTrail 이벤트를 통해 기본 암호화 구성 요청을 추적할 수 있습니다. CloudTrail 로그에 사용되는 API 이벤트 이름은 PutBucketEncryption, GetBucketEncryptionDeleteBucketEncryption입니다. S3 버킷 레벨 작업을 이벤트 유형으로 사용하여 Amazon CloudWatch Events를 생성할 수도 있습니다. CloudTrail 이벤트에 대한 자세한 내용은 CloudWatch 데이터 이벤트로 S3 버킷에 대해 객체 수준 로깅을 활성화하려면 어떻게 합니까?를 참조하십시오.

CloudTrail 로그를 객체 레벨 Amazon S3 작업에 사용하여 Amazon S3에 대한 PUTPOST 요청을 추적하고 수신 PUT 요청에 암호화 헤더가 없는 경우 객체를 암호화하는 데 기본 암호화가 사용되는지 여부를 확인할 수 있습니다.

Amazon S3가 기본 암호화 설정을 사용하여 객체를 암호화하는 경우 로그에는 "SSE Applied":"Default_SSE_S3" or "SSE Applied":"Default_SSE_KMS" 필드가 이름/값 페어로 포함됩니다.

Amazon S3가 PUT 암호화 헤더를 사용하여 객체를 암호화하는 경우 로그에는 "SSEApplied":"SSE_S3", "SSEApplied":"SSE_KMS 또는 "SSEApplied":"SSE_C" 필드가 이름/값 페어로 포함됩니다. 멀티파트 업로드의 경우 이 정보가 InitiateMultipartUpload API 요청에 포함됩니다. CloudTrail 및 CloudWatch 사용에 대한 자세한 내용은 Amazon S3 모니터링 단원을 참조하십시오.