View a markdown version of this page

お客様が指定したキーによるサーバー側の暗号化 (SSE−C) の使用 - Amazon Simple Storage Service

お客様が指定したキーによるサーバー側の暗号化 (SSE−C) の使用

サーバー側の暗号化は、保管時のデータ保護に関するものです。サーバー側の暗号化では、オブジェクトのメタデータではなく、オブジェクトデータのみが暗号化されます。汎用バケットでお客様が用意したキーでのサーバー側の暗号化 (SSE−C) を使用すると、独自の暗号化キーでデータを暗号化できます。リクエストの一部として用意された暗号化キーで、Amazon S3 は、ディスクに書き込む際のデータ暗号化と、オブジェクトにアクセスする際のデータ復号を管理します。したがって、データの暗号化と復号を実行するコードをお客様が管理する必要はありません。必要なことは、お客様が用意する暗号化キーを管理することだけです。

Amazon S3 の最新のユースケースのほとんどでは、Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) や AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の柔軟性が欠けているため、SSE-C は使用されなくなりました。SSE-C では、SSE-C 暗号化データとやり取りするたびに暗号化キーを提供する必要があるため、S3 バケットからデータを読み取ってデータを操作しようとする他のユーザー、ロール、または AWS のサービスと SSE-C キーを共有することは実用的ではありません。AWS 全体で SSE-KMS が広範囲にサポートされているため、ほとんどの最新のワークロードでは SSE-KMS の柔軟性が不足しているため、SSE-C 暗号化を使用しません。SSE-KMS の詳細については、「AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の使用」を参照してください。

バケットに書き込まれたオブジェクトに SSE-C 暗号化が使用されないようにするには、バケットのデフォルトの暗号化設定を変更するときに SSE-C 暗号化をブロックできます。汎用バケットに対して SSE-C がブロックされている場合、SSE-C 暗号化を指定する PutObjectCopyObjectPostObject、マルチパートアップロードまたはレプリケーションリクエストは HTTP 403 AccessDenied エラーで拒否されます。SSE-C のブロックの詳細については、「汎用バケットの SSE-C のブロックまたはブロック解除」を参照してください。

SSE-C の使用に追加料金はかかりません。ただし、SSE-C を設定および使用するためのリクエストには、標準の Amazon S3 リクエスト料金が発生します。料金については、「Amazon S3 の料金」を参照してください。

重要

2025 年 11 月 19 日に発表されたように、Amazon Simple Storage Service は、すべての新しい汎用バケットについて、お客様が用意したキーによるサーバー側の暗号化 (SSE-C) を自動的に無効にする新しいデフォルトのバケットセキュリティ設定をデプロイしています。SSE-C で暗号化されたオブジェクトがない AWS アカウント内の既存のバケットの場合、Amazon S3 はすべての新しい書き込みリクエストに対しても SSE-C を無効にします。SSE-C を使用する AWS アカウントの場合、Amazon S3 はそれらのアカウント内の既存のバケットのバケット暗号化設定を変更しません。このデプロイは 2026 年 4 月 6 日に開始され、AWS 中国および AWS GovCloud (米国) リージョンを含む 37 の AWS リージョンで今後数週間で完了します。

これらの変更により、SSE-C 暗号化を必要とするアプリケーションは、新しいバケットの作成後に PutBucketEncryption API オペレーションを介して SSE-C の使用を意図的に有効にする必要があります。この変更の詳細については、「新しいバケットの SSE-C 設定に関するよくある質問」を参照してください。

SSE-C を使用する前の考慮事項

  • S3 は暗号化キーを保存しません。S3 から SSE-C 暗号化データをダウンロードするたびに、暗号化キーを指定する必要があります。

    • 使用した暗号化キーと暗号化したオブジェクトのマッピングは、お客様に管理していただきます。どのオブジェクトにどの暗号化キーを使用したかは、お客様が管理してください。これは、暗号化キーを紛失した場合、オブジェクトも失われることを意味します。

    • クライアント側の暗号化キーはお客様が管理するため、キーの更新など、クライアント側での追加の安全対策はお客様に管理していただきます。

    • この設計により、データを操作する他のユーザー、ロール、または AWS のサービスと SSE-C キーを共有することが困難になる可能性があります。AWS 全体で SSE-KMS が広範囲にサポートされているため、ほとんどの最新のワークロードでは SSE-KMS の柔軟性が不足しているため、SSE-C を使用しません。SSE-KMS の詳細については、「AWS KMS キーによるサーバー側の暗号化の使用 (SSE-KMS)」を参照してください。

    • つまり、SSE-C で暗号化されたオブジェクトは、AWS マネージドサービスによってネイティブに復号することはできません。

  • リクエストで SSE-C ヘッダーを指定するときは、HTTPS を使用する必要があります。

    • SSE−C を使用する場合、Amazon S3 は HTTP 経由で行われたリクエストをすべて拒否します。セキュリティ上の考慮事項として、誤って HTTP で送信されたキーは漏洩したと見なすことをお勧めします。キーを破棄して、必要に応じて更新してください。

  • バケットのバージョニングが有効になっている場合、アップロードする各オブジェクトバージョンに、独自の暗号化キーを使用できます。どのオブジェクトバージョンにどの暗号化キーを使用したかは、お客様が管理してください。

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