

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

# 托管集成中的数据保护
<a name="data-protection"></a>

分 AWS [担责任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)适用于托管集成中的数据保护。 AWS IoT Device Management如本模型所述 AWS ，负责保护运行所有网络的全球基础设施 AWS Cloud。您负责维护对托管在此基础结构上的内容的控制。您还负责您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息，请参阅[数据隐私常见问题](https://aws.amazon.com/compliance/data-privacy-faq/)。有关欧洲数据保护的信息，请参阅[通用数据保护条例（GDPR）中心](https://aws.amazon.com/compliance/gdpr-center/)。

出于数据保护的目的，我们建议您保护 AWS 账户 证书并使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 设置个人用户。这样，每个用户只获得履行其工作职责所需的权限。还建议您通过以下方式保护数据：
+ 对每个账户使用多重身份验证（MFA）。
+ 用于 SSL/TLS 与 AWS 资源通信。我们要求使用 TLS 1.2，建议使用 TLS 1.3。
+ 使用设置 API 和用户活动日志 AWS CloudTrail。有关使用 CloudTrail 跟踪捕获 AWS 活动的信息，请参阅*AWS CloudTrail 用户指南[中的](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)使用跟 CloudTrail 踪*。
+ 使用 AWS 加密解决方案以及其中的所有默认安全控件 AWS 服务。
+ 使用高级托管安全服务（例如 Amazon Macie），它有助于发现和保护存储在 Amazon S3 中的敏感数据。
+ 如果在 AWS 通过命令行接口或 API 进行访问时需要经过 FIPS 140-3 验证的加密模块，请使用 FIPS 端点。有关可用的 FIPS 端点的更多信息，请参阅《美国联邦信息处理标准（FIPS）第 140-3 版》[https://aws.amazon.com/compliance/fips/](https://aws.amazon.com/compliance/fips/)。

强烈建议您切勿将机密信息或敏感信息（如您客户的电子邮件地址）放入标签或自由格式文本字段（如**名称**字段）。这包括当您 AWS 服务 使用控制台、API AWS IoT Device Management 或 AWS SDK 处理面向或其他对象的托管集成 AWS CLI时。在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供 URL，强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。

## 托管集成的静态数据加密
<a name="encryption-rest"></a>

默认情况下，托管集成使用 AWS IoT Device Management 加密密钥对静态的敏感客户数据进行加密。

有两种类型的加密密钥用于保护托管集成客户的敏感数据：

**客户管理密钥 (CMK) **

托管集成支持使用您可以创建、拥有和管理的对称客户管理密钥。您可以完全控制这些 KMS 密钥，包括建立和维护其密钥策略、IAM policy 和授权、启用和禁用它们、轮换其加密材料、添加标签、创建别名（引用了 KMS 密钥）以及计划删除 KMS 密钥。

**AWS 拥有的密钥 **

默认情况下，Managed Integrations使用这些密钥来自动加密敏感的客户数据。您无法查看、管理或审核其使用情况。您无需采取任何措施或更改任何程序来保护加密数据的密钥。默认情况下，静态数据加密有助于降低保护敏感数据的操作开销和复杂性。同时，它还支持构建符合严格加密合规性和监管要求的安全应用程序。

使用的默认加密密钥是 AWS 自有密钥。或者，更新加密密钥的可选 API 是[`PutDefaultEncryptionConfiguration`](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_PutDefaultEncryptionConfiguration.html)。

有关 AWS KMS 加密密钥类型的更多信息，请参阅[AWS KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)。

### AWS KMS 用于托管集成
<a name="encryption-rest-KMS-usage"></a>

托管集成使用信封加密对所有客户数据进行加密和解密。这种类型的加密将获取您的纯文本数据并使用数据密钥对其进行加密。接下来，一个名为包装密钥的加密密钥将加密用于加密您的纯文本数据的原始数据密钥。在信封加密中，额外的包装密钥可用于加密与原始数据密钥的距离更接近的现有包装密钥。由于原始数据密钥由单独存储的包装密钥加密，因此您可以将原始数据密钥和加密的明文数据存储在同一位置。密钥环用于生成、加密和解密数据密钥，此外还使用包装密钥来加密和解密数据密钥。

**注意**  
 AWS 数据库加密 SDK 为您的客户端加密实现提供信封加密。有关 AWS 数据库加密 SDK 的更多信息，请参阅[什么是 AWS 数据库加密 SDK？](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/what-is-database-encryption-sdk.html)

有关信封加密、数据密钥、包装密钥和密钥环的更多信息，请参阅[信封加密](https://docs.aws.amazon.com/kms/latest/developerguide/kms-cryptography.html#enveloping)、[数据密钥](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/concepts.html#data-key)、[包装密钥](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/concepts.html#wrapping-key)和密[钥](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/concepts.html#keyring-concept)环。

托管集成要求服务使用您的客户管理密钥进行以下内部操作：
+ 向发送`DescribeKey`请求， AWS KMS 以验证在轮换数据密钥时提供的对称客户管理密钥 ID。
+ 向发送`GenerateDataKeyWithoutPlaintext`请求， AWS KMS 要求生成由您的客户管理密钥加密的数据密钥。
+ 向发送`ReEncrypt*`请求， AWS KMS 要求通过您的客户管理密钥重新加密数据密钥。
+ 向发送`Decrypt`请求， AWS KMS 要求通过您的客户管理密钥解密数据。

**使用加密密钥加密的数据类型 **

Managed Integrations 使用加密密钥加密静态存储的多种类型的数据。以下列表概述了使用加密密钥进行静态加密的数据类型：
+ 云到云 (C2C) 连接器事件，例如设备发现和设备状态更新。
+ 创建代表物理设备的*托管*事物和包含特定设备类型功能的设备配置文件。有关设备和设备配置文件的更多信息，请参阅[设备](device-and-device-profile-lifecycle-management.md#device)和[设备](device-and-device-profile-lifecycle-management.md#device)。
+ 有关设备实现各个方面的托管集成通知。有关托管集成通知的更多信息，请参阅[设置托管集成通知](managedintegrations-notifications.md#managedintegrations-notification-setup)。
+ 最终用户的个人身份信息 (PII)，例如设备身份验证材料、设备序列号、最终用户的姓名、设备标识符和设备亚马逊资源名称 (arn)。

### 托管集成如何在中使用关键策略 AWS KMS
<a name="encryption-rest-KMS-grants"></a>

对于分支机构密钥轮换和异步调用，托管集成需要密钥策略才能使用您的加密密钥。使用密钥策略的原因如下：
+ 以编程方式向其他 AWS 委托人授权使用加密密钥。

有关在托管集成中管理加密密钥访问权限的密钥策略示例，请参阅 [创建加密密钥](#encryption-rest-create-key)

**注意**  
对于 AWS 自有密钥，不需要密钥策略，因为 AWS 拥有的密钥归其所有 AWS ，您无法查看、管理或使用它。默认情况下，Managed Integrations使用 AWS 自有密钥自动加密您的敏感客户数据。

除了使用密钥策略管理您的密 AWS KMS 钥加密配置外，托管集成还使用 IAM 策略。有关 IAM 策略的更多信息，请参阅中的[策略和权限 AWS Identity and Access Management。](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)

### 创建加密密钥
<a name="encryption-rest-create-key"></a>

您可以使用 AWS 管理控制台 或 AWS KMS API 创建加密密钥。

**创建加密密钥 **

按照 AWS Key Management Service 开发人员指南中[创建 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)的步骤进行操作。

**密钥策略**

密钥政策声明控制密 AWS KMS 钥的访问权限。每个 AWS KMS 密钥将仅包含一个密钥策略。该密钥政策决定了哪些 AWS 委托人可以使用密钥以及他们如何使用密钥。有关使用密钥策略声明管理 AWS KMS 密钥访问和使用的更多信息，请参阅使用策略[管理访问权限](https://docs.aws.amazon.com/kms/latest/developerguide/access-glossary.html#security_iam_access-manage)。

以下是密钥政策声明示例，您可以使用该声明来管理托管集成中存储的 AWS KMS 密钥 AWS 账户 的访问和使用：

```
{
   "Statement" : [ 
    {
      "Sid" : "Allow access to principals authorized to use managed integrations",
      "Effect" : "Allow",
      "Principal" : {
        //Note: Both role and user are acceptable.
        "AWS": "arn:aws:iam::111122223333:user/username",
        "AWS": "arn:aws:iam::111122223333:role/roleName"
      },
      "Action" : [ 
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:Decrypt",
        "kms:ReEncrypt*"
      ],
      "Resource" : "arn:aws:kms:region:111122223333:key/key_ID",
      "Condition" : {
        "StringEquals" : {
          "kms:ViaService" : "iotmanagedintegrations.amazonaws.com"
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContext:aws-crypto-ec:iotmanagedintegrations": "111122223333"
        },
        "ArnLike": {
          "aws:SourceArn": [ 
            "arn:aws:iotmanagedintegrations:<region>:<accountId>:managed-thing/<managedThingId>",
            "arn:aws:iotmanagedintegrations:<region>:<accountId>:credential-locker/<credentialLockerId>",
            "arn:aws:iotmanagedintegrations:<region>:<accountId>:provisioning-profile/<provisioningProfileId>",
            "arn:aws:iotmanagedintegrations:<region>:<accountId>:ota-task/<otaTaskId>"
          ]
        }
      }
    },
    {
      "Sid" : "Allow access to principals authorized to use managed integrations for async flow",
      "Effect" : "Allow",
      "Principal" : {
        "Service": "iotmanagedintegrations.amazonaws.com"
      },
      "Action" : [ 
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:Decrypt",
        "kms:ReEncrypt*"
      ],
      "Resource" : "arn:aws:kms:region:111122223333:key/key_ID",
      "Condition" : {
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContext:aws-crypto-ec:iotmanagedintegrations": "111122223333"
        },
        "ArnLike": {
          "aws:SourceArn": [ 
            "arn:aws:iotmanagedintegrations:<region>:<accountId>:managed-thing/<managedThingId>",
            "arn:aws:iotmanagedintegrations:<region>:<accountId>:credential-locker/<credentialLockerId>",
            "arn:aws:iotmanagedintegrations:<region>:<accountId>:provisioning-profile/<provisioningProfileId>",
            "arn:aws:iotmanagedintegrations:<region>:<accountId>:ota-task/<otaTaskId>"
          ]
        }
      }
    },
    {
      "Sid" : "Allow access to principals authorized to use managed integrations for describe key",
      "Effect" : "Allow",
      "Principal" : {
        "AWS": "arn:aws:iam::111122223333:user/username"
      },
      "Action" : [ 
        "kms:DescribeKey",
      ],
      "Resource" : "arn:aws:kms:region:111122223333:key/key_ID",
      "Condition" : {
        "StringEquals" : {
          "kms:ViaService" : "iotmanagedintegrations.amazonaws.com"
        }
      }
    },
    {
      "Sid": "Allow access for key administrators",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
       },
      "Action" : [ 
        "kms:*"
       ],
      "Resource": "*"
    }
  ]
 }
```

有关密钥存储的更多信息，请参阅[密钥存储](https://docs.aws.amazon.com/kms/latest/developerguide/key-store-overview.html)。

### 更新加密配置
<a name="encryption-rest-encrypt-decrypt"></a>

无缝更新加密配置的能力对于管理托管集成的数据加密实施至关重要。当您最初加入托管集成时，系统将提示您选择加密配置。您的选项将是默认 AWS 拥有的密钥或创建自己的 AWS KMS 密钥。

**AWS 管理控制台**

要在中更新您的加密配置，请打开 AWS IoT 服务主页 AWS 管理控制台，然后导航到 Unified Control 的**管理集成 ** > ** 设置 ** > ** 加密**。在 “**加密设置**” 窗口中，您可以通过选择新密 AWS KMS 钥来更新加密配置，以获得额外的加密保护。选择 “**自定义加密设置（高级）” ** 以选择现有 AWS KMS 密钥，或者您可以选择 “**创建 AWS KMS 密钥” ** 来创建自己的客户管理密钥。

**API 命令 **

在托管集成中，有两个 API 用于管理 AWS KMS 密钥的加密配置：`PutDefaultEncryptionConfiuration`和`GetDefaultEncryptionConfiguration`。

要更新默认加密配置，请致电`PutDefaultEncryptionConfiuration`。有关 `PutDefaultEncryptionConfiuration` 的更多信息，请参阅[PutDefaultEncryptionConfiuration](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_PutDefaultEncryptionConfiguration.html)。

要查看默认加密配置，请致电`GetDefaultEncryptionConfiguration`。有关 `GetDefaultEncryptionConfiguration` 的更多信息，请参阅[GetDefaultEncryptionConfiguration](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_GetDefaultEncryptionConfiguration.html)。