

# 기본 암호화 구성
<a name="default-bucket-encryption"></a>

**중요**  
이제 Amazon S3가 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)를 Amazon S3 내 모든 버킷 암호화의 기본 수준으로 적용합니다. 2023년 1월 5일부터 Amazon S3로의 모든 새 객체 업로드는 추가 비용 없이 성능에 영향을 미치지 않고 자동으로 암호화됩니다. S3 버킷 기본 암호화 구성에 및 신규 객체 업로드에 대한 자동 암호화 상태는 CloudTrail 로그, S3 인벤토리, S3 Storage Lens, Amazon S3 콘솔에서 사용할 수 있으며, AWS CLI 및 AWS SDK에서 추가 Amazon S3 API 응답 헤더로도 사용할 수 있습니다. 자세한 내용은 [기본 암호화 관련 FAQ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html)를 참조하십시오.

Amazon S3 버킷에는 기본적으로 버킷 암호화가 활성화되어 있으며, 새로운 객체는 Amazon S3 관리형 키(SSE-S3)를 통한 서버 측 암호화를 사용하여 자동으로 암호화됩니다. 이 암호화는 Amazon S3 버킷의 모든 새 객체에 적용되며 무료로 제공됩니다.

키 교체 및 액세스 정책 권한 부여 관리와 같이 암호화 키를 더 세밀하게 제어해야 하는 경우 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS) 또는 AWS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS)를 사용하는 방법도 있습니다. SSE-KMS에 대한 자세한 내용은 [AWS KMS(SSE-KMS)를 사용한 서버 측 암호화 지정](specifying-kms-encryption.md) 단원을 참조하십시오. DSSE-KMS에 대한 자세한 내용은 [AWS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS) 사용](UsingDSSEncryption.md) 섹션을 참조하세요.

다른 계정에서 소유한 KMS 키를 사용하려면 먼저 해당 키에 대한 사용 권한이 있어야 합니다. KMS 키의 크로스 계정 권한에 대한 자세한 내용은 **AWS Key Management Service 개발자 안내서에서 [다른 계정에서 사용할 수 있는 KMS 키 만들기](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)를 참조하십시오.

기본 버킷 암호화를 SSE-KMS로 설정하는 경우 S3 버킷 키도 설정하여 AWS KMS 요청 비용을 절감할 수 있습니다. 자세한 내용은 [Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감](bucket-key.md) 섹션을 참조하세요.

**참고**  
[PutBucketEncryption](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketEncryption.html)을 사용하여 기본 버킷 암호화를 SSE-KMS로 설정하려는 경우 KMS 키 ID가 올바른지 확인해야 합니다. Amazon S3는 PutBucketEncryption 요청에 제공된 KMS 키 ID를 검증하지 않습니다.

S3 버킷의 기본 암호화 사용에 대한 추가 비용은 없습니다. 기본 암호화 동작을 구성하도록 요청할 경우 표준 Amazon S3 요청 요금이 발생합니다. 요금에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하십시오. SSE-KMS 및 DSSE-KMS의 경우 AWS KMS 요금이 적용됩니다. 요금은 [AWS KMS 요금](https://aws.amazon.com/kms/pricing/)에 나와 있습니다.

고객 제공 암호화 키(SSE-C)를 통한 서버 측 암호화는 기본 암호화로 지원되지 않습니다.

Amazon S3 콘솔, AWS SDK, Amazon S3 REST API 및 AWS Command Line Interface(AWS CLI)를 사용하여 S3 버킷에 대한 Amazon S3 기본 암호화를 구성할 수 있습니다.

**기본 암호화를 사용 설정하기 전에 유의할 변경 사항**  
버킷에 대한 기본 암호화를 사용 설정한 후에는 다음 암호화 동작이 적용됩니다.
+ 기본 암호화가 사용 설정되기 전에 버킷에 있었던 객체의 암호화는 변경되지 않습니다.
+ 기본 암호화를 사용 설정한 후 객체를 업로드하는 경우:
  + `PUT` 요청 헤더에 암호화 정보가 포함되지 않는 경우 Amazon S3는 버킷의 기본 암호화 설정을 사용하여 객체를 암호화합니다.
  + `PUT` 요청 헤더에 암호화 정보가 포함되는 경우 Amazon S3는 객체를 Amazon S3에 저장하기 전에 `PUT` 요청의 암호화 정보를 사용하여 객체를 암호화합니다.
+ 기본 암호화 구성으로 SSE-KMS 또는 DSSE-KMS 옵션을 사용할 경우 AWS KMS의 초당 요청 수(RPS) 할당량이 적용됩니다. AWS KMS 할당량과 할당량 증대를 요청하는 방법에 대한 자세한 내용은 **AWS Key Management Service 개발자 안내서의 [할당량](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)을 참조하세요.

**참고**  
기본 암호화가 활성화되기 전에 업로드된 객체는 암호화되지 않습니다. 기존 객체 암호화에 대한 자세한 내용은 [Amazon S3 버킷에 대한 기본 서버 측 암호화 동작 설정](bucket-encryption.md) 섹션을 참조하세요.

## S3 콘솔 사용
<a name="bucket-encryption-how-to-set-up-console"></a>

**Amazon S3 버킷에 대해 기본 암호화를 구성하는 방법**

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

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

1. **버킷(Buckets)** 목록에서 원하는 버킷의 이름을 선택합니다.

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

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

1. 암호화를 구성하려면 **암호화 유형**에서 다음 중 하나를 선택합니다.
   + **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)**
   + **AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KMS)**
   + **AWS Key Management Service 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS)**
