REST API を使用したお客様が用意した暗号化キーによるサーバー側の暗号化の指定 - Amazon Simple Storage Service

REST API を使用したお客様が用意した暗号化キーによるサーバー側の暗号化の指定

REST API を使用したオブジェクトの作成時に、お客様が用意した暗号化キー (SSE-C) を使用してサーバー側の暗号化を指定できます。SSE-C を使用する場合は、次のリクエストヘッダーを使用して暗号化キー情報を指定する必要があります。

名前 説明
x-amz-server-side​-encryption​-customer-algorithm

暗号化アルゴリズムを指定するには、このヘッダーを使用します。ヘッダーの値は "AES256" である必要があります。

x-amz-server-side​-encryption​-customer-key

Amazon S3 でデータを暗号化または復号するために使用する base64 でエンコードされた 256 ビットの暗号化キーを指定するには、このヘッダーを使用します。

x-amz-server-side​-encryption​-customer-key-MD5

RFC 1321 に従って、暗号化キーの base64 エンコードされた 128 ビット MD5 ダイジェストを指定するには、このヘッダーを使用します。Amazon S3 では、このヘッダーを使用してメッセージの整合性を調べて、送信された暗号化キーにエラーがないことを確認します。

AWS SDK ラッパーライブラリを使用して、これらのヘッダーをリクエストに追加できます。必要に応じて、アプリケーションから直接 Amazon S3 REST API を呼び出すことができます。

注記

Amazon S3 コンソールを使用してオブジェクトをアップロードし、SSE-C をリクエストすることはできません。また、コンソールを使用して、SSE-C を使用して保存されている既存のオブジェクトを更新すること (ストレージクラスの変更やメタデータの追加など) もできません。

SSE-C をサポートする Amazon S3 REST API

次の Amazon S3 API は、お客様が用意した暗号化キー (SSE-C) を使用したサーバー側の暗号化をサポートします。

  • GET オペレーション — GET API (GET Object を参照) を使用してオブジェクトを取得するときに、このリクエストヘッダーを指定できます。SSE-C を使用して暗号化されたオブジェクトについては、Torrent はサポートされていません。

  • HEAD オペレーション — HEAD API (HEAD Object を参照) を使用してオブジェクトメタデータを取得するには、これらのリクエストヘッダーを指定できます。

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

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

    パートのアップロード - コピー)

    ).各パートのアップロードリクエストでは、暗号化情報がマルチパートアップロードの開始リクエストで指定した情報と同じである必要があります。

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

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

    • AWS 管理のキーによるサーバー側の暗号化を使用してターゲットオブジェクトを暗号化する場合は、x-amz-server-side​-encryption リクエストヘッダーを指定する必要があります。

    • SSE-C を使用してターゲットオブジェクトを暗号化する場合は、前の表で説明した 3 つのヘッダーを使用して暗号化情報を指定する必要があります。

    • ソースオブジェクトが SSE-C を使用して暗号化されている場合、Amazon S3 でオブジェクトを復号してコピーできるように、次のヘッダーを使用して暗号化キーの情報を指定する必要があります。

      名前 説明
      x-amz-copy-source​-server-side​-encryption​-customer-algorithm

      Amazon S3 でソースオブジェクトを復号するために使用するアルゴリズムを指定するには、このヘッダーを含めます。この値は、AES256 である必要があります。

      x-amz-copy-source​-server-side​-encryption​-customer-key

      Amazon S3 でソースオブジェクトを復号するために使用する base64 でエンコードされた暗号化キーを指定するには、このヘッダーを含めます。この暗号化キーは、Amazon S3 でソースオブジェクトを作成したときに指定したキーであることが必要です。それ以外の場合、Amazon S3 でオブジェクトを復号できません。

      x-amz-copy-source-​server-side​-encryption​-customer-key-MD5

      RFC 1321 に従って、暗号化キーの base64 エンコードされた 128 ビット MD5 ダイジェストを指定するには、このヘッダーを含めます。

署名済み URL および SSE-C

新しいオブジェクトのアップロード、既存のオブジェクトやオブジェクトメタデータの取得などのオペレーションに使用できる署名済み URL を生成できます。署名済み URL では、次のように SSE-C がサポートされます。

  • 署名済み URL を作成するときに、署名の計算で x-amz-server-side​-encryption​-customer-algorithm を使用してアルゴリズムを指定する必要があります。

  • 署名済み URL を使用して新しいオブジェクトをアップロードするとき、既存のオブジェクトを取得するとき、またはオブジェクトメタデータのみを取得するときに、クライアントアプリケーションですべての暗号化ヘッダーを指定する必要があります。

    注記

    SSE-C 以外のオブジェクトでは、署名付き URL を生成し、それをブラウザに直接貼り付けることで、たとえばデータにアクセスできます。

    ただし、これは SSE-C オブジェクトには当てはまりません。署名付き URL に加えて SSE-C オブジェクトに固有の HTTP ヘッダーも含める必要があります。したがって、SSE-C オブジェクトの署名付き URL はプログラムでのみ使用できます。

詳細情報