

# 새 객체에 SSE-KMS와 함께 S3 버킷 키를 사용하도록 버킷 구성
<a name="configuring-bucket-key"></a>

AWS Key Management Service(AWS KMS) 키(SSE-KMS)를 통해 서버 측 암호화를 구성할 때 새 객체에서 SSE-KMS용 S3 버킷 키를 사용하도록 버킷을 구성할 수 있습니다. S3 버킷 키는 Amazon S3에서 AWS KMS로 가는 요청 트래픽을 줄이고 SSE-KMS 비용을 절감합니다. 자세한 내용은 [Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감](bucket-key.md) 섹션을 참조하세요.

Amazon S3 콘솔, REST API, AWS SDK, AWS Command Line Interface(AWS CLI) 또는 CloudFormation을 사용하여 새 객체에 SSE-KMS용 S3 버킷 키를 사용하도록 버킷을 구성할 수 있습니다. 기존 객체에 대해 S3 버킷 키를 사용하거나 사용 중지하려는 경우 `CopyObject` 작업을 사용할 수 있습니다. 자세한 내용은 [객체 수준에서 S3 버킷 키 구성](configuring-bucket-key-object.md) 및 [Batch Operations를 사용하여 SSE-KMS용 S3 버킷 키 활성화](batch-ops-copy-example-bucket-key.md) 섹션을 참조하십시오.

