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

S3 バケットの Amazon S3 デフォルト暗号化

Amazon S3 のデフォルトの暗号化により、S3 バケットのデフォルト暗号化の動作を設定できます。バケットにデフォルト暗号化を設定して、バケットに保存される際すべてのオブジェクトが暗号化されるようにします。オブジェクトは、Amazon S3 で管理されたキー (SSE-S3) または AWS KMS で管理されたキー (SSE-KMS) のいずれかで、サーバー側の暗号化を使用して暗号化されます。

サーバー側の暗号化を使用すると、Amazon S3 はオブジェクトをデータセンター内のディスクに保存する前に暗号化し、オブジェクトをダウンロードするときに復号します。サーバー側の暗号化および暗号化キー管理を使用したデータ保護の詳細については、暗号化を使用したデータの保護 を参照してください。

デフォルト暗号化は、すべての既存および新規の S3 バケットに対して動作します。デフォルト暗号化を使用しない場合、バケットに保存されたすべてのオブジェクトを暗号化するには、すべてのオブジェクトストレージのリクエストに暗号化情報を含める必要があります。S3 バケットポリシーを設定して、暗号化情報が含まれていないストレージリクエストを拒否する必要もあります。

S3 バケットに対するデフォルト暗号化の使用に追加料金はかかりません。デフォルトの暗号化機能を設定するためのリクエストには、標準 Amazon S3 リクエスト料金がかかります。料金については、Amazon S3 料金表を参照してください。SSE-KMS 暗号化キーストレージの場合は、AWS Key Management Service の料金が適用され、AWS KMS 料金表に表示されます。

S3 バケットの Amazon S3 デフォルト暗号化を設定する方法

このセクションでは、Amazon S3 デフォルト暗号化を設定する方法について説明します。AWS SDK、Amazon S3 REST API、AWS Command Line Interface (AWS CLI)、または Amazon S3 コンソールを使用して、デフォルト暗号化を有効にできます。S3 バケットに対してデフォルト暗号化を設定する最も簡単な方法は、AWS マネジメントコンソール を使用することです。

次のいずれかの方法を使用して、デフォルト暗号化をバケットに設定することができます。

  • Amazon S3 コンソールを使用します。詳細については、「S3 バケットを作成する方法」を参照してください。」(Amazon Simple Storage Service コンソールユーザーガイド) を参照してください。

  • 次の REST API を使用します。

    • REST API の PUT Bucket encryption オペレーションを使用して、デフォルト暗号化を有効にし、使用するサーバー側の暗号化のタイプ — SSE-S3 または SSE-KMS を設定します。

    • REST API の DELETE Bucket encryption を使用して、オブジェクトのデフォルト暗号化を無効にします。デフォルト暗号化を無効にすると、Amazon S3 は PUT リクエストに暗号化情報が含まれる場合にのみオブジェクトを暗号化します。詳細については、「PUT Object」および「PUT Object - Copy」を参照してください。

    • REST API の GET Bucket encryption を使用して、現在のデフォルト暗号化の設定を確認します。

  • AWS CLI および AWS SDK を使用します。詳細については、「AWS SDK、CLI、Explorer の使用」を参照してください。

バケットのデフォルトの暗号化を有効にすると、以下の暗号化動作が適用されます。

  • デフォルト暗号化が有効にされる前にバケットに存在していたオブジェクトの暗号化は、変更されません。

  • デフォルト暗号化を有効にした後、オブジェクトをアップロードするとします。

    • PUT リクエストヘッダーに暗号化情報が含まれていない場合、Amazon S3 はオブジェクトを暗号化するために、バケットのデフォルトの暗号化設定を使用します。

    • PUT リクエストヘッダーに暗号化情報が含まれている場合、Amazon S3 は PUT リクエストの暗号化情報を使用してオブジェクトを Amazon S3 に保存する前に暗号化します。PUT が成功した場合、レスポンスはレスポンスヘッダーに暗号化情報を使用した HTTP/1.1 200 OK になります。詳細については、「PUT Object」を参照してください。

  • デフォルト暗号化設定に SSE-KMS オプションを使用する場合、AWS KMS の RPS (1 秒あたりのリクエスト) 制限が適用されます。AWS KMS の制限と、制限の引き上げを申請する方法の詳細については、「AWS KMS の制限」を参照してください。

バケットポリシーの使用からデフォルト暗号化への暗号化実施の移行

