オブジェクトの暗号化を更新する
Amazon S3 バッチオペレーションを使用すると、Amazon S3 のオブジェクトに対して大規模なバッチオペレーションを実行できます。バッチオペレーション UpdateObjectEncryption オペレーションは、1 回のリクエストで複数の Amazon S3 オブジェクトのサーバー側の暗号化タイプを更新します。1 つの UpdateObjectEncryption オペレーションジョブで、最大 200 億個のオブジェクトを持つマニフェストをサポートできます。
UpdateObjectEncryption オペレーションは、汎用バケットでサポートされているすべての Amazon S3 ストレージクラスでサポートされています。UpdateObjectEncryption オペレーションを使用して、暗号化されたオブジェクトを Amazon S3 マネージドキー (SSE-S3) によるサーバー側の暗号化から AWS Key Management Service (AWS KMS) キー (SSE-KMS) に変更したり、S3 バケットキーを適用したりできます。UpdateObjectEncryption オペレーションを使用して、データの暗号化に使用されるカスタマーマネージド KMS キーを変更し、カスタムキーローテーション標準に準拠することもできます。
バッチオペレーションジョブを作成すると、指定したソースの場所とフィルター条件に基づいてオブジェクトリストを生成できます。MatchAnyObjectEncryption フィルターを使用して、更新するバケット内のオブジェクトのリストを生成し、マニフェストに含めることができます。生成されたオブジェクトリストには、指定されたサーバー側の暗号化タイプを持つソースバケットオブジェクトのみが含まれます。SSE-KMS を選択した場合は、オプションで特定の KMS キー ARN とバケットキーの有効化ステータスを指定して、結果をさらにフィルタリングできます。詳細については、「Amazon S3 API Reference」の「JobManifestGeneratorFilter」と「SSEKMSFilter」を参照してください。
制限と考慮事項
バッチオペレーション UpdateObjectEncryption オペレーションを使用している場合は、以下の制限と考慮事項が適用されます。
-
UpdateObjectEncryptionオペレーションでは、暗号化されていないオブジェクトや、AWS KMS keys による二層式サーバー側の暗号化 (DSSE-KMS) またはお客様が用意した暗号化キー (SSE-C) のいずれかで暗号化されたオブジェクトはサポートされません。また、SSE-S3 暗号化タイプUpdateObjectEncryptionリクエストを指定することはできません。 -
UpdateObjectEncryptionオペレーションを使用して、S3 バージョニングが有効になっているバケット内のオブジェクトを更新できます。特定のバージョンの暗号化タイプを更新するには、UpdateObjectEncryptionリクエストでバージョン ID を指定する必要があります。バージョン ID を指定しない場合、UpdateObjectEncryptionリクエストはオブジェクトの現在のバージョンに対して実行されます。S3 バージョニングの詳細については、S3 バージョニングによる複数のバージョンのオブジェクトの保持 を参照してください。 -
UpdateObjectEncryptionオペレーションは、S3 Object Lock の保持モードまたはリーガルホールドが適用されているオブジェクトで失敗します。オブジェクトにガバナンスモードの保持期間またはリーガルホールドがある場合は、UpdateObjectEncryptionリクエストを発行する前に、まずオブジェクトの Object Lock ステータスを削除する必要があります。Object Lock コンプライアンスモードの保持期間が適用されているオブジェクトでは、UpdateObjectEncryptionオペレーションを使用できません。S3 オブジェクトロックの詳細については、「S3 Object Lock を使用したオブジェクトのロック」を参照してください。 -
ライブレプリケーションが有効になっているソースバケットに対する
UpdateObjectEncryptionリクエストでは、レプリケート先バケットでレプリカイベントが開始されません。ソースバケットとレプリケート先バケットの両方のオブジェクトの暗号化タイプを変更する場合は、ソースバケットとレプリケート先バケットのオブジェクトに対して個別のUpdateObjectEncryptionリクエストを開始する必要があります。 -
デフォルトでは、カスタマー管理の KMS キーを指定するすべての
UpdateObjectEncryptionリクエストは、バケット所有者の AWS アカウントが所有する KMS キーに制限されます。AWS Organizations を使用している場合は、AWS サポート に連絡して、組織内の他のメンバーアカウントが所有する AWS KMS keys を使用する機能をリクエストできます。 -
S3 バッチレプリケーションを使用してデータセットをリージョン間でレプリケートし、オブジェクトのサーバー側の暗号化タイプを SSE-S3 から SSE-KMS に更新したことがある場合は、追加のアクセス許可が必要になる場合があります。ソースリージョンバケットでは、
kms:decryptアクセス許可が必要です。次に、レプリケート先リージョンのバケットのkms:decryptおよびkms:encryptアクセス許可が必要です。 -
UpdateObjectEncryptionリクエストに完全な KMS キー ARN を指定します。エイリアス名またはエイリアス ARN を使用することはできません。完全な KMS キー ARN は、AWS KMS コンソールまたは AWS KMSDescribeKeyAPI を使用して判断できます。 -
KmsKeyArnフィルターを使用する際のマニフェスト生成のパフォーマンスを向上させるには、このフィルターを他のオブジェクトメタデータフィルターと組み合わせて使用します。例えば、S3 バッチオペレーションでマニフェストを自動的に生成するときに、KmsKeyArnをMatchAnyPrefix、CreatedAfter、またはMatchAnyStorageClassと組み合わせることができます。
UpdateObjectEncryption の詳細については、「既存データのサーバー側の暗号化の更新」を参照してください。
必要なアクセス許可
UpdateObjectEncryption オペレーションを実行するには、IAM プリンシパル (ユーザー、ロール、またはグループ) に次の AWS Identity and Access Management (IAM) ポリシーを追加します。このポリシーを使用するには、 を暗号化を更新するオブジェクトを含むバケットの名前に置き換えます。amzn-s3-demo-bucket をマニフェストを含むバケットの名前に置き換え、amzn-s3-demo-manifest-bucket を完了レポートを保存するバケットの名前に置き換えます。amzn-s3-demo-completion-report-bucket
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3BatchOperationsUpdateEncryption", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:PutObject", "s3:UpdateObjectEncryption" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket-target" "arn:aws:s3:::amzn-s3-demo-bucket-target-target/*" ] }, { "Sid": "S3BatchOperationsPolicyForManifestFile", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket-manifest/*" ] }, { "Sid": "S3BatchOperationsPolicyForCompletionReport", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket-completion-report/*" ] }, { "Sid": "S3BatchOperationsPolicyManifestGeneration", "Effect": "Allow", "Action": [ "s3:PutInventoryConfiguration" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket-target" ] }, { "Sid": "AllowKMSOperationsForS3BatchOperations", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:Encrypt", "kms:ReEncrypt*" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" ] } ] }
S3 バッチオペレーションサービスプリンシパルがユーザーに代わってバッチオペレーションジョブを実行するために引き受ける IAM ロールにアタッチする必要がある信頼ポリシーとアクセス許可ポリシーについては、「バッチオペレーションに対するアクセス許可の付与」および「オブジェクトの暗号化を更新する」を参照してください。