**중요**  
기본 암호화 구성으로 SSE-KMS 또는 DSSE-KMS 옵션을 사용할 경우 AWS KMS의 초당 요청 수(RPS) 할당량이 적용됩니다. AWS KMS 할당량과 할당량 증대를 요청하는 방법에 대한 자세한 내용은 **AWS Key Management Service 개발자 안내서의 [할당량](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)을 참조하십시오.

   버킷에 다른 유형의 기본 암호화를 지정하지 않으면 버킷과 새 객체는 기본적으로 SSE-S3로 암호화됩니다. 기본 암호화에 대한 자세한 내용은 [Amazon S3 버킷에 대한 기본 서버 측 암호화 동작 설정](bucket-encryption.md) 섹션을 참조하십시오.

   Amazon S3 서버 측 암호화를 사용하는 데이터 암호화에 대한 자세한 내용은 [Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3) 사용](UsingServerSideEncryption.md) 섹션을 참조하십시오.

1. **AWS Key Management Service키를 사용한 서버 측 암호화(SSE-KMS)** 또는 **AWS Key Management Service 키를 사용한 이중 계층 서버 측 암호화(DSSE-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)을 참조하십시오.
**중요**  
버킷과 동일한 AWS 리전에서 사용되는 KMS 키만 사용할 수 있습니다. **KMS 키에서 선택(Choose from your KMS keys)**을 선택하면 S3 콘솔에는 KMS 키가 리전당 100개씩만 나열됩니다. 동일한 리전에 100개 이상의 KMS 키가 있는 경우, S3 콘솔에서 처음 100개의 KMS 키만 볼 수 있습니다. 콘솔에 나열되지 않은 KMS 키를 사용하려면 **AWS KMS key ARN 입력**을 선택하고 KMS 키 ARN을 입력합니다.  
Amazon S3에서 서버 측 암호화에 AWS KMS key을 사용하는 경우 대칭 암호화 KMS 키를 선택해야 합니다. Amazon S3는 대칭 암호화 KMS 키만 지원합니다. 이들 키에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [대칭 암호화 KMS 키](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks)를 참조하세요.

      Amazon S3에서 SSE-KMS를 사용하는 방법에 대한 자세한 내용은 [AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS) 사용](UsingKMSEncryption.md) 섹션을 참조하세요. DSSE-KMS 사용에 대한 자세한 내용은 [AWS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS) 사용](UsingDSSEncryption.md) 섹션을 참조하세요.

   1. SSE-KMS와 함께 기본 암호화를 사용하도록 버킷을 구성할 때 S3 버킷 키도 활성화할 수 있습니다. S3 버킷 키를 사용하면 Amazon S3에서 AWS KMS로의 요청 트래픽이 줄어 암호화 비용이 절감됩니다. 자세한 내용은 [Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감](bucket-key.md) 섹션을 참조하세요.

      S3 버킷 키를 사용하려면 [**버킷 키(Bucket Key)**]에서 [**사용(Enable)**]을 선택합니다.
**참고**  
S3 버킷 키는 DSSE-KMS에서 지원되지 않습니다.

1. **변경 사항 저장**을 선택합니다.

## AWS CLI 사용
<a name="default-bucket-encryption-cli"></a>

다음 예시에서는 SSE-S3를 사용하거나 S3 버킷 키와 함께 SSE-KMS를 사용하여 기본 암호화를 구성하는 방법을 보여줍니다.

기본 암호화에 대한 자세한 내용은 [Amazon S3 버킷에 대한 기본 서버 측 암호화 동작 설정](bucket-encryption.md) 섹션을 참조하세요. AWS CLI를 사용하여 기본 암호화를 구성하는 방법에 대한 자세한 내용은 [put-bucket-encryption](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-encryption.html)을 참조하세요.

**Example – SSE-S3를 사용한 기본 암호화**  
이 예시에서는 Amazon S3 관리형 키를 사용하여 기본 버킷 암호화를 구성합니다.  

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
    "Rules": [
        {
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            }
        }
    ]
}'
```

**Example - S3 버킷 키와 SSE-KMS를 사용한 기본 암호화**  
이 예제에서는 S3 버킷 키와 SSE-KMS를 사용하여 기본 버킷 암호화를 구성합니다.  

```
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
            }
        ]
    }'
```

## REST API 사용
<a name="bucket-encryption-how-to-set-up-api"></a>

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

자세한 내용은 *Amazon Simple Storage Service API 참조*에서 [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html)를 참조하세요.