Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3) 지정
중요
이제 Amazon S3가 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)를 Amazon S3 내 모든 버킷 암호화의 기본 수준으로 적용합니다. 2023년 1월 5일부터 Amazon S3로의 모든 새 객체 업로드는 추가 비용 없이 성능에 영향을 미치지 않고 자동으로 암호화됩니다. S3 버킷 기본 암호화 구성에 및 신규 객체 업로드에 대한 자동 암호화 상태는 AWS CloudTrail 로그, S3 인벤토리, S3 스토리지 렌즈, Amazon S3 콘솔에서 사용할 수 있으며, AWS Command Line Interface 및 AWS SDK에서 추가 Amazon S3 API 응답 헤더로도 사용할 수 있습니다. 자세한 내용은 기본 암호화 관련 FAQ를 참조하십시오.
모든 Amazon S3 버킷에는 기본적으로 암호화가 구성되어 있으며 S3 버킷에 업로드되는 신규 객체는 모두 저장 시 자동으로 암호화됩니다. Amazon S3 관리형 키(SSE-S3)를 사용한 서버 측 암호화가 Amazon S3 내 모든 버킷의 기본 암호화 구성입니다. 다른 유형의 암호화를 사용하려면 S3 PUT
요청에 사용할 서버 측 암호화 유형을 지정하거나 대상 버킷에 기본 암호화 구성을 설정할 수 있습니다.
PUT
요청에 다른 암호화 유형을 지정하려는 경우 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS), AWS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS) 또는 고객 제공 키를 사용한 서버 측 암호화 (SSE-C)를 사용할 수 있습니다. 대상 버킷에 다른 기본 암호화 구성을 설정하려는 경우 SSE-KMS 또는 DSSE-KMS를 사용할 수 있습니다.
S3 콘솔, REST API, AWS SDK 및 AWS Command Line Interface(AWS CLI)를 사용하여 SSE-S3를 지정할 수 있습니다. 자세한 내용은 Amazon S3 버킷에 대한 기본 서버 측 암호화 동작 설정 단원을 참조하십시오.
이 주제에서는 AWS Management Console을 사용하여 객체 암호화의 유형을 설정하거나 변경하는 방법을 설명합니다. 콘솔을 사용하여 객체를 복사할 경우 Amazon S3는 원본 그대로 객체를 복사합니다. 즉, 소스 객체가 암호화된 상태이면 대상 객체도 암호화됩니다. 콘솔을 사용하여 객체에 대한 암호화를 추가하거나 변경할 수 있습니다.
참고
-
객체 암호화를 변경하면 새 객체가 생성되어 이전 객체를 대체합니다. S3 버전 관리가 사용 설정된 경우 객체의 새 버전이 생성되고 기존 객체는 이전 버전이 됩니다. 또한 속성을 변경하는 역할도 새 객체(또는 객체 버전)의 소유자가 됩니다.
-
사용자 정의 태그가 있는 객체의 암호화 유형을 변경하는 경우
s3:GetObjectTagging
권한이 있어야 합니다. 사용자 정의 태그는 없지만 크기가 16MB를 초과하는 객체의 암호화 유형을 변경하는 경우s3:GetObjectTagging
권한도 있어야 합니다.대상 버킷 정책에서
s3:GetObjectTagging
작업을 거부하는 경우 객체의 암호화 유형은 업데이트되지만 사용자 정의 태그는 객체에서 제거되며 오류가 발생합니다.
객체에 대한 암호화를 변경하는 방법
-
AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/
에서 Amazon S3 콘솔을 엽니다. -
왼쪽 탐색 창에서 버킷(Buckets)을 선택합니다.
-
버킷(Buckets) 목록에서 객체가 포함된 버킷의 이름을 선택합니다.
-
객체(Objects) 목록에서 암호화를 추가하거나 변경할 객체의 이름을 선택합니다.
객체의 속성이 표시된 여러 섹션이 있는 객체의 세부 정보 페이지가 나타납니다.
-
속성(Properties) 탭을 선택합니다.
아래로 스크롤하여 서버 측 암호화 설정 섹션으로 이동한 다음 편집을 선택합니다.
암호화 설정에서 버킷 기본 암호화 설정 사용 또는 버킷 기본 암호화 설정 재정의를 선택합니다.
-
기본 암호화에 버킷 설정 재정의를 선택한 경우 다음과 같은 암호화 설정을 구성해야 합니다.
-
암호화 유형에서 Amazon S3 관리형 키(SSE-S3)를 선택합니다. SSE-S3는 가장 강력한 블록 암호 중 하나인 256비트 Advanced Encryption Standard(AES-256)을 사용하여 각 객체를 암호화합니다. 자세한 내용은 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3) 사용 단원을 참조하십시오.
-
-
변경 사항 저장(Save changes)을 선택합니다.
참고
이 작업은 지정된 모든 객체에 암호화를 적용합니다. 폴더를 암호화할 때 폴더에 새 객체를 추가하기 전에 저장 작업이 완료될 때까지 기다립니다.
새 객체를 업로드하거나 기존 객체를 복사하여 객체가 생성될 경우 요청에 x-amz-server-side-encryption
헤더를 추가하여 Amazon S3에서 Amazon S3 관리형 키(SSE-S3)를 사용하여 데이터를 암호화하도록 할지 지정할 수 있습니다. Amazon S3에서 지원하는 암호화 알고리즘인 AES256
으로 헤더의 값을 설정합니다. Amazon S3는 x-amz-server-side-encryption
응답 헤더를 반환하여 객체가 SSE-S3를 사용하여 저장됨을 확인해 줍니다.
다음 REST 업로드 API 작업은 x-amz-server-side-encryption
요청 헤더를 수락합니다.
멀티파트 업로드 API 작업을 사용하여 대형 객체를 업로드할 경우 Initiate Multipart Upload 요청에 x-amz-server-side-encryption
헤더를 추가하여 서버 측 암호화를 지정할 수 있습니다. 기존 객체를 복사할 때 소스 객체의 암호화 여부에 관계없이 명시적으로 서버 측 암호화를 요청하지 않는 한 대상 객체는 암호화되지 않습니다.
객체가 SSE-S3를 사용하여 저장될 경우 다음 REST API 작업의 응답 헤더는 x-amz-server-side-encryption
헤더를 반환합니다.
참고
객체가 SSE-S3를 사용할 경우 GET
요청 및 HEAD
요청에 대해 암호화 요청 헤더를 전송하지 마십시오. 전송할 경우 HTTP 상태 코드 400(잘못된 요청) 오류가 발생합니다.
AWS SDK를 사용할 때 Amazon S3가 Amazon S3 관리형 암호화 키(SSE-S3)를 통한 서버 측 암호화를 사용하도록 요청할 수 있습니다. 이 섹션에서는 여러 언어로 AWS SDK를 사용한 예제를 제공합니다. 다른 SDK에 대한 자세한 내용은 샘플 코드 및 라이브러리
AWS CLI를 사용하여 객체를 업로드할 때 SSE-S3를 지정하려면 다음 예시를 사용합니다.
aws s3api put-object --bucket
--key
amzn-s3-demo-bucket1
object-key-name
--server-side-encryption AES256 --bodyfile path
자세한 내용은 AWS CLI 참조에서 put-object
AWS CloudFormation을 사용하여 암호화를 설정하는 방법의 예제는 AWS CloudFormation 사용 설명서의 AWS::S3::Bucket ServerSideEncryptionRule
에 있는 기본 암호화로 버킷 생성 및 S3 버킷 키로 AWS KMS 서버 측 암호화를 사용하여 버킷 생성을 참조하십시오.