원본 또는 대상 버킷에 대해 S3 버킷 키가 사용 설정되면 암호화 컨텍스트는 객체 ARN이 아니라 버킷 Amazon 리소스 이름(ARN)이 됩니다. 예: `arn:aws:s3:::bucket_ARN`. 암호화 컨텍스트에 버킷 ARN을 사용하려면 IAM 정책을 업데이트해야 합니다. 자세한 내용은 [S3 버킷 키 및 복제](replication-config-for-kms-objects.md#bk-replication) 섹션을 참조하세요.

다음 예에서는 S3 버킷 키가 복제와 함께 작동하는 방식을 보여 줍니다. 자세한 내용은 [암호화(SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)된 객체 복제](replication-config-for-kms-objects.md) 섹션을 참조하세요. 

**사전 조건**  
S3 버킷 키를 사용하도록 버킷을 구성하기 전에 [S3 버킷 키를 사용 설정하기 전에 유의할 변경 사항](bucket-key.md#bucket-key-changes)을(를) 검토하십시오.

**Topics**

## S3 콘솔 사용
<a name="enable-bucket-key"></a>

S3 콘솔에서 새 버킷 또는 기존 버킷에 대해 S3 버킷 키를 사용 설정하거나 사용 중지할 수 있습니다. S3 콘솔의 객체는 버킷 구성에서 S3 버킷 키 설정을 상속합니다. 버킷에 대해 S3 버킷 키를 활성화하면 버킷에 업로드하는 새 객체는 SSE-KMS용 S3 버킷 키를 사용합니다.

**S3 버킷 키가 사용 설정된 버킷의 객체 업로드, 복사 또는 수정**  
S3 버킷 키가 활성화된 버킷의 객체를 업로드, 수정 또는 복사하는 경우 해당 객체에 대한 S3 버킷 키 설정이 버킷 구성에 맞게 업데이트될 수 있습니다.

객체에 이미 S3 버킷 키가 사용 설정되어 있으면 객체를 복사하거나 수정할 때 해당 객체에 대한 S3 버킷 키 설정이 변경되지 않습니다. 그러나 S3 버킷 키가 사용 설정되지 않은 객체를 수정하거나 복사하고 대상 버킷에 S3 버킷 키 구성이 있으면 객체는 대상 버킷의 S3 버킷 키 설정을 상속합니다. 예를 들어, 소스 객체에 S3 버킷 키가 활성화되어 있지 않지만 대상 버킷에 S3 버킷 키가 활성화되어 있으면 객체에 대해 S3 버킷 키가 활성화됩니다.

**새 버킷을 생성할 때 S3 버킷 키 사용 설정**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **버킷(Buckets)**을 선택합니다.

1. **버킷 만들기**를 선택합니다.

1. 버킷 이름을 입력하고 AWS 리전을 선택합니다.

1. **기본 암호화**의 **암호화 키 유형**에서 **AWS Key Management Service 키(SSE-KMS)**를 선택합니다.

1. **AWS KMS 키**에서 다음 중 하나를 수행하여 KMS 키를 선택합니다.
   + 사용 가능한 KMS 키 목록에서 **AWS KMS keys 중에서 선택**을 선택한 다음, 사용 가능한 키 목록에서 **KMS 키**를 선택합니다.

     AWS 관리형 키(`aws/s3`)와 고객 관리형 키가 모두 목록에 표시됩니다. 고객 관리형 키에 대한 자세한 내용은 *AWS Key Management Service* 개발자 안내서의 [ 고객 키 및 AWS 키](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)를 참조하십시오.
   + KMS 키 ARN을 입력하려면 **AWS KMS key ARN 입력**을 선택하고 나타나는 필드에 KMS 키 ARN을 입력합니다.
   + AWS KMS 콘솔에서 고객 관리형 키를 생성하려면 **KMS 키 생성**을 선택합니다.

     AWS KMS key 생성에 대한 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [키 생성](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)을 참조하십시오.

1. **버킷 키(Bucket Key)**에서 **사용(Enable)**을 선택합니다.

1. **버킷 만들기**를 선택합니다.

   Amazon S3는 S3 버킷 키가 사용 설정된 버킷을 생성합니다. 버킷에 업로드하는 새 객체는 S3 버킷 키를 사용합니다. 

   S3 버킷 키를 사용 중지하려면 이전 단계를 따르고 **사용 중지(Disable)**를 선택합니다.

**기존 버킷에 대해 S3 버킷 키 사용 설정**

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **버킷**을 선택합니다.

1. **버킷(Buckets)** 목록에서 S3 버킷 키를 사용 설정할 버킷을 선택합니다.

1. **속성** 탭을 선택합니다.

1. **기본 암호화**에서 **편집**을 선택합니다.

1. **기본 암호화**의 **암호화 키 유형**에서 **AWS Key Management Service 키(SSE-KMS)**를 선택합니다.

1. **AWS KMS 키**에서 다음 중 하나를 수행하여 KMS 키를 선택합니다.
   + 사용 가능한 KMS 키 목록에서 **AWS KMS keys 중에서 선택**을 선택한 다음, 사용 가능한 키 목록에서 **KMS 키**를 선택합니다.

     AWS 관리형 키(`aws/s3`)와 고객 관리형 키가 모두 목록에 표시됩니다. 고객 관리형 키에 대한 자세한 내용은 *AWS Key Management Service* 개발자 안내서의 [ 고객 키 및 AWS 키](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)를 참조하십시오.
   + KMS 키 ARN을 입력하려면 **AWS KMS key ARN 입력**을 선택하고 나타나는 필드에 KMS 키 ARN을 입력합니다.
   + AWS KMS 콘솔에서 고객 관리형 키를 생성하려면 **KMS 키 생성**을 선택합니다.

     AWS KMS key 생성에 대한 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [키 생성](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)을 참조하십시오.

1. **버킷 키(Bucket Key)**에서 **사용(Enable)**을 선택합니다.

1. [**변경 사항 저장(Save changes)**]을 선택합니다.

   Amazon S3는 버킷에 추가된 새 객체에 대해 S3 버킷 키를 사용 설정합니다. 기존 객체는 S3 버킷 키를 사용하지 않습니다. 기존 객체에 대해 S3 버킷 키를 구성하려면 `CopyObject` 작업을 사용하면 됩니다. 자세한 내용은 [객체 수준에서 S3 버킷 키 구성](configuring-bucket-key-object.md) 섹션을 참조하세요.

   S3 버킷 키를 사용 중지하려면 이전 단계를 따르고 **사용 중지(Disable)**를 선택합니다.

## REST API 사용
<a name="enable-bucket-key-rest"></a>

[PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)을 선택하여 버킷에 대한 S3 버킷 키를 사용하거나 사용 중지할 수 있습니다. `PutBucketEncryption`에서 S3 버킷 키를 구성하려면 [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html) 데이터 유형을 사용합니다. 여기에는 SSE-KMS를 사용하는 기본 암호화가 포함되어 있습니다. 원하면 고객 관리형 키에 대한 KMS 키 ID를 지정하여 고객 관리형 키를 사용할 수도 있습니다.  

자세한 내용과 예제 구문에 대해서는 [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)을 참조하십시오.

## Java용 AWS SDK 사용
<a name="enable-bucket-key-sdk"></a>

다음 예시에서는 AWS SDK for Java를 사용하여 SSE-KMS 및 S3 버킷 키로 기본 버킷 암호화를 사용합니다.

------
#### [ Java ]

```
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();
    
ServerSideEncryptionByDefault serverSideEncryptionByDefault = new ServerSideEncryptionByDefault()
    .withSSEAlgorithm(SSEAlgorithm.KMS);
ServerSideEncryptionRule rule = new ServerSideEncryptionRule()
    .withApplyServerSideEncryptionByDefault(serverSideEncryptionByDefault)
    .withBucketKeyEnabled(true);
ServerSideEncryptionConfiguration serverSideEncryptionConfiguration =
    new ServerSideEncryptionConfiguration().withRules(Collections.singleton(rule));

SetBucketEncryptionRequest setBucketEncryptionRequest = new SetBucketEncryptionRequest()
    .withServerSideEncryptionConfiguration(serverSideEncryptionConfiguration)
    .withBucketName(bucketName);
            
s3client.setBucketEncryption(setBucketEncryptionRequest);
```

------

## AWS CLI 사용
<a name="enable-bucket-key-cli"></a>

다음 예시에서는 AWS CLI를 사용하여 SSE-KMS 및 S3 버킷 키로 기본 버킷 암호화를 사용합니다. `user input placeholders`를 사용자의 정보로 대체합니다.

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
        "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "KMS-Key-ARN"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'
```

## 사용CloudFormation
<a name="enable-bucket-key-cloudformation"></a>

CloudFormation을 통해 S3 버킷 키를 구성하는 방법에 대한 자세한 내용은 **AWS CloudFormation 사용 설명서의 [AWS::S3::Bucket ServerSideEncryptionRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html)을 참조하십시오.