新しいオブジェクトで SSE−KMS の S3 バケットキーを使用するようにバケットを設定する - Amazon Simple Storage Service

新しいオブジェクトで SSE−KMS の S3 バケットキーを使用するようにバケットを設定する

AWS Key Management Service (AWS KMS) キー (SSE-KMS) を使用してサーバー側の暗号化を設定する場合、新しいオブジェクトで SSE−KMS の S3 バケットキーを使用するようにバケットを設定できます。S3 バケットキーは、Amazon S3 から AWS KMS へのリクエストトラフィックを減らし、SSE−KMS におけるコストを削減します。詳細については、「Amazon S3 バケットキーを使用した SSE−KMS のコストの削減」を参照してください。

Amazon S3 コンソール、REST API、AWS SDK、AWS Command Line Interface (AWS CLI)、または AWS CloudFormation を使用して、新しいオブジェクトで SSE−KMS の S3 バケットキーを使用するようにバケットを設定できます。既存のオブジェクトの S3 バケットキーを有効または無効にするには、CopyObject オペレーションを使用できます。詳細については、(オブジェクトレベルで S3 バケットキーを設定する ) および (バッチオペレーションを使用して SSE-KMS の S3 バケットキーを有効にする) を参照してください。

レプリケート元バケットまたはレプリケート先バケットで S3 バケットキーを有効にすると、暗号化コンテキストはバケットの Amazon リソースネーム (ARN) になり、オブジェクト ARN にはなりません (例えば、arn:aws:s3:::bucket_ARN)。IAM ポリシーを更新して、暗号化コンテキストにバケット ARN を使用する必要があります。詳細については、「S3 バケットキーとレプリケーション」を参照してください。

以下の例では、S3 バケットキーがレプリケーションでどのように機能するかを示しています。詳細については、「暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)」を参照してください。 

前提条件

S3 バケットキーを使用するようにバケットを設定する前に、「S3 バケットキーを有効にする前に注意するべき変更点」を確認してください。

