

# AWS KMS キーによる二層式サーバー側の暗号化 (DSSE-KMS) の使用
<a name="UsingDSSEncryption"></a>

AWS Key Management Service (AWS KMS) キーによる二層式サーバー側の暗号化 (DSSE-KMS) を使用すると、オブジェクトが Amazon S3 にアップロードされるときに 2 つの暗号化レイヤーが適用されます。DSSE-KMS を使用すると、データに多層暗号化を適用し、暗号化キーを完全に制御する必要があるコンプライアンス基準をより簡単に満たすことができます。

DSSE-KMS の「デュアル」とは、データに適用される 2 つの独立した AES-256 暗号化レイヤーを指します。
+ *1 番目のレイヤー:* データは、AWS KMS によって生成された一意のデータ暗号化キー (DEK) を使用して暗号化されます。
+ *2 番目のレイヤー:* 既に暗号化されたデータは、Amazon S3 によって管理される別の AES-256 暗号化キーを使用して再度暗号化されます。

これは、単一の暗号化レイヤーのみを適用する標準の SSE-KMS とは異なります。デュアルレイヤーアプローチは、1 番目の暗号化レイヤーが侵害された場合でも、データが 2 番目のレイヤーによって保護され続けるようにすることで、セキュリティを強化します。この追加のセキュリティでは、処理オーバーヘッドと AWS KMS API コールが増加し、標準 SSE-KMS と比較してコストが高くなります。DSSE-KMS 料金の詳細については、「AWS Key Management Service デベロッパーガイド」の「[AWS KMS key concepts](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)」と「[AWS KMS の料金](https://aws.amazon.com/kms/pricing)」を参照してください。

S3 バケットで DSSE−KMS を使用する場合、AWS KMS キーはバケットと同じリージョンに存在する必要があります。また、オブジェクトに対して DSSE-KMS がリクエストされると、オブジェクトのメタデータの一部である S3 チェックサムが暗号化された形式で保存されます。チェックサムの詳細については、「[Amazon S3 でのオブジェクトの整合性のチェック](checking-object-integrity.md)」を参照してください。

**注記**  
S3 バケットキーは DSSE-KMS ではサポートされていません。

DSSE-KMS と標準 SSE-KMS の主な違いは次のとおりです。
+ **暗号化レイヤー:** DSSE-KMS は 2 つの独立した AES-256 暗号化レイヤーを適用し、標準の 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)