オブジェクトレベルで S3 バケットキーを設定する
REST API、AWS SDK、または AWS CLI を使用して PUT オペレーションまたは COPY オペレーションを実行する際、true
または false
の値の付いた x-amz-server-side-encryption-bucket-key-enabled
リスエストヘッダーを追加して、オブジェクトレベルで S3 バケットキーを有効または無効にできます。S3 バケットキーは、Amazon S3 から AWS KMS へのリクエストトラフィックを減らすことにより、AWS Key Management Service (AWS KMS) (SSE−KMS) を使用したサーバー側の暗号化のコストを削減します。詳細については、Amazon S3 バケットキーを使用した SSE−KMS のコストの削減 を参照してください。
PUT オペレーションまたは COPY オペレーションを使用してオブジェクトの S3 バケットキーを設定すると、Amazon S3 では、そのオブジェクトの設定のみが更新されます。レプリケート先バケットの S3 バケットキーの設定は変更されません。KMS で暗号化されたオブジェクトの PUT または COPY リクエストを S3 バケットキーが有効になっているバケットに送信すると、リクエストヘッダーのキーを無効にしない限り、オブジェクトレベルのオペレーションでは自動的に S3 バケットキーが使用されます。オブジェクトに S3 バケットキーを指定しない場合、Amazon S3 ではレプリケート先バケットの S3 バケットキーの設定がオブジェクトに適用されます。
前提条件:
S3 バケットキーを使用するようにオブジェクトを設定する前に、「S3 バケットキーを有効にする前に注意するべき変更点」を確認してください。
Amazon S3 バッチオペレーション
既存の Amazon S3 オブジェクトを暗号化するには、Amazon S3 バッチオペレーションを使用します。S3 バッチオペレーションは、操作するオブジェクトのリストとともに提供します。バッチオペレーションは各 API を呼び出して、指定されたオペレーションを実行します。
S3 バッチオペレーションのコピーオペレーションを使用して、既存の暗号化されていないオブジェクトをコピーし、同じバケットに新しい暗号化されたオブジェクトを書き込めます。1 つのバッチオペレーションジョブで、数十億ものオブジェクトに対して、指定されたオペレーションを実行できます。詳細については、バッチオペレーションでオブジェクトオペレーションを一括で実行する および Amazon S3 バッチオペレーションによるオブジェクトの暗号化
REST API の使用
SSE−KMS を使用すると、次の API を使用して、オブジェクトの S3 バケットキーを有効にできます。
-
PutObject – オブジェクトをアップロードするときに、
x-amz-server-side-encryption-bucket-key-enabled
リクエストヘッダーを指定して、オブジェクトレベルで S3 バケットキーを有効または無効にできます。 -
CopyObject – オブジェクトをコピーして SSE−KMS を設定するときに、
x-amz-server-side-encryption-bucket-key-enabled
リクエストヘッダーを指定して、オブジェクトの S3 バケットキーを有効または無効にできます。 -
PostObject –
POST
オペレーションを使用してオブジェクトをアップロードし、SSE−KMS を設定するとき、x-amz-server-side-encryption-bucket-key-enabled
フォームフィールドを使用してオブジェクトの S3 バケットキーを有効または無効にできます。 -
CreateMultipartUpload –
CreateMultipartUpload
API オペレーションを使用して大きなオブジェクトをアップロードし、SSE−KMS を設定する場合、x-amz-server-side-encryption-bucket-key-enabled
リクエストヘッダーを使用してオブジェクトの S3 バケットキーを有効または無効にできます。
オブジェクトレベルで S3 バケットキーを有効にするには、x-amz-server-side-encryption-bucket-key-enabled
リクエストヘッダーを含めます。SSE−KMS および REST API の詳細については、REST API の使用 を参照してください。
AWS SDK Java (PutObject) の使用
次の例を使用して、AWS SDK for Java を使ってオブジェクトレベルで S3 バケットキーを設定できます。
AWS CLI (PutObject) の使用
次の AWS CLI の例を使用して、PutObject
リクエストの一部としてオブジェクトレベルで S3 バケットキーを設定できます。
aws s3api put-object --bucket
amzn-s3-demo-bucket
--keyobject key name
--server-side-encryption aws:kms --bucket-key-enabled --bodyfilepath