S3 バケットの Amazon S3 デフォルト暗号化 - Amazon Simple Storage Service

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

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

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

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

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

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

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

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

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

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

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

    • PUT リクエストヘッダーに暗号化情報が含まれている場合、Amazon S3 は PUT リクエストの暗号化情報を使用してオブジェクトを暗号化してから、Amazon S3 に保存します。

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

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

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

注記

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

デフォルトの暗号化設定を使用して 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 のモニタリング」を参照してください。