Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) の指定
重要
Amazon S3 では、Amazon S3 内のすべてのバケットの基本レベルの暗号化として、Amazon S3 が管理するキー (SSE-S3) によるサーバー側の暗号化が適用されるようになりました。2023 年 1 月 5 日以降、Amazon S3 にアップロードされるすべての新しいオブジェクトは、追加費用なしで、パフォーマンスに影響を与えずに自動的に暗号化されます。S3 バケットのデフォルト暗号化設定と新しいオブジェクトのアップロードのための自動暗号化ステータスは、AWS CloudTrail ログ、S3 インベントリ、S3 ストレージレンズ、Amazon S3 コンソール、および AWS Command Line Interface と AWS SDK の追加の Amazon S3 API レスポンスヘッダーとして利用できるようになりました。詳細については、「デフォルト暗号化に関するよくある質問」を参照してください。
すべての Amazon S3 バケットにはデフォルトで暗号化が設定されており、S3 バケットにアップロードされたすべての新しいオブジェクトは保存時に自動的に暗号化されます。Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) は、Amazon S3 のすべてのバケットでのデフォルトの暗号化設定です。別のタイプの暗号化を使用するには、S3 PUT
リクエストで使用するサーバー側の暗号化のタイプを指定するか、宛先バケットにデフォルトの暗号化設定を設定できます。
PUT
リクエストで別の暗号化タイプを指定する場合は、AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS)、AWS KMS キーによる二層式サーバー側の暗号化 (DSSE-KMS)、または顧客提供のキーによるサーバー側の暗号化 (SSE-C) を使用できます。宛先バケットに別のデフォルト暗号化設定を設定する場合は、SSE-KMS または DSSE-KMS を使用できます。
S3 コンソール、REST API、AWS SDK、および AWS Command Line Interface (AWS CLI) を使用して SSE−S3 を指定できます。詳細については、「Amazon S3 バケット向けのサーバー側のデフォルトの暗号化動作の設定」を参照してください。
このトピックでは、AWS Management Console を使用してオブジェクトの暗号化のタイプを設定または変更する方法について説明します。コンソールを使用してオブジェクトをコピーする場合、Amazon S3 はオブジェクトを現状のままコピーします。つまり、ソースが暗号化されている場合、ターゲットオブジェクトも暗号化されます。コンソールを使用して、オブジェクトの暗号化を追加または変更することもできます。
注記
-
オブジェクトの暗号化を変更すると、新しいオブジェクトが作成され、古いオブジェクトが置き換えられます。S3 バージョニングが有効になっている場合は、オブジェクトの新しいバージョンが作成され、既存のオブジェクトが古いバージョンになります。また、プロパティを変更するロールは、新しいオブジェクト (またはオブジェクトのバージョン) の所有者になります。
-
ユーザー定義タグを持つオブジェクトの暗号化タイプを変更する場合は、
s3:GetObjectTagging
アクセス許可が必要です。ユーザー定義タグがなく、サイズが 16 MB を超えるオブジェクトの暗号化タイプを変更する場合は、s3:GetObjectTagging
アクセス許可も必要です。ターゲットバケットポリシーによって
s3:GetObjectTagging
アクションが拒否されると、オブジェクトの暗号化タイプは更新されますが、ユーザー定義タグはオブジェクトから削除され、エラーが発生します。
オブジェクトの暗号化を変更するには
-
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
左側のナビゲーションペインで、[バケット] を選択します。
-
[Buckets] (バケット) リストで、オブジェクトが含まれるバケットの名前を選択します。
-
[オブジェクト] リストで、暗号化を追加または変更するオブジェクトの名前を選択します。
オブジェクトの詳細ページが開き、オブジェクトのプロパティを表示するいくつかのセクションが表示されます。
-
[プロパティ] タブを選択します。
「サーバー側の暗号化設定」セクションまでスクロールし、[編集] を選択します。
[暗号化設定] で、[バケットのデフォルトの暗号化設定を使用する] または [バケットのデフォルトの暗号化設定を上書きする] を選択します。
-
[デフォルトの暗号化にバケット設定を上書きする] を選択した場合は、次の暗号化設定を設定します。
-
[暗号化タイプ] で、[Amazon S3 マネージドキー (SSE-S3)] を選択します。SSE-S3 は、最強のブロック暗号の 1 つである 256 ビットの 高度暗号化規格 (AES-256) を使用して、各オブジェクトを暗号化します。詳細については、「Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3)」を参照してください。
-
-
[Save changes] (変更の保存) をクリックします。
注記
このアクションは、指定されたすべてのオブジェクトに暗号化を適用します。フォルダを暗号化する場合は、保存オペレーションが完了するのを待ってから、フォルダに新しいオブジェクトを追加します。
オブジェクト作成時、つまり、新しいオブジェクトをアップロードするときや既存オブジェクトのコピーを作成するときに、リクエストに x-amz-server-side-encryption
ヘッダーを追加することで、Amazon S3 マネージドキー (SSE-S3) を使用してデータを暗号化するかどうかを指定することができます。ヘッダーの値を、Amazon S3 がサポートする暗号化アルゴリズム AES256
に設定します。Amazon S3 によりレスポンスヘッダー x-amz-server-side-encryption
が返されるため、SSE-S3 を使用してオブジェクトが保存されたことを確認できます。
次の REST アップロード API オペレーションは、x-amz-server-side-encryption
リクエストヘッダーを受け付けます。
マルチパートアップロード API オペレーションを使用して大容量のオブジェクトをアップロードするときに、x-amz-server-side-encryption
ヘッダーを Initiate Multipart Upload リクエストに追加することでサーバー側の暗号化を指定することができます。既存のオブジェクトをコピーする際は、コピー元オブジェクトが暗号化されているかどうかに関係なく、明示的にサーバー側の暗号化を要求しない限り、コピー先オブジェクトは暗号化されません。
次の REST API オペレーションのレスポンスヘッダーは、オブジェクトが SSE-S3 を使用して保存されているときに x-amz-server-side-encryption
ヘッダーを返します。
注記
オブジェクトで SSE−S3 を使用している場合、または、HTTP ステータスコード 400 (BadRequest) エラーが発生する場合、暗号化リクエストヘッダーを GET
リクエストおよび HEAD
リクエストに対して送信しないでください。
AWS SDK を使用して、Amazon S3 マネージド暗号化キー (SSE-S3) を使用するように Amazon S3 にリクエストできます。このセクションでは、AWS SDK を複数の言語で使用する場合の例を示します。他の SDK については、「サンプルコードとライブラリ
AWS CLI を使用してオブジェクトをアップロードするときに SSE−S3 を指定するには、次の例を使用します。
aws s3api put-object --bucket
--key
amzn-s3-demo-bucket1
object-key-name
--server-side-encryption AES256 --bodyfile path
詳細については、AWS CLI リファレンスの put−object
AWS CloudFormation を使用して暗号化を設定する例については、AWS CloudFormation ユーザーガイドの AWS::S3::Bucket ServerSideEncryptionRule
トピックの「デフォルト暗号化を備えたバケットの作成」および「AWS KMS サーバー側の暗号化と S3 バケットキーを使用したバケットの作成」の例を参照してください。