トピック

    S3 コンソールでは、新しいバケットまたは既存のバケットに対して S3 バケットキーを有効または無効にできます。S3 コンソールのオブジェクトは、バケット設定からそれらの S3 バケットキーの設定を継承します。バケットで S3 バケットキーを有効にすると、バケットにアップロードする新しいオブジェクトでは、SSE-KMS に S3 バケット キーが使用されます。

    S3 バケットキーが有効になっているバケット内のオブジェクトをアップロード、コピー、または変更する

    S3 バケットキーが有効になっているバケットでオブジェクトをアップロード、変更、またはコピーすると、そのオブジェクトの S3 バケットキーの設定がバケット設定に合わせて更新されることがあります。

    オブジェクトで既に S3 バケットキーが有効になっている場合、オブジェクトをコピーまたは変更しても、そのオブジェクトの S3 バケットキーの設定は変更されません。ただし、レプリケート先バケットに S3 バケットキーの設定がある状態で S3 バケットキーが有効になっていないオブジェクトを変更またはコピーした場合、オブジェクトはレプリケート先バケットの S3 バケットキーの設定を継承します。例えば、ソースオブジェクトで S3 バケットキーが有効になっていないが、レプリケート先バケットで S3 バケットキーが有効になっている場合、S3 バケットキーは有効になります。

    新しいバケットの作成時に S3 バケットキーを有効にするには
    1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

    2. 左側のナビゲーションペインで、[バケット] を選択します。

    3. [Create bucket (バケットの作成)] を選択します。

    4. バケット名を入力し、AWS リージョンを選択します。

    5. [デフォルトの暗号化][暗号化キーの種類] で、[AWS Key Management Service キー (SSE-KMS)] を選択します。

    6. [AWS KMS キー] で、次のいずれかを実行して KMS キーを選択します。

      • 使用可能な KMS キーのリストから選択するには、[AWS KMS keys から選択する] を選択し、使用可能なキーのリストから自分の KMS キーを選択します。

        AWS マネージドキー (aws/s3) とカスタマーマネージドキーの両方がこのリストに表示されます。カスタマーマネージドキーの詳細については、AWS Key Management Serviceデベロッパーガイドの「カスタマーキーと AWS キー」を参照してください。

      • KMS キー ARN を入力するには、[AWS KMS key ARN を入力] を選択し、表示されるフィールドに KMS キー ARN を入力します。

      • AWS KMS コンソールで新しいカスタマーマネージドキーを作成するには、[KMS キーを作成] を選択します。

        AWS KMS key の作成の詳細については、「AWS Key Management Service デベロッパーガイド」の「キーの作成」を参照してください。

    7. [バケットキー][有効化] を選択します。

    8. [Create bucket] (バケットの作成) をクリックします。

      Amazon S3 は、S3 バケットキーを有効にしてバケットを作成します。バケットにアップロードする新しいオブジェクトには、S3 バケットキーを使用します。 

      S3 バケットキーを無効にするには、前の手順に従い、[無効化] を選択します。

    既存のバケットに対して S3 バケットキーを有効にするには
    1. https://console.aws.amazon.com/s3/ で Amazon S3 コンソールを開きます。

    2. 左側のナビゲーションペインで、[バケット] を選択します。

    3. [バケット] リストで、S3 バケットキーを有効にするバケットを選択します。

    4. [プロパティ] タブを選択します。

    5. [デフォルトの暗号化] で、[編集] を選択します。

    6. [デフォルトの暗号化][暗号化キーの種類] で、[AWS Key Management Service キー (SSE-KMS)] を選択します。

    7. [AWS KMS キー] で、次のいずれかを実行して KMS キーを選択します。

      • 使用可能な KMS キーのリストから選択するには、[AWS KMS keys から選択する] を選択し、使用可能なキーのリストから自分の KMS キーを選択します。

        AWS マネージドキー (aws/s3) とカスタマーマネージドキーの両方がこのリストに表示されます。カスタマーマネージドキーの詳細については、AWS Key Management Serviceデベロッパーガイドの「カスタマーキーと AWS キー」を参照してください。

      • KMS キー ARN を入力するには、[AWS KMS key ARN を入力] を選択し、表示されるフィールドに KMS キー ARN を入力します。

      • AWS KMS コンソールで新しいカスタマーマネージドキーを作成するには、[KMS キーを作成] を選択します。

        AWS KMS key の作成の詳細については、「AWS Key Management Service デベロッパーガイド」の「キーの作成」を参照してください。

    8. [バケットキー][有効化] を選択します。

    9. [Save changes] (変更の保存) をクリックします。

      Amazon S3 では、バケットに追加された新しいオブジェクトに対して S3 バケットキーが有効になります。既存のオブジェクトでは S3 バケットキーは使用しません。既存のオブジェクトの S3 バケットキーを設定するには、CopyObject オペレーションを使用できます。詳細については、「オブジェクトレベルで S3 バケットキーを設定する 」を参照してください。

      S3 バケットキーを無効にするには、前の手順に従い、[Disable (無効化)] を選択します。

    PutBucketEncryption を使用してバケットの S3 バケットキーを有効または無効にできます。PutBucketEncryption で S3 バケットキーを設定するには、ServerSideEncryptionRule を使用します。これには、SSE-KMS を使用したデフォルトの暗号化が含まれます。また、オプションで、カスタマーマネージドキーの KMS キー ID を指定して、カスタマーマネージドキーを使用することもできます。 

    詳細と構文の例については、PutBucketEncryption を参照してください。

    次の例では、AWS SDK for Java を使用して、S3 バケットキーと SSE−KMS によるデフォルトのバケット暗号化を有効にします。

    Java
    AmazonS3 s3client = AmazonS3ClientBuilder.standard()     .withRegion(Regions.DEFAULT_REGION)     .build();     ServerSideEncryptionByDefault serverSideEncryptionByDefault = new ServerSideEncryptionByDefault()     .withSSEAlgorithm(SSEAlgorithm.KMS); ServerSideEncryptionRule rule = new ServerSideEncryptionRule()     .withApplyServerSideEncryptionByDefault(serverSideEncryptionByDefault)     .withBucketKeyEnabled(true); ServerSideEncryptionConfiguration serverSideEncryptionConfiguration =     new ServerSideEncryptionConfiguration().withRules(Collections.singleton(rule)); SetBucketEncryptionRequest setBucketEncryptionRequest = new SetBucketEncryptionRequest()     .withServerSideEncryptionConfiguration(serverSideEncryptionConfiguration)     .withBucketName(bucketName);              s3client.setBucketEncryption(setBucketEncryptionRequest);

    次の例では、AWS CLI を使用して、S3 バケットキーと SSE−KMS によるデフォルトのバケット暗号化を有効にします。user input placeholders を、ユーザー自身の情報に置き換えます。

    aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{         "Rules": [             {                 "ApplyServerSideEncryptionByDefault": {                     "SSEAlgorithm": "aws:kms",                     "KMSMasterKeyID": "KMS-Key-ARN"                 },                 "BucketKeyEnabled": true             }         ]     }'

    AWS CloudFormation を使用して S3 バケットキーを設定する方法の詳細については、AWS CloudFormation ユーザーガイドの「AWS::S3::Bucket ServerSideEncryptionRule」を参照してください。