現在 S3 バケットに対するオブジェクト暗号化をバケットポリシーを使用して実施し、暗号化ヘッダーのない PUT リクエストを拒否している場合、以下の手順を実行してデフォルト暗号化の使用を開始することをお勧めします。

暗号化ヘッダーのない PUT リクエストを拒否するため、バケットポリシーの使用からデフォルト暗号化の使用に変更

  1. デフォルト暗号化が SSE-KMS を使用するよう指定する場合、PUT および GET のオブジェクトリクエストがすべて署名バージョン 4 を使用して署名されていることと、Amazon S3 に SSL 接続で送信されていることを確認してください。AWS KMS の使用の詳細については、「AWS KMS で管理されたキーによるサーバー側の暗号化 (SSE-KMS) を使用したデータの保護」を参照してください。

    注記

    デフォルトでは、Amazon S3 コンソール、AWS CLI バージョン 1.11.108 以降、および 2016 年 5 月以降にリリースされたすべての AWS SDK は、署名バージョン 4 を使用して署名されたリクエストを使用して、SSL 接続で Amazon S3 に送信されます。

  2. 暗号化ヘッダーのない PUT リクエストを拒否するバケットポリシーステートメントを削除します。(置き換えられるバケットポリシーのバックアップコピーを保存することをお勧めします。)

  3. 暗号化動作が設定通りか確認するには、複数の PUT リクエストをテストして、実際のワークロードを正確にシミュレートします。

  4. SSE-KMS でデフォルト暗号化を使用している場合、クライアントの変更前には失敗していなかった PUTGET リクエストの失敗を監視します。ほとんどの場合、これらはステップ 1 に従って更新しなかったリクエストです。失敗した PUT または GET リクエストが、AWS 署名バージョン 4 で署名され、SSL 接続で送信されるように変更します。

S3 に対するデフォルト暗号化を有効にすると、暗号化ヘッダーのない PUT リクエストを通じて Amazon S3 に保存されたオブジェクトは、バケットレベルのデフォルト暗号化設定を使用して暗号化されます。

クロスリージョンレプリケーションでのデフォルト暗号化の使用

クロスリージョンレプリケーションのレプリケーション先バケットのデフォルトの暗号化を有効にすると、以下の暗号化動作が適用されます。

  • レプリケート元バケットのオブジェクトが暗号化されていない場合、レプリケート先バケットのレプリカオブジェクトはレプリケート先バケットのデフォルトの暗号化設定を使用して暗号化されます。この結果、ソースオブジェクトの ETag はレプリカオブジェクトの ETag と異なることになります。この違いに対応するには、ETag を使用するアプリケーションを更新する必要があります。

  • レプリケート元バケットのオブジェクトが SSE-S3 または SSE-KMS を使用して暗号化されている場合、レプリケート先バケットのレプリカオブジェクトはソースオブジェクトと同じ暗号化を使用して暗号化されます。レプリケート先バケットのデフォルトの暗号化設定は使用されません。

CloudTrail および CloudWatch を使用してデフォルト暗号化をモニタリングする

AWS CloudTrail イベントを介してデフォルトの暗号化設定リクエストを追跡できます。CloudTrail ログで使用される API イベント名は PutBucketEncryptionGetBucketEncryptionDeleteBucketEncryption です。S3 バケットレベルのオペレーションで、イベントタイプとして Amazon CloudWatch Events を作成することもできます。CloudTrail イベントの詳細については、「CloudWatch データイベントで S3 バケットのオブジェクトレベルのログ記録を有効にする方法」を参照してください。

オブジェクトレベルの Amazon S3 アクションに CloudTrail ログを使用して Amazon S3 への PUT および POST リクエストを追跡し、受信 PUT リクエストに暗号化ヘッダーがないとき、デフォルト暗号化を使用してオブジェクトが暗号化されているかどうか確認できます。

デフォルトの暗号化設定を使用して Amazon S3 がオブジェクトを暗号化するとき、ログには名前と値のペアとして以下のフィールドが含まれます。"SSEApplied":"Default_SSE_S3" or "SSEApplied":"Default_SSE_KMS"

PUT の暗号化ヘッダーを使用して Amazon S3 がオブジェクトを暗号化するとき、ログには名前と値のペアとして以下のフィールドが含まれます。"SSEApplied":"SSE_S3", "SSEApplied":"SSE_KMS、または "SSEApplied":"SSE_C"マルチパートアップロードについては、この情報は InitiateMultipartUpload API リクエストに含まれています。CloudTrail および CloudWatch の使用の詳細については、「Amazon S3 のモニタリング」を参照してください。