

# AWS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS) 사용
<a name="UsingDSSEncryption"></a>

AWS Key Management Service(AWS KMS) 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS)를 사용하면 Amazon S3에 객체를 업로드할 때 객체에 두 계층의 암호화가 적용됩니다. DSSE-KMS를 사용하면 데이터에 다중 계층 암호화를 적용하고 암호화 키를 완전하게 제어할 것을 요구하는 규정 준수 표준을 보다 쉽게 충족할 수 있습니다.

DSSE-KMS의 '이중'은 다음과 같이 데이터에 적용되는 AES-256 암호화의 독립 계층 2개를 나타냅니다.
+ *첫 번째 계층:* AWS KMS에서 생성된 고유 데이터 암호화 키(DEK)를 사용하여 데이터가 암호화됨
+ *두 번째 계층:* 이미 암호화된 데이터는 Amazon S3에서 관리하는 별도의 AES-256 암호화 키를 사용하여 다시 암호화됨

이는 단일 암호화 계층만 적용하는 표준 SSE-KMS와 다릅니다. 이중 계층 접근 방식은 한 암호화 계층이 손상되더라도 데이터가 두 번째 계층으로 보호되도록 하여 보안을 강화합니다. 이 추가 보안으로 인해 처리 오버헤드 및 AWS KMS API 직접 호출이 증가하며, 표준 SSE-KMS보다 비용이 높아지게 됩니다. 자세한 내용은 AWS Key Management Service 개발자 가이드의 [AWS KMS key 개념](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) 및 [AWS KMS 요금](https://aws.amazon.com/kms/pricing) 섹션을 참조하세요.

Amazon S3 버킷에 DSSE-KMS를 사용할 때 AWS KMS 키는 버킷과 동일한 리전에 있어야 합니다. 또한, 객체에 DSSE-KMS를 요청하면 객체 메타데이터의 일부인 S3 체크섬이 암호화된 형식으로 저장됩니다. 체크섬에 대한 자세한 내용은 [Amazon S3에서 객체 무결성 확인](checking-object-integrity.md) 섹션을 참조하십시오.

**참고**  
S3 버킷 키는 DSSE-KMS에서 지원되지 않습니다.

DSSE-KMS와 표준 SSE-KMS의 주요 차이점은 다음과 같습니다.
+ **암호화 계층:** DSSE-KMS는 AES-256 암호화의 독립 계층 2개를 적용하는 반면, 표준 SSE-KMS는 계층 1개를 적용
+ **보안:** DSSE-KMS는 잠재적 암호화 취약성에 대한 향상된 보호를 제공
+ **규정 준수:** DSSE-KMS는 다중 계층 암호화를 요구하는 규제 요구 사항을 충족하는 데 도움이 됨
+ **성능:** 추가 암호화 처리로 인해 DSSE-KMS의 지연 시간이 약간 더 김
+ **비용:** DSSE-KMS는 컴퓨팅 오버헤드 증가 및 추가 AWS KMS 작업으로 인해 더 많은 요금이 발생

**AWS KMS keys를 사용한 이중 계층 서버 측 암호화(DSSE-KMS) 요구**  
특정 Amazon S3 버킷의 모든 객체에 대한 이중 계층 서버 측 암호화를 요구하려면 버킷 정책을 사용하면 됩니다. 예를 들어, 다음 버킷 정책은 요청에 DSSE-KMS를 사용한 서버 측 암호화를 요청하는 `x-amz-server-side-encryption` 헤더가 포함되지 않을 경우 모든 사용자에게 객체 업로드(`s3:PutObject`) 권한을 거부합니다.

------
#### [ JSON ]

****  

```
{
             "Version":"2012-10-17",		 	 	 
             "Id": "PutObjectPolicy",
             "Statement": [{
                   "Sid": "DenyUnEncryptedObjectUploads",
                   "Effect": "Deny",
                   "Principal": {
                       "AWS": "arn:aws:iam::{{111122223333}}:root"
                   },
                   "Action": "s3:PutObject",
                   "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*",
                   "Condition": {
                      "StringNotEquals": {
                         "s3:x-amz-server-side-encryption": "aws:kms:dsse"
                      }
                   }
                }
             ]
          }
```

------

**Topics**
+ [AWS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS) 지정](specifying-dsse-encryption.md)