

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS 物联网中的数据加密 FleetWise
<a name="data-encryption"></a>

数据加密是指保护传输中的数据（当数据往返 AWS 物联网时 FleetWise，以及在网关和服务器之间传输时）和静态数据（存储在本地设备上或存储在本地设备中时 AWS 服务）。可以使用客户端加密保护静态数据。

**注意**  
AWS 托管在物联网网关内并可通过本地网络访问的 AWS 物联 FleetWise 网 FleetWise 边缘处理公开 APIs 信息。 APIs 它们通过由 AWS IoT FleetWise Edge 连接器拥有的服务器证书支持的 TLS 连接公开。对于客户端身份验证，它们 APIs使用访问控制密码。服务器证书私钥和访问控制密码都存储在磁盘上。 AWS 物联网 FleetWise 边缘处理依赖文件系统加密来保护这些静态凭证的安全。

有关服务器端加密和客户端加密的更多信息，请查看下面的主题。

**Topics**
+ [AWS 物联网中的静态加密 FleetWise](encryption-at-rest.md)
+ [AWS 物联网中的密钥管理 FleetWise](key-management.md)

# AWS 物联网中的静态加密 FleetWise
<a name="encryption-at-rest"></a>

AWS 物联网将您的数据 FleetWise 存储在 AWS 云端和网关上。

## AWS 云端的静态数据
<a name="cloud-encryption-at-rest"></a>

