Amazon S3 バケットのデフォルトのサーバー側暗号化の動作設定 - Amazon Simple Storage Service

Amazon S3 バケットのデフォルトのサーバー側暗号化の動作設定

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

SSE-KMS でデフォルトの暗号化を使用するようにバケットを設定する場合、S3 バケットキーを有効にして、Amazon S3 から AWS Key Management Service (AWS KMS) へのリクエストトラフィックを減らし、暗号化のコストを削減することもできます。詳細については、「Amazon S3 バケットキーを使用した SSE-KMS のコストの削減」を参照してください。

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

デフォルトの暗号化に必要なアクセス許可の詳細については、Amazon Simple Storage Service API リファレンスの「PutBucketEncryption」を参照してください。

バケットにデフォルトの暗号化を設定するには、Amazon S3 コンソール、AWS CLI、AWS SDK、または REST API を使用できます。詳細については、「Amazon S3 のデフォルトバケット暗号化の有効化」を参照してください。

既存のオブジェクトの暗号化

既存の Amazon S3 オブジェクトを単一のリクエストで暗号化するには、Amazon S3 バッチオペレーションを使用します。S3 バッチオペレーションは、操作するオブジェクトのリストとともに提供します。バッチオペレーションは各 API を呼び出して、指定されたオペレーションを実行します。コピーオペレーションを使用して、既存の暗号化されていないオブジェクトをコピーし、同じバケットに新しい暗号化されたオブジェクトを書き込めます。1 つのバッチオペレーションジョブで、エクサバイトのデータを含む数十億ものオブジェクトに対して、指定されたオペレーションを実行できます。詳細については、「S3 バッチオペレーションの実行」を参照してください。

Copy Object の API を使用して既存のオブジェクトを暗号化することもできます。詳細については、AWS ストレージブログの投稿「AWS CLI を使用した既存の Amazon S3 オブジェクトの暗号化」を参照してください。

注記

デフォルトの暗号化として SSE-KMS を使用する Amazon S3 バケットは、サーバーアクセスログを使用したリクエストのログ記録 の送信先バケットとして使用できません。サーバーアクセスログの送信先バケットは、デフォルトの暗号化として SSE-S3 のみをサポートしています。

クロスアカウント操作での暗号化の使用

クロスアカウント操作で暗号化を使用する場合は、次の点に注意してください。

  • AWS 管理の CMK (aws/s3) は、CMK Amazon リソースネーム (ARN) またはエイリアスがリクエスト時に提供されない場合も、バケットのデフォルトの暗号化設定によって提供されない場合も使用されます。

  • CMK と同じ AWS アカウントにある AWS Identity and Access Management (IAM) プリンシパルを使って S3 オブジェクトをアップロードしたり、それらにアクセスしたりしている場合、AWS 管理の CMK (aws/s3) を使用できます。

  • S3 オブジェクトへのクロスアカウントアクセスを許可する場合は、カスタマー管理の CMK を使用します。カスタマー管理の CMK のポリシーを設定して、別のアカウントからのアクセスを許可することができます。

  • 独自の CMK を指定する場合、完全修飾 CMK キー ARN を使用する必要があります。CMK エイリアスを使用する場合、AWS KMS はリクエスタのアカウント内でキーを解決します。これにより、バケット管理者ではなく、リクエスタに属する CMK でデータが暗号化される可能性があります。

  • お客様 (リクエスタ) が Encrypt アクセス許可を付与されているキーを指定する必要があります。詳細については、AWS Key Management Service 開発者ガイドの「キーユーザーが暗号化オペレーションに CMK を使用することを許可する」を参照してください。

カスタマー管理の CMK と AWS 管理の CMK をどのような場合に使用するかの詳細については、「Amazon S3 にあるオブジェクトの暗号化には、AWS KMS で管理されたキー、またはカスタム AWS KMS キーのどちらを使うべきですか?」を参照してください。

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

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

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

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

SSE-KMS を使用したデフォルト暗号化の使用については、「暗号化オブジェクトのレプリケート」を参照してください。

デフォルトの暗号化で Amazon S3 バケットキーを使用する

新しいオブジェクトで SSE-KMS のデフォルトの暗号化を使用するようにバケットを設定する場合は、S3 バケットキーを設定することもできます。S3 バケットキーは、Amazon S3 から AWS KMS へのトランザクションの数を減らし、AWS Key Management Service (SSE-KMS) を使用したサーバー側の暗号化のコストを削減します。

新しいオブジェクトで SSE-KMS の S3 バケットキーを使用するようにバケットを設定すると、AWS KMS によりバケットレベルのキーが生成されます。このキーは、バケット内のオブジェクトの一意のデータキーを作成するために使用されます。このバケットキーは Amazon S3 内で期間限定で使用されるため、Amazon S3 で AWS KMS にリクエストを行い、暗号化操作を完了する必要性が軽減されます。

S3 バケットキーの使用の詳細については、「Amazon S3 バケットキーを使用した SSE-KMS のコストの削減」を参照してください。