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

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

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

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 つのバッチオペレーションジョブで、数十億ものオブジェクトに対して、指定されたオペレーションを実行できます。詳細については、Amazon S3 オブジェクトでの大規模なバッチ操作の実行 およびAWS ストレージブログの投稿である Amazon S3 バッチオペレーションによるオブジェクトの暗号化を参照してください。

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

注記

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

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

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

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

  • KMS キーと同じ AWS アカウント の AWS Identity and Access Management (IAM) プリンシパルを使用して S3 オブジェクトをアップロードまたはアクセスする場合は、AWS マネージドキー (aws/s3) を使用できます。

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

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

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

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

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

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

  • レプリケート元バケットのオブジェクトが暗号化されていない場合、レプリケート先バケットのレプリカオブジェクトはレプリケート先バケットのデフォルトの暗号化設定を使用して暗号化されます。この結果、ソースオブジェクトの 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 バケットキーの使用」を参照してください。