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

Amazon S3가 관리하는 암호화 키(SSE-S3)를 사용하는 서버 측 암호화로 데이터 보호

서버 측 암호화는 저장된 데이터를 보호하기 위한 것입니다. Amazon S3가 관리하는 암호화 키(SSE-S3)를 사용하는 서버 측 암호화는 강력한 멀티 팩터 암호화를 제공합니다. Amazon S3는 각 객체를 고유한 키로 암호화합니다. 또한 추가 보안 조치로 주기적으로 바뀌는 마스터 키를 사용하여 키 자체를 암호화합니다. Amazon S3 서버 측 암호화는 가장 강력한 블록 암호 중 하나인 256비트 Advanced Encryption Standard(AES-256)를 사용하여 데이터를 암호화합니다.

Amazon S3는 버킷에 저장된 모든 객체에 대해 서버 측 암호화가 필요할 경우 사용할 수 있는 버킷 정책을 지원합니다. 예를 들어 다음 버킷 정책은 요청에 서버 측 암호화를 나타내는 x-amz-server-side-encryption 헤더가 포함되지 않을 경우 모든 사용자에게 객체 업로드(s3:PutObject) 권한을 거부합니다.

Copy
{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [ { "Sid": "DenyIncorrectEncryptionHeader", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::YourBucket/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } }, { "Sid": "DenyUnEncryptedObjectUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::YourBucket/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption": "true" } } } ] }

서버 측 암호화는 객체 데이터만 암호화합니다. 객체 메타데이터는 암호화되지 않습니다.

서버 측 암호화를 위한 API 지원

객체 생성 REST API(REST API를 사용하여 서버 측 암호화 지정 참조)는 서버 측 암호화를 요청하는 데 사용할 수 있는 요청 헤더(x-amz-server-side-encryption)를 제공합니다.

다음 Amazon S3 API는 이러한 헤더를 지원합니다.

  • PUT 작업 - PUT API(PUT Object 참조)를 사용하여 데이터를 업로드할 때 이러한 요청 헤더를 지정할 수 있습니다.

  • 멀티파트 업로드 시작 — 멀티파트 업로드 API를 사용하여 대형 객체를 업로드할 때 이 헤더를 지정할 수 있습니다. 시작 요청에서 이 헤더를 지정합니다(멀티파트 업로드 시작 참조).

  • POST 작업 - POST 작업(POST Object 참조)을 사용하여 객체를 업로드할 경우에는 요청 헤더 대신 양식 필드에 동일한 정보를 제공합니다.

  • COPY 작업 - 객체를 복사(PUT Object - Copy 참조)하려면 원본 객체 및 대상 객체가 있어야 합니다.

AWS SDK 또한 서버 측 암호화를 요청하는 데 사용할 수 있는 래퍼 API를 제공하며, AWS Management Console을 사용하여 객체를 업로드하고 서버 측 암호화를 요청할 수도 있습니다.

참고

미리 서명된 URL을 사용하여 객체가 업로드되는 경우 객체가 SSE-S3을 사용하여 암호화되는지 여부를 지정할 수 없습니다. 서버 측 암호화를 지정할 수 있는 유일한 방법은 AWS Management Console 또는 HTTP 요청 헤더를 통하는 것입니다. 자세한 정보는 정책에서 조건 지정을 참조하십시오.