

# 新しいオブジェクトで SSE−KMS の S3 バケットキーを使用するようにバケットを設定する
<a name="configuring-bucket-key"></a>

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

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

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

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

**前提条件**  
S3 バケットキーを使用するようにバケットを設定する前に、「[S3 バケットキーを有効にする前に注意するべき変更点](bucket-key.md#bucket-key-changes)」を確認してください。

**Topics**

## S3 コンソールの使用
<a name="enable-bucket-key"></a>

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

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

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

**新しいバケットの作成時に S3 バケットキーを有効にするには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

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

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

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

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

1. **[AWS KMS キー]** で、次のいずれかを実行して KMS キーを選択します。
   + 使用可能な KMS キーのリストから選択するには、**[AWS KMS keys から選択する]** を選択し、使用可能なキーのリストから自分の **KMS** キーを選択します。

     AWS マネージドキー (`aws/s3`) とカスタマーマネージドキーの両方がこのリストに表示されます。カスタマーマネージドキーの詳細については、*AWS Key Management Serviceデベロッパーガイド*の「[カスタマーキーと AWS キー](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)」を参照してください。
   + KMS キー ARN を入力するには、**[AWS KMS key ARN を入力]** を選択し、表示されるフィールドに KMS キー ARN を入力します。
   + AWS KMS コンソールで新しいカスタマーマネージドキーを作成するには、**[KMS キーを作成]** を選択します。

     AWS KMS key の作成の詳細については、**「AWS Key Management Service デベロッパーガイド」の「[キーの作成](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)」を参照してください。

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

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

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

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

**既存のバケットに対して S3 バケットキーを有効にするには**

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

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

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

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

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

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

1. **[AWS KMS キー]** で、次のいずれかを実行して KMS キーを選択します。
   + 使用可能な KMS キーのリストから選択するには、**[AWS KMS keys から選択する]** を選択し、使用可能なキーのリストから自分の **KMS** キーを選択します。

     AWS マネージドキー (`aws/s3`) とカスタマーマネージドキーの両方がこのリストに表示されます。カスタマーマネージドキーの詳細については、*AWS Key Management Serviceデベロッパーガイド*の「[カスタマーキーと AWS キー](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)」を参照してください。
   + KMS キー ARN を入力するには、**[AWS KMS key ARN を入力]** を選択し、表示されるフィールドに KMS キー ARN を入力します。
   + AWS KMS コンソールで新しいカスタマーマネージドキーを作成するには、**[KMS キーを作成]** を選択します。

     AWS KMS key の作成の詳細については、**「AWS Key Management Service デベロッパーガイド」の「[キーの作成](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)」を参照してください。

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

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

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

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

## REST API の使用
<a name="enable-bucket-key-rest"></a>

[PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) を使用してバケットの S3 バケットキーを有効または無効にできます。`PutBucketEncryption` で S3 バケットキーを設定するには、[ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html) を使用します。これには、SSE-KMS を使用したデフォルトの暗号化が含まれます。また、オプションで、カスタマーマネージドキーの KMS キー ID を指定して、カスタマーマネージドキーを使用することもできます。  

詳細と構文の例については、[PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) を参照してください。

## AWS SDK for Java の使用
<a name="enable-bucket-key-sdk"></a>

次の例では、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
<a name="enable-bucket-key-cli"></a>

次の例では、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
            }
        ]
    }'
```

## CloudFormation の使用
<a name="enable-bucket-key-cloudformation"></a>

CloudFormation を使用して S3 バケットキーを設定する方法の詳細については、*AWS CloudFormation ユーザーガイド*の「[AWS::S3::Bucket ServerSideEncryptionRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html)」を参照してください。