객체 수준에서 S3 버킷 키 구성 - Amazon Simple Storage Service

객체 수준에서 S3 버킷 키 구성

REST API, AWS SDK 또는 AWS CLI를 사용하여 PUT 또는 COPY 작업을 수행할 때 true 또는 false 값이 있는 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 추가하면 객체 수준에서 S3 버킷 키를 활성화하거나 비활성화할 수 있습니다. S3 버킷 키는 Amazon S3에서 AWS KMS로 가는 요청 트래픽을 줄여 AWS Key Management Service(AWS KMS)(SSE-KMS)를 사용한 서버 측 암호화 비용을 절감합니다. 자세한 내용은 Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감 단원을 참조하십시오.

PUT 또는 COPY 작업을 사용하여 객체에 대한 S3 버킷 키를 구성하면 Amazon S3는 해당 객체에 대한 설정만 업데이트합니다. 대상 버킷에 대한 S3 버킷 키 설정은 변경되지 않습니다. KMS로 암호화된 객체에 대한 PUT 또는 COPY 요청을 S3 버킷 키가 활성화된 버킷에 제출하면, 요청 헤더에서 키를 비활성화하지 않은 한 객체 수준 작업에서 자동으로 S3 버킷 키를 사용합니다. 객체에 S3 버킷 키를 지정하지 않으면 Amazon S3가 대상 버킷에 대한 S3 버킷 키 설정을 객체에 적용합니다.

사전 조건:

S3 버킷 키를 사용하도록 객체를 구성하기 전에 S3 버킷 키를 사용 설정하기 전에 유의할 변경 사항을(를) 검토하십시오.

Amazon S3 배치 작업

기존 Amazon S3 객체를 암호화하기 위해 Amazon S3 배치 작업을 사용할 수 있습니다. 작업할 객체 목록을 S3 배치 작업에 제공하면 배치 작업은 각각의 API를 호출하여 지정된 작업을 수행합니다.

S3 배치 작업 복사 작업을 사용하여 암호화되지 않은 기존 객체를 복사하고 암호화된 새로운 객체를 동일한 버킷에 작성할 수 있습니다. 단일 배치 작업 건으로 수십억 개의 객체에서 지정된 작업을 수행할 수 있습니다. 자세한 내용은 Amazon S3 객체에 대한 대규모 배치 작업 수행Amazon S3 Batch Operations에서 객체 암호화를 참조하십시오.

REST API 사용

SSE-KMS를 사용하면 다음 API 작업을 사용하여 객체에 대해 S3 버킷 키를 활성화할 수 있습니다.

  • PutObject – 객체를 업로드하면 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 지정하여 객체 레벨에서 S3 버킷 키를 사용 설정하거나 사용 중지할 수 있습니다.

  • CopyObject – 객체를 복사하고 SSE-KMS를 구성하면 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 지정하여 객체에 대한 S3 버킷 키를 사용 설정하거나 사용 중지할 수 있습니다.

  • Post Object – POST 작업을 사용하여 객체를 업로드하고 SSE-KMS를 구성하면 x-amz-server-side-encryption-bucket-key-enabled 양식 필드를 사용하여 객체에 대한 S3 버킷 키를 활성화하거나 비활성화할 수 있습니다.

  • CreateMultipartUploadCreateMultipartUpload API 작업을 사용하여 대용량 객체를 업로드하고 SSE-KMS를 구성하면 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 사용하여 객체에 대한 S3 버킷 키를 활성화하거나 비활성화할 수 있습니다.

객체 수준에서 S3 버킷 키를 사용 설정하려면 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 포함합니다. SSE-KMS 및 REST API에 대한 자세한 내용은 REST API 사용 단원을 참조하십시오.

Java용 AWS SDK(PutObject) 사용

다음 예제를 사용하여 AWS SDK for Java를 사용해 객체 수준에서 S3 버킷 키를 구성할 수 있습니다.

Java
AmazonS3 s3client = AmazonS3ClientBuilder.standard()     .withRegion(Regions.DEFAULT_REGION)     .build(); String bucketName = "DOC-EXAMPLE-BUCKET1"; String keyName = "key name for object"; String contents = "file contents"; PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, contents)     .withBucketKeyEnabled(true);      s3client.putObject(putObjectRequest);

AWS CLI(PutObject) 사용

다음 AWS CLI 예제를 사용하여 PutObject 요청의 일부로 객체 수준에서 S3 버킷 키를 구성할 수 있습니다.

aws s3api put-object --bucket example-s3-bucket --key object key name --server-side-encryption aws:kms --bucket-key-enabled --body filepath