

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

# AWS IoT FleetWise 中的金鑰管理
<a name="key-management"></a>

**重要**  
對特定 AWS IoT FleetWise 功能的存取目前受到鎖定。如需詳細資訊，請參閱[AWS AWS IoT FleetWise 中的區域和功能可用性](fleetwise-regions.md)。

## AWS IoT FleetWise 雲端金鑰管理
<a name="key-cloud"></a>

根據預設， AWS IoT FleetWise 會使用 AWS 受管金鑰 來保護 中的資料 AWS 雲端。您可以更新您的設定，以使用客戶受管金鑰來加密 AWS IoT FleetWise 中的資料。您可以透過 AWS Key Management Service () 建立、管理和檢視加密金鑰AWS KMS。

AWS IoT FleetWise 支援使用存放在 中的客戶受管金鑰進行伺服器端加密， AWS KMS 以加密下列資源的資料。


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-fleetwise/latest/developerguide/key-management.html)

**注意**  
其他資料和資源會使用預設加密搭配由 AWS IoT FleetWise 管理的金鑰進行加密。此金鑰會建立並儲存在 AWS IoT FleetWise 帳戶中。

如需詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[什麼是 AWS Key Management Service？](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)。

## 使用 KMS 金鑰啟用加密 （主控台）
<a name="CMK-setup"></a>

若要搭配 AWS IoT FleetWise 使用客戶受管金鑰，您必須更新您的 AWS IoT FleetWise 設定。

**使用 KMS 金鑰啟用加密 （主控台）**

