メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

Amazon S3 で管理された暗号化キーによるサーバー側の暗号化 (SSE-S3) を使用したデータの保護

サーバー側の暗号化は、保管時のデータ保護に関するものです。Amazon S3 で管理された暗号化キーを使用したサーバー側の暗号化(SSE-S3)では、強力な多要素暗号化を採用しています。Amazon S3 は各オブジェクトを一意のキーで暗号化します。さらにセキュリティを強化するために、キー自体が、定期的に更新されるマスターキーで暗号化されます。Amazon S3 のサーバー側の暗号化では、最強のブロック暗号の一つである、256 ビットの高度暗号化規格 (AES-256) を使用してデータを暗号化します。

Amazon S3 では、バケットに保存するすべてのオブジェクトに対してサーバー側の暗号化を必要とする場合は、バケットポリシーを使用できます。例えば、次のバケットポリシーは、サーバー側の暗号化を要求する x-amz-server-side-encryption ヘッダーがリクエストに含まれない場合に、すべての人に対してオブジェクトのアップロード(s3:PutObject)許可を拒否します。

Copy
{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [ { "Sid": "DenyIncorrectEncryptionHeader", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::YourBucket/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } }, { "Sid": "DenyUnEncryptedObjectUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::YourBucket/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption": "true" } } } ] }

サーバー側の暗号化では、オブジェクトデータのみが暗号化されます。オブジェクトメタデータは暗号化されません。

サーバー側の暗号化での API サポート

オブジェクト作成の REST API(「REST API を使用したサーバー側の暗号化の指定」を参照)は、x-amz-server-side-encryption というリクエストヘッダーを提供します。これを使用してサーバー側の暗号化を要求できます。

以下の Amazon S3 API でこれらのヘッダーがサポートされています。

  • PUT オペレーション – PUT API(「PUT Object」を参照)を使用してデータをアップロードするときに、これらのリクエストヘッダーを指定できます。

  • マルチパートアップロードの開始 – マルチパートアップロード API を使用して大きいオブジェクトをアップロードするときに、これらのヘッダーを指定できます。これらのヘッダーは、開始リクエストで指定します(「マルチパートアップロードの開始」を参照)。

  • POST オペレーション – POST オペレーションを使用してオブジェクトをアップロードする場合は(「POST Object」を参照)、リクエストヘッダーの代わりに、フォームフィールドで同じ情報を指定します。

  • COPY オペレーション – オブジェクトをコピーする場合は(「PUT Object - Copy」を参照)、ソースオブジェクトとターゲットオブジェクトがあります。

AWS SDK にも、サーバー側の暗号化を要求するためのラッパー API があります。また、AWS マネジメントコンソール を使用して、オブジェクトをアップロードしてサーバー側の暗号化を要求することもできます。

注記

署名付き URLs を使って更新されたオブジェクトでは、このオブジェクトが SSE-S3 で暗号化するかどうかを強要することはできません。 これは、AWS マネジメントコンソールあるいは HTTP リクエストヘッダーを使用する場合に限りサーバーサイドの暗号化の特定ができることによります。詳細については、「ポリシーでの条件の指定」を参照してください。