Amazon S3 の暗号化の指定
オブジェクトを作成するときに、Amazon S3 が管理する暗号化キーによるサーバー側の暗号化の使用を指定して、データを暗号化できます。これは、新しいオブジェクトをアップロードしたり、既存のオブジェクトをコピーするときも同様です。この暗号化は SSE−S3 と呼ばれます。
S3 コンソール、REST API、AWS SDK、および AWS CLI を使用して SSE−S3 を指定できます。詳細については、以下のトピックを参照してください。
暗号化せずにオブジェクトをコピーする方法を示すサンプルについては、オブジェクトのコピー を参照してください。
このトピックでは、AWS Management Consoleを使用してオブジェクトの暗号化のタイプを設定または変更する方法について説明します。コンソールでオブジェクトをコピーする場合、オブジェクトは現状のままコピーされます。つまり、ソースが暗号化されている場合、ターゲットオブジェクトも暗号化されます。コンソールでは、オブジェクトの暗号化を追加または変更することもできます。
オブジェクトの暗号化を変更すると、新しいオブジェクトが作成され、古いオブジェクトが置き換えられます。S3 バージョニングが有効になっている場合は、オブジェクトの新しいバージョンが作成され、既存のオブジェクトが古いバージョンになります。また、プロパティを変更するロールは、新しいオブジェクト (オブジェクトのバージョン) の所有者になります。
オブジェクトの暗号化を追加または変更するには
-
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
[Buckets] (バケット) リストで、オブジェクトが含まれるバケットの名前を選択します。
-
[Objects] (オブジェクト) リストで、暗号化を追加または変更するオブジェクトの名前を選択します。
[Object overview] (オブジェクトの概要) が開き、オブジェクトのプロパティが表示されます。
-
[Server−side encryption settings (サーバー側の暗号化設定)] で、[Edit (編集)] を選択します。
[Edit server−side encryption (サーバー側の暗号化を編集する)] ページが開きます。
-
オブジェクトのサーバー側の暗号化を有効にするには、[Server−side encryption (サーバー側の暗号化)] で [Enable (有効化)] を選択します。
-
Amazon S3 マネージドキーを使用してサーバー側の暗号化を有効にするには、[Encryption key type (暗号化キータイプ)] で [Amazon S3 key (SSE−S3) (Amazon S3 キー (SSE−S3))] を選択します。
Amazon S3 のサーバー側の暗号化を使用してデータを暗号化する方法の詳細については、Amazon S3 が管理する暗号化キーによるサーバー側の暗号化 (SSE−S3) を使用したデータの保護 を参照してください。
-
[Save changes] (変更を保存) をクリックします。
このアクションは、指定されたすべてのオブジェクトに暗号化を適用します。フォルダを暗号化する場合は、保存オペレーションが完了するのを待ってから、フォルダに新しいオブジェクトを追加します。
オブジェクト作成時、つまり、新しいオブジェクトをアップロードするときや既存オブジェクトのコピーを作成するときに、リクエストに x-amz-server-side-encryption
ヘッダーを追加することで、データを暗号化するよう Amazon S3 に指定することができます。ヘッダーの値を、Amazon S3 がサポートする暗号化アルゴリズム AES256
に設定します。Amazon S3 は、レスポンスヘッダー x-amz-server-side-encryption
を返すことで、オブジェクトがサーバー側の暗号化を使用して格納されていることを確認します。
次の REST アップロード API は、x-amz-server-side-encryption
リクエストヘッダーを受け付けます。
マルチパートアップロード API を使用して大容量のオブジェクトをアップロードするときに、x-amz-server-side-encryption
ヘッダーを Initiate Multipart Upload リクエストに追加することでサーバー側の暗号化を指定することができます。既存のオブジェクトをコピーする際は、コピー元オブジェクトが暗号化されているかどうかに関係なく、明示的にサーバー側の暗号化を要求しない限り、コピー先オブジェクトは暗号化されません。
次の REST API のレスポンスヘッダーは、オブジェクトがサーバー側の暗号化を使用して保存されているときに x-amz-server-side-encryption
ヘッダーを返します。
オブジェクトで SSE−S3 を使用している場合、または、HTTP 400 BadRequest エラーが発生する場合、暗号化リクエストヘッダーを GET
リクエストおよび HEAD
リクエストに対して送信してはいけません。
AWS SDK を使用して、Amazon S3 が管理する暗号化キーを使用するように Amazon S3 にリクエストできます。このセクションでは、AWS SDK を複数の言語で使用する場合の例を示します。他の SDK については、サンプルコードとライブラリ
AWS CLI を使用してオブジェクトをアップロードするときに SSE−S3 を指定するには、次の例を使用します。
aws s3api put-object --bucket
--key
DOC-EXAMPLE-BUCKET1
object-key-name
--server-side-encryption AES256 --bodyfile path
詳細については、AWS CLI リファレンスの put−object
AWS CloudFormation を使用して暗号化を設定する例については、AWS CloudFormation ユーザーガイドのデフォルトの暗号化を使用したバケットの作成およびAWS KMS サーバー側の暗号化と S3 バケットキーを使用したバケットの作成をご参照ください。