1. 開啟 [AWS IoT FleetWise 主控台](https://console.aws.amazon.com/iotfleetwise/)。

1. 導覽至**設定**。

1. 在**加密**中，選擇**編輯**以開啟**編輯加密**頁面。

1.  針對**加密金鑰類型**，選擇**選擇不同的 AWS KMS 金鑰**。這可使用存放於 的客戶受管金鑰進行加密 AWS KMS。
**注意**  
您只能使用 AWS IoT FleetWise 資源的客戶受管金鑰加密。這包括訊號目錄、車輛模型 （模型資訊清單）、解碼器資訊清單、車輛、機群和行銷活動。

1. 使用下列其中一個選項選擇您的 KMS 金鑰：
   + **若要使用現有的 KMS 金鑰** – 從清單中選擇您的 KMS 金鑰別名。
   + **若要建立新的 KMS 金鑰** – 選擇**建立 AWS KMS 金鑰**。
**注意**  
這會開啟 AWS KMS 主控台。如需建立 KMS 金鑰的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。

1. 選擇**儲存**以更新您的設定。

## 使用 KMS 金鑰啟用加密 (AWS CLI)
<a name="encryption-cli"></a>

您可以使用 [PutEncryptionConfiguration](https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_GetEncryptionConfiguration.html) API 操作來啟用 AWS IoT FleetWise 帳戶的加密。下列範例使用 AWS CLI。

若要啟用加密，請執行下列命令。
+ 以 KMS 金鑰的 ID 取代 *kms\$1key\$1id*。

```
aws iotfleetwise put-encryption-configuration \
      --encryption-type KMS_BASED_ENCRYPTION \
      --kms-key-id kms_key_id
```

**Example 回應**  

```
{
 "kmsKeyId": "customer_kms_key_id",
 "encryptionStatus": "PENDING",
 "encryptionType": "KMS_BASED_ENCRYPTION"
}
```

## KMS 金鑰政策
<a name="CMK-policy"></a>

建立 KMS 金鑰之後，您至少必須將下列陳述式新增至您的 KMS 金鑰政策，才能搭配 AWS IoT FleetWise 使用。KMS 金鑰政策陳述`iotfleetwise.amazonaws.com`式中的 AWS IoT FleetWise 服務主體允許 AWS IoT FleetWise 存取 KMS 金鑰。

```
{
  "Sid": "Allow FleetWise to encrypt and decrypt data when customer managed KMS key based encryption is enabled",
  "Effect": "Allow",
  "Principal": {
    "Service": "iotfleetwise.amazonaws.com"
  },
  "Action": [
    "kms:GenerateDataKey*",
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:DescribeKey",
    "kms:CreateGrant",
    "kms:RetireGrant",
    "kms:RevokeGrant"
  ],
  "Resource": "*"
}
```

做為安全最佳實務，請將 `aws:SourceArn`和 `aws:SourceAccount`條件金鑰新增至 KMS 金鑰政策。IAM 全域條件金鑰`aws:SourceArn`有助於確保 AWS IoT FleetWise 僅針對服務特定的資源 Amazon Resource Name (ARNs) 使用 KMS 金鑰。

如果您設定 的值`aws:SourceArn`，則一律必須為 `arn:aws:iotfleetwise:us-east-1:account_id:*`。這可讓 KMS 金鑰為此存取所有 AWS IoT FleetWise 資源 AWS 帳戶。 AWS IoT FleetWise 支援每個帳戶中所有資源的一個 KMS 金鑰 AWS 區域。針對 使用任何其他值`SourceArn`，或未針對 ARN 資源欄位使用萬用字元 (\$1)，可防止 AWS IoT FleetWise 存取 KMS 金鑰。

的值`aws:SourceAccount`是您的帳戶 ID，用於進一步限制 KMS 金鑰，使其只能用於您的特定帳戶。如果您將 `aws:SourceAccount`和 `aws:SourceArn`條件金鑰新增至 KMS 金鑰，請確定任何其他服務或帳戶不會使用該金鑰。這有助於避免失敗。

下列政策包含服務主體 （服務的識別符），以及根據 `aws:SourceAccount` 和您的帳戶 ID `aws:SourceArn`設定 AWS 區域 和 以供使用。

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {
    "Service": "iotfleetwise.amazonaws.com"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
  ],
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "aws:SourceAccount": "AWS-account-ID"
    },
    "ArnLike": {
      "aws:SourceArn": "arn:aws:iotfleetwise:region:AWS-account-ID:*"
    }
  }
}
```

如需有關編輯 KMS 金鑰政策以搭配 AWS IoT FleetWise 使用的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[變更金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)。

**重要**  
當您將新區段新增至 KMS 金鑰政策時，請勿變更政策中的任何現有區段。如果啟用了 for AWS IoT FleetWise 加密，且符合下列任一條件， AWS IoT FleetWise 將無法對資料執行操作：  
KMS 金鑰已停用或刪除。
服務未正確設定 KMS 金鑰政策。

## AWS KMS 加密許可
<a name="encryption-permissions"></a>

如果您啟用 AWS KMS 加密，則必須在角色政策中指定許可，以便您可以呼叫 AWS IoT FleetWise APIs。下列政策允許存取所有 AWS IoT FleetWise 動作，以及 AWS KMS 特定許可。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iotfleetwise:*",
        "kms:GenerateDataKey*",
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:DescribeKey"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

您的角色需要下列政策陳述式，才能叫用加密 APIs。此政策陳述式允許來自 AWS IoT FleetWise 的 `PutEncryptionConfiguration`和 `GetEncryptionConfiguration`動作。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iotfleetwise:GetEncryptionConfiguration", 
        "iotfleetwise:PutEncryptionConfiguration",
        "kms:GenerateDataKey*",
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:DescribeKey"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

## 刪除 AWS KMS 金鑰後的復原
<a name="encryption-recovery"></a>

如果您在使用 AWS IoT FleetWise 啟用加密後刪除 AWS KMS 金鑰，您必須先刪除所有資料，再再次使用 AWS IoT FleetWise 來重設您的帳戶。您可以使用 清單並刪除 API 操作來清除帳戶中的資源。

**清除帳戶中的資源**

1. 使用將 `listResponseScope` 參數設為 APIs`METADATA_ONLY`。這提供資源清單，包括資源名稱和其他中繼資料，例如 ARNs 和時間戳記。

1. 使用刪除 APIs移除個別資源。

您必須依照下列順序清除資源。

1. 行銷活動

   1. 列出 `listResponseScope` 參數設定為 的所有行銷活動`METADATA_ONLY`。

   1. 刪除行銷活動。

1. 機群和車輛

   1. 列出 `listResponseScope` 參數設定為 的所有機群`METADATA_ONLY`。

   1. 列出每個機群的所有車輛，並將 `listResponseScope` 參數設為 `METADATA_ONLY`。

   1. 取消所有車輛與每個機群的關聯。

   1. 刪除機群。

   1. 刪除車輛。

1. 解碼器資訊清單

   1. 列出 `listResponseScope` 參數設定為 的所有解碼器資訊清單`METADATA_ONLY`。

   1. 刪除所有解碼器資訊清單。

1. 車輛模型 （模型資訊清單）

   1. 列出 `listResponseScope` 參數設定為 的所有車輛模型`METADATA_ONLY`。

   1. 刪除所有車輛模型。

1. 狀態範本

   1. 列出 `listResponseScope` 參數設定為 的所有狀態範本`METADATA_ONLY`。

   1. 刪除所有狀態範本。

1. 訊號目錄

   1. 列出所有訊號目錄。

   1. 刪除所有訊號目錄。