AWS 默认情况下 AWS 服务 ，物联网将数据 FleetWise 存储在对静态数据进行加密的其他设备中。静态加密与 [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 集成，用于管理加密密钥，该密钥用于加密 AWS 物联网中的资产属性值和聚合值 FleetWise。您可以选择使用客户托管密钥对物 AWS 联网中的资产属性值和聚合值进行加密 FleetWise。您可以通过创建、管理和查看您的加密密钥 AWS KMS。

您可以选择 AWS 拥有的密钥 或客户管理的密钥来加密您的数据。

### 工作原理
<a name="how-it-works"></a>

静态加密与集成， AWS KMS 用于管理用于加密数据的加密密钥。
+ AWS 拥有的密钥 — 默认加密密钥。 AWS 物联网 FleetWise 拥有这把钥匙。您无法在 AWS 账户中查看、管理或使用此密钥。您也无法在 AWS CloudTrail 日志中看到对密钥的操作。使用此密钥不会产生额外的费用。
+ 客户托管密钥 - 此密钥存储在您的账户中，由您创建、拥有和管理。您对 KMS 密钥拥有完全控制权。需 AWS KMS 支付额外费用。

### AWS 拥有的密钥
<a name="aws-owned-cmk"></a>

AWS 拥有的密钥 未存储在您的账户中。它们是 KMS 密钥集合的一部分，这些密钥 AWS 拥有并管理多个密钥 AWS 账户。 AWS 服务 可以 AWS 拥有的密钥 用来保护您的数据。

您无法查看、管理 AWS 拥有的密钥、使用或审核其使用情况。但是无需执行任何操作或更改任何计划即可保护用于加密数据的密钥。

如果您使用，则无需支付任何费用 AWS 拥有的密钥，也不会计入您账户的 AWS KMS 配额。

### 客户管理密钥
<a name="customer-managed-cmk"></a>

客户管理密钥是在您的账户中由您创建、拥有和管理的 KMS 密钥。您可以完全控制这些 KMS 密钥，例如：
+ 制定和维护密钥策略、IAM 策略和授权
+ 启用和禁用 KMS 密钥
+ 轮换 KMS 密钥的加密材料
+ 添加 标签
+ 创建引用 KMS 密钥的别名 
+ 安排删除 KMS 密钥



您还可以使用 CloudTrail 和 Amaz CloudWatch on Logs 来跟踪 AWS 物联网 AWS KMS 代表您 FleetWise 发送的请求。

 如果您使用的是客户托管密钥，则必须向 AWS 物联网授予对存储在您账户中的 KMS 密钥的 FleetWise 访问权限。 AWS 物联网 FleetWise 使用信封加密和密钥层次结构来加密数据。您的 AWS KMS 加密密钥用于加密此密钥层次结构的根密钥。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[信封加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)。

以下示例策略授予 AWS IoT 使用您的 AWS KMS 密钥的 FleetWise 权限。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "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": "*"
    }
  ]
}
```

------

**重要**  
在 KMS 密钥策略中添加新部分时，请勿更改策略中的任何现有部分。 AWS 如果为物联网 FleetWise 启用了加密， FleetWise 并且存在以下任一情况， AWS 物联网将无法对您的数据执行操作：  
所提供的 KMS 密钥已被禁用。
未为该服务正确配置 KMS 密钥策略。

### 对视觉系统数据使用静态加密
<a name="vision-system-encryption"></a>

**注意**  
视觉系统数据目前为预览版，可能会发生变化。

如果您在 AWS 物联网 FleetWise 账户上启用了 AWS KMS 密钥的客户托管加密，并且想要使用视觉系统数据，请重置加密设置以与复杂数据类型兼容。这使 AWS 物联网 FleetWise 能够建立视觉系统数据所需的额外权限。

**注意**  
如果尚未重置视觉系统数据的加密设置，您的解码器清单可能会停留在验证状态。

1. 使用 [GetEncryptionConfiguration](https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_GetEncryptionConfiguration.html)API 操作检查是否启用了 AWS KMS 加密。如果加密类型为 `FLEETWISE_DEFAULT_ENCRYPTION`，则无需采取进一步操作。

1. 如果加密类型为`KMS_BASED_ENCRYPTION`，则使用 [PutEncryptionConfiguration](https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_PutEncryptionConfiguration.html)API 操作将加密类型重置为`FLEETWISE_DEFAULT_ENCRYPTION`。

   ```
   aws iotfleetwise put-encryption-configuration \
         --encryption-type FLEETWISE_DEFAULT_ENCRYPTION
   ```

1. 使用 [PutEncryptionConfiguration](https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_PutEncryptionConfiguration.html)API 操作将加密类型重新启用。`KMS_BASED_ENCRYPTION`

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

有关启用加密的更多信息，请参阅[AWS 物联网中的密钥管理 FleetWise](key-management.md)。

# AWS 物联网中的密钥管理 FleetWise
<a name="key-management"></a>

**重要**  
目前对某些 AWS 物联网 FleetWise 功能的访问受到限制。有关更多信息，请参阅 [AWS AWS 物联网中的区域和功能可用性 FleetWise](fleetwise-regions.md)。

## AWS 物联网 FleetWise 云密钥管理
<a name="key-cloud"></a>

默认情况下， AWS 物联网 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_cn/iot-fleetwise/latest/developerguide/key-management.html)

**注意**  
其他数据和资源使用由 AWS 物联网管理的密钥使用默认加密进行加密 FleetWise。此密钥已创建并存储在 AWS 物联网 FleetWise 帐户中。

有关更多信息，请参阅[什么是 AWS Key Management Service？](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 在《*AWS Key Management Service 开发人员指南》*中。

## 使用 KMS 密钥启用加密（控制台）
<a name="CMK-setup"></a>

要在 AWS 物联网中使用客户托管密钥 FleetWise，您必须更新您的 AWS 物联网 FleetWise 设置。

**使用 KMS 密钥启用加密（控制台）**

1. 打开[AWS 物联网 FleetWise 控制台](https://console.aws.amazon.com/iotfleetwise/)。

1. 导航到**设置**。

1. 在**加密**中，选择**编辑**以打开**编辑加密**页面。

1.  对于 “**加密密钥类型**”，选择 **“选择其他 AWS KMS 密钥**”。这允许使用存储在 AWS KMS中的客户托管密钥进行加密。
**注意**  
您只能对 AWS 物联网 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 物联网 FleetWise 账户启用加密。以下示例使用 AWS CLI。

要启用加密，请运行以下命令。
+ *kms\$1key\$1id*替换为 KMS 密钥的 ID。

```
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 物联网 FleetWise 服务主体 FleetWise 允许 AWS 物联网访问 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": "*"
}
```

作为安全最佳实践，请在 KMS 密钥策略中添加密钥`aws:SourceArn`并对其进行`aws:SourceAccount`条件处理。IAM 全局条件密钥`aws:SourceArn`有助于确保 AWS 物联网仅 FleetWise 将 KMS 密钥用于服务特定的资源 Amazon 资源名称 (ARNs)。

如果将值设置为`aws:SourceArn`，则必须始终设置为`arn:aws:iotfleetwise:us-east-1:account_id:*`。这允许 KMS 密钥为此访问所有 AWS IoT FleetWise 资源 AWS 账户。 AWS IoT FleetWise 支持每个账户为其中的所有资源使用一个 KMS 密钥 AWS 区域。在 ARN 资源字段中`SourceArn`使用任何其他值或不使用通配符 (\$1)，都会阻止 AWS Io FleetWise T 访问 KMS 密钥。

的值`aws:SourceAccount`是您的账户 ID，用于进一步限制 KMS 密钥，使其只能用于您的特定账户。如果您向 KMS 密钥添加密钥`aws:SourceAccount`并对其进行`aws:SourceArn`条件处理，请确保该密钥未被任何其他服务或账户使用。这有助于避免故障。

以下政策包括服务主体（服务的标识符），以及根据`aws:SourceAccount` AWS 区域 和您的账户 ID 进行`aws:SourceArn`设置以供使用。

```
{
  "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:*"
    }
  }
}
```

有关编辑用于 AWS IoT 的 KMS 密钥策略的更多信息 FleetWise，请参阅*AWS Key Management Service 开发人员指南*中的[更改密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)。

**重要**  
在 KMS 密钥策略中添加新部分时，请勿更改策略中的任何现有部分。 AWS 如果为物联网 FleetWise 启用了加密， FleetWise 并且存在以下任一情况， AWS 物联网将无法对您的数据执行操作：  
所提供的 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。本政策声明允许`PutEncryptionConfiguration`物 AWS 联网`GetEncryptionConfiguration`采取行动 FleetWise。

------
#### [ 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 物联网加密后删除了 AWS KMS 密钥 FleetWise，则必须通过删除所有数据来重置您的帐户，然后才能 FleetWise 再次使用 AWS 物联网。您可以使用列表和删除 API 操作来清理账户中的资源。

**清理账户中的资源**

1. 使用`listResponseScope`参数设置为 lis APIs t `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. 删除所有信号目录。