

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 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 管理主控台 ，並在 https：//[https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/) 開啟 DynamoDB 主控台。

1.  在主控台左側的導覽窗格中，選擇 **Tables** (資料表)。

1. 選擇 **Create Table** (建立資料表)。針對**資料表名稱**，輸入 **Music**。針對主索引鍵，輸入 **Artist**，對於排序索引鍵，輸入 **SongTitle**，兩者都做為字串。

1. 在 **Settings** (設定) 中，確認選取 **Customize settings** (自訂設定)。
**注意**  
如果選取**使用預設設定**，則會使用 AWS 擁有的金鑰 靜態加密資料表，無需額外費用。

1. 在**靜態加密**下，選擇加密類型 - AWS 擁有的金鑰 AWS 受管金鑰、 或客戶受管金鑰。
   +  **由 Amazon DynamoDB ** AWS 擁有的金鑰，由 DynamoDB 特別擁有和管理。使用此金鑰不會向您收取額外費用。
   + **AWS 受管金鑰**。金鑰別名：`aws/dynamodb`。金鑰會存放在您的帳戶中，並由 AWS Key Management Service (AWS KMS) 管理。需支付 AWS KMS 費用。
   +  **儲存在您的帳戶中，且由您擁有和管理。**客戶自管金鑰。金鑰會存放在您的帳戶中，並由 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
  ```
**注意**  
此資料表現在使用 AWS 擁有的金鑰 DynamoDB 服務帳戶中的預設值加密。

**使用 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 管理主控台 ，並在 https：//[https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/) 開啟 DynamoDB 主控台。

1.  在主控台左側的導覽窗格中，選擇 **Tables** (資料表)。

1. 選擇您要更新的資料表。

1. 選取 **Actions** (動作) 下拉式清單，然後選取 **Update settings** (更新設定) 選項。

1. 轉至 **Additional settings** (其他設定) 索引標籤。

1. 在 **Encryption** (加密) 下，選擇 **Manage encryption** (管理加密)。

1. 選擇加密類型：
   +  **由 Amazon DynamoDB 擁有。** AWS KMS 金鑰由 DynamoDB 擁有和管理。使用此金鑰不會向您收取額外費用。
   + **AWS 受管金鑰**金鑰別名：`aws/dynamodb`。金鑰會存放在您的帳戶中，並由 管理 AWS Key Management Service。 (AWS KMS)。需支付 AWS KMS 費用。
   +  **儲存在您的帳戶中，且由您擁有和管理。**金鑰會存放在您的帳戶中，並由 管理 AWS Key Management Service。 (AWS KMS)。需支付 AWS KMS 費用。
**注意**  
如果您選擇擁有和管理自己的金鑰，請確保已正確設定 KMS 金鑰政策。如需詳細資訊，請參閱[客戶自管金鑰的金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

   然後，選擇 **Save (儲存)** 以更新加密資料表。若要確認加密類型，檢查 **Overview (概觀)** 索引標籤下的資料表詳細資訊。

### 更新加密金鑰 (AWS CLI)
<a name="encryption.tutorial-update-cli"></a>

下列範例顯示如何使用 AWS CLI更新加密資料表。

**使用預設值更新加密的資料表 AWS 擁有的金鑰**
+ 更新加密的 `Music` 資料表，如下列範例所示。

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=false
  ```
**注意**  
此資料表現在使用 AWS 擁有的金鑰 DynamoDB 服務帳戶中的預設值加密。

**使用 AWS 受管金鑰 適用於 DynamoDB 的 更新加密的資料表**
+ 更新加密的 `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",
  }
  ```