

# DynamoDB での暗号化テーブルの管理
<a name="encryption.tutorial"></a>

AWS マネジメントコンソール または AWS Command Line Interface (AWS CLI) を使用すると、新しいテーブルで暗号化キーを指定し、Amazon DynamoDB の既存のテーブルで暗号化キーを更新できます。

**Topics**
+ [

## 新しいテーブルの暗号化キーを指定する
](#encryption.tutorial-creating)
+ [

## 暗号化キーの更新
](#encryption.tutorial-update)

## 新しいテーブルの暗号化キーを指定する
<a name="encryption.tutorial-creating"></a>

Amazon DynamoDB コンソールまたは AWS CLI を使用して新しいテーブルで暗号化キーを指定するには、以下の手順に従います。

### 暗号化されたテーブルの作成 (コンソール)
<a name="encryption.tutorial-console"></a>

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

1.  コンソールの左側のナビゲーションペインで、**[テーブル]** を選択します。

1. **[Create Table]** (テーブルの作成) を選択します。**[Table name]** (テーブル名) に「**Music**」と入力します。プライマリキーに「**Artist**」と入力し、ソートキーに「**SongTitle**」をそれぞれ文字列として入力します。

1. **[Settings]** (設定) では、**[Customize settings]** (設定のカスタマイズ) が選択されていることを確認してください。
**注記**  
**[Use default settings]** (デフォルト設定の使用) を選択した場合、テーブルは AWS 所有のキー を使用して保管時に暗号化され、追加コストはかかりません。

1. **[Encryption at rest]** (保管時の暗号化) で、暗号化タイプ – AWS 所有のキー、AWS マネージドキー、またはカスタマーマネージドキーを選択します。
   +  **[Owned by Amazon DynamoDB]** (Amazon DynamoDB が所有)。AWS が所有するキーで、特に DynamoDB が所有および管理します。このキーは追加料金なしで使用されます。
   + **AWS マネージドキー**。キーエイリアス: `aws/dynamodb`。キーはアカウントに保存され、AWS Key Management Service (AWS KMS) によって管理されます (AWS KMS の料金が適用されます)。
   +  **[Stored in your account, and owned and managed by you.] (アカウントに保存され、お客様が所有および管理。**) カスタマーマネージドキー。キーはアカウントに保存され、AWS Key Management Service (AWS KMS) によって管理されます (AWS KMS の料金が適用されます)。
**注記**  
独自のキーを所有および管理することを選択した場合は、KMS キーポリシーが適切に設定されていることを確認してください。例を含む詳細については、「[カスタマーマネージドキーのキーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)」を参照してください。

1. **[Create table]** (テーブルの作成) を選択して暗号化テーブルを作成します。暗号化タイプを確認するには、**[Overview]** (概要) タブのテーブルの詳細を選択し、**[Additional details]** (その他の詳細) セクションを表示します。

### 暗号化されたテーブルの作成 (AWS CLI)
<a name="encryption.tutorial-cli"></a>

AWS CLI により、Amazon DynamoDB のデフォルトの AWS 所有のキー、AWS マネージドキー、またはカスタマーマネージドキーを使用してテーブルを作成します。

**デフォルトの AWS 所有のキー で暗号化テーブルを作成するには**
+ 暗号化された `Music` テーブルを次のとおりに作成します。

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5
  ```
**注記**  
このテーブルは、DynamoDB サービスアカウントでデフォルトの AWS 所有のキー を使用して暗号化されます。

**AWS マネージドキー で DynamoDB 用の暗号化テーブルを作成するには**
+ 暗号化された `Music` テーブルを次のとおりに作成します。

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --sse-specification Enabled=true,SSEType=KMS
  ```

   テーブルの説明の `SSEDescription` ステータスは、`ENABLED` に設定され、`SSEType` は `KMS` になります。

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

**カスタマーマネージドキーで DynamoDB 用の暗号化テーブルを作成するには**
+ 暗号化された `Music` テーブルを次のとおりに作成します。

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
  ```
**注記**  
`KMSMasterKeyId` の場合、キー ID、キー ARN、またはキーエイリアスを使用できます。キーエイリアス (`alias/my-key` など) を使用する場合、DynamoDB はエイリアスを解決し、基盤となる AWS KMS キーをテーブルに関連付けます。テーブルの説明では、`KMSMasterKeyArn` はエイリアスではなく、解決されたキーのキー ARN を常に表示します。キー識別子の詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[キー識別子 (KeyId)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id)」を参照してください。

   テーブルの説明の `SSEDescription` ステータスは、`ENABLED` に設定され、`SSEType` は `KMS` になります。

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

## 暗号化キーの更新
<a name="encryption.tutorial-update"></a>

DynamoDB コンソールまたは AWS CLI を使用して、AWS 所有のキー、AWS マネージドキー、カスタマーマネージドキーの間でいつでも既存のテーブルの暗号化キーを更新することができます。

### 暗号化キーの更新 (コンソール)
<a name="encryption.tutorial-update-console"></a>

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

1.  コンソールの左側のナビゲーションペインで、**[テーブル]** を選択します。

1. 更新するテーブルを選択します。

1. **[Actions]** (アクション) ドロップダウンを選択し、**[Update settings]** (設定の更新) オプションを選択します。

1. **[Additional settings]** (追加設定) タブに移動します。

1. **[Encryption]** (暗号化) の下の、**[Manage encryption]** (暗号化の管理) を選択します。

1. 暗号化タイプを選択します。
   +  **[Owned by Amazon DynamoDB.] (Amazon DynamoDB によって所有される。**) AWS KMS キーは DynamoDB によって所有、管理されます。このキーは追加料金なしで使用されます。
   + **AWS マネージドキー**のキーエイリアス: `aws/dynamodb`。キーはアカウントに保存され、AWS Key Management Service (AWS KMS) によって管理されます (AWS KMS の料金が適用されます)。
   +  **[Stored in your account, and owned and managed by you.] (アカウントに保存され、ユーザーが所有、管理される。**) キーはアカウントに保存され、AWS Key Management Service (AWS KMS) によって管理されます (AWS KMS の料金が適用されます)。
**注記**  
独自のキーを所有および管理することを選択した場合は、KMS キーポリシーが適切に設定されていることを確認してください。詳細については、「[カスタマーマネージドキーのキーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)」を参照してください。

   続いて、**[Save]** (保存) を選択して暗号化されたテーブルを更新します。暗号化タイプを確認するには、[**概要**] タブでテーブルの詳細を参照します。

### 暗号化キーの更新 (AWS CLI)
<a name="encryption.tutorial-update-cli"></a>

次の例は、AWS CLI を使用して暗号化テーブルを更新する方法を示しています。

**デフォルトの AWS 所有のキー で暗号化テーブルを更新するには**
+ 暗号化された `Music` テーブルを次の例のとおりに更新します。

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=false
  ```
**注記**  
このテーブルは、DynamoDB サービスアカウントでデフォルトの AWS 所有のキー を使用して暗号化されます。

**DynamoDB 用の AWS マネージドキー で暗号化テーブルを更新するには**
+ 暗号化された `Music` テーブルを次の例のとおりに更新します。

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=true
  ```

   テーブルの説明の `SSEDescription` ステータスは、`ENABLED` に設定され、`SSEType` は `KMS` になります。

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

**DynamoDB のカスタマーマネージドキーで暗号化テーブルを更新するには**
+ 暗号化された `Music` テーブルを次の例のとおりに更新します。

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
  ```
**注記**  
`KMSMasterKeyId` の場合、キー ID、キー ARN、またはキーエイリアスを使用できます。キーエイリアス (`alias/my-key` など) を使用する場合、DynamoDB はエイリアスを解決し、基盤となる AWS KMS キーをテーブルに関連付けます。テーブルの説明では、`KMSMasterKeyArn` はエイリアスではなく、解決されたキーのキー ARN を常に表示します。

   テーブルの説明の `SSEDescription` ステータスは、`ENABLED` に設定され、`SSEType` は `KMS` になります。

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```