

# AWS IoT Device Defender 入门
AWS IoT Device Defender 入门

您可以使用以下教程来学习使用 AWS IoT Device Defender。

**Topics**
+ [

# 设置
](dd-setting-up.md)
+ [

# 审计指南
](audit-tutorial.md)
+ [

# ML Detect 指南
](dd-detect-ml-getting-started.md)
+ [

# 自定义查看 AWS IoT Device Defender 审计结果的时间和方式
](dd-suppressions-example.md)

# 设置


首次使用 AWS IoT Device Defender 前，请完成以下任务：

**Topics**
+ [

## 注册 AWS 账户
](#sign-up-for-aws)
+ [

## 创建具有管理访问权限的用户
](#create-an-admin)

## 注册 AWS 账户


如果您还没有 AWS 账户，请完成以下步骤来创建一个。

**注册 AWS 账户**

1. 打开 [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)。

1. 按照屏幕上的说明操作。

   在注册时，将接到电话或收到短信，要求使用电话键盘输入一个验证码。

   当您注册 AWS 账户 时，系统将会创建一个 AWS 账户根用户**。根用户有权访问该账户中的所有 AWS 服务和资源。作为最佳安全实践，请为用户分配管理访问权限，并且只使用根用户来执行[需要根用户访问权限的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

注册过程完成后，AWS 会向您发送一封确认电子邮件。在任何时候，您都可以通过转至 [https://aws.amazon.com/](https://aws.amazon.com/) 并选择**我的账户**来查看当前的账户活动并管理您的账户。

## 创建具有管理访问权限的用户


注册 AWS 账户 后，请保护好您的 AWS 账户根用户，启用 AWS IAM Identity Center，并创建一个管理用户，以避免使用根用户执行日常任务。

**保护您的 AWS 账户根用户**

1.  选择**根用户**并输入您的 AWS 账户 电子邮件地址，以账户拥有者身份登录 [AWS 管理控制台](https://console.aws.amazon.com/)。在下一页上，输入您的密码。

   要获取使用根用户登录方面的帮助，请参阅《AWS 登录 用户指南》**中的 [Signing in as the root user](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 为您的根用户启用多重身份验证（MFA）。

   有关说明，请参阅《IAM 用户指南》**中的[为 AWS 账户 根用户启用虚拟 MFA 设备（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html)。

**创建具有管理访问权限的用户**

1. 启用 IAM Identity Center。

   有关说明，请参阅**《AWS IAM Identity Center 用户指南》中的 [Enabling AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)。

1. 在 IAM Identity Center 中，为用户授予管理访问权限。

   有关如何使用 IAM Identity Center 目录 作为身份源的教程，请参阅**《AWS IAM Identity Center 用户指南》中的 [Configure user access with the default IAM Identity Center 目录](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html)。

**以具有管理访问权限的用户身份登录**
+ 要使用您的 IAM Identity Center 用户身份登录，请使用您在创建 IAM Identity Center 用户时发送到您的电子邮件地址的登录网址。

  要获取使用 IAM Identity Center 用户登录方面的帮助，请参阅《AWS 登录 用户指南》**中的 [Signing in to the AWS access portal](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。

**将访问权限分配给其他用户**

1. 在 IAM Identity Center 中，创建一个权限集，该权限集遵循应用最低权限的最佳做法。

   有关说明，请参阅《AWS IAM Identity Center 用户指南》**中的 [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 将用户分配到一个组，然后为该组分配单点登录访问权限。

   有关说明，请参阅《AWS IAM Identity Center 用户指南》**中的 [Add groups](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)。

这些任务创建一个 AWS 账户和一个具有该账户的管理员权限的用户。

# 审计指南
审计指南

本教程提供有关如何配置定期审计、设置告警、查看审计结果和减少审计问题的说明。

**Topics**
+ [

## 先决条件
](#audit-tutorial-prerequisites)
+ [

## 启用审计检查
](#audit-tutorial-enable-checks)
+ [

## 查看审计结果
](#audit-tutorial-view-audit)
+ [

## 创建审计缓解操作
](#audit-tutorial-mitigation)
+ [

## 将缓解操作应用于审计查找结果
](#apply-mitigation-actions)
+ [

## 创建 AWS IoT Device Defender 审计 IAM 角色（可选）
](#audit-iam)
+ [

## 启用 SNS 通知（可选）
](#audit-tutorial-enable-sns)
+ [

## 配置客户自主管理型密钥的权限（可选）
](#audit-tutorial-cmk-permissions)
+ [

## 启用日志记录（可选）
](#enable-logging)

## 先决条件


要完成本教程，您需要：
+ AWS 账户。如果您尚未拥有账户，请参阅[设置](https://docs.aws.amazon.com/iot/latest/developerguide/dd-setting-up.html)。

## 启用审计检查


在以下流程中，您可以启用审计检查以查看账户和设备设置及策略，以确保安全措施已就绪。在本教程中，我们指导您启用所有审计检查，但您可以仅选择所需的检查。

审计定价是按每月每台设备计数制定的（连接到 AWS IoT 机群设备)。因此，在使用此特征时，添加或删除审计检查不会影响您的月度账单。

1. 打开 [AWS IoT 控制台](https://console.aws.amazon.com/iot)。在导航窗格中，展开**安全**并选择**简介**。

1. 选择**自动执行 AWS IoT 安全审计**。审计检查会自动开启。

1. 展开**审计**，然后选择**设置**以查看您的审计检查。选择审计检查名称以了解审计检查的作用。有关审计检查的详细信息，请参阅[审核检查](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-audit-checks.html)。

1. （可选）如果您已经有要使用的角色，请选择**管理服务权限**，从列表中选择该角色，然后选择**更新**。

## 查看审计结果


以下流程介绍如何查看审计结果。在本教程中，您将看到在 [启用审计检查](#audit-tutorial-enable-checks) 教程设置的审计检查的审计结果。

**查看审计结果**

1. 打开 [AWS IoT 控制台](https://console.aws.amazon.com/iot)。在导航窗格中，依次展开**安全**、**审计**，然后选择**结果**。

1. 选择您想要调查的审计计划的**名称**。

1. 在**不合规检查**中，在**缓解**下，选择信息按钮以获取有关其不合规原因的信息。有关如何使您的不合规检查变为合规的指导，请参阅[审计检查](device-defender-audit-checks.md)。

## 创建审计缓解操作


在以下过程中，您将创建一个 AWS IoT Device Defender 审计缓解操作以启用 AWS IoT 日志记录。每个审计检查都已映射缓解操作，这些操作将影响您为想要修复的审计检查所选择的**操作类型**。有关更多信息，请参阅[缓解操作](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-mitigation-actions.html#defender-audit-apply-mitigation-actions.html)。

**使用 AWS IoT 控制台创建缓解操作**

1. 打开 [AWS IoT 控制台](https://console.aws.amazon.com/iot)。在导航窗格中，依次展开**安全**、**检测**，然后选择**缓解操作**。

1. 在 **Mitigation Actions**（缓解操作）页面上，选择 **Create**（创建）。

1. 在**创建新的缓解操作**页面上，对于**操作名称**，为您的缓解操作输入唯一名称，例如 *EnableErrorLoggingAction*。

1. 对于**操作类型**，选择**启用 AWS IoT 日志记录**。

1. 在**权限**中，选择**创建角色**。对于**角色名称**，使用 *IoTMitigationActionErrorLoggingRole*。然后选择 **Create**。

1. 在**参数**中，在**用于日志记录的角色**下，选择 `IoTMitigationActionErrorLoggingRole`。对于 **Log level**（日志级别），选择 `Error`。

1. 选择**创建**。

## 将缓解操作应用于审计查找结果


以下流程介绍如何将缓解操作应用于审计结果。

**减少不合规审计查找结果**

1. 打开 [AWS IoT 控制台](https://console.aws.amazon.com/iot)。在导航窗格中，依次展开**安全**、**审计**，然后选择**结果**。

1. 选择要响应的审计结果。

1. 检查您的结果。

1. 选择 **Start mitigation actions**（启动缓解操作）。

1. 对于**日志记录已禁用**，请选择您之前创建的缓解操作 `EnableErrorLoggingAction`。您可以为每个不合规的调查发现选择适当的操作以解决这些问题。

1. 在**选择原因代码**中，选择审计检查返回的原因代码。

1. 选择**启动任务**。缓解操作可能需要几分钟时间来运行。

**要检查缓解操作是否有效**

1. 在 AWS IoT 控制台的导航窗格中，选择**设置**。

1. 在**服务日志**中，确认**日志级别**为 `Error (least verbosity)`。

## 创建 AWS IoT Device Defender 审计 IAM 角色（可选）


在以下过程中，您创建一个 AWS IoT Device Defender 审计 IAM 角色，为 AWS IoT Device Defender 提供对于 AWS IoT 的读取访问权限。

**创建用于 AWS IoT Device Defender 的服务角色（IAM 控制台）**

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**角色**，然后选择**创建角色**。

1. 选择 **AWS 服务** 角色类型。

1. 在**其它 AWS 服务的用例**中，选择 **AWS IoT**，然后选择 **IoT - Device Defender 审计**。

1. 选择**下一步**。

1. （可选）设置[权限边界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。这是一项高级特征，可用于服务角色，但不可用于服务相关角色。

   展开 **Permissions boundary**（权限边界）部分，然后选择 **Use a permissions boundary to control the maximum role permissions**（使用权限边界控制最大角色权限）。IAM 包括您的账户中的 AWS 托管策略和客户托管策略的列表。选择要用于权限边界的策略，或选择**创建策略**以打开新的浏览器选项卡并从头开始创建新策略。有关更多信息，请参阅 *IAM 用户指南* 中的[创建 IAM policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)。在您创建策略后，关闭该选项卡并返回到您的原始选项卡，以选择要用于权限边界的策略。

1. 选择**下一步**。

1. 输入有助于标识此角色的作用的角色名称。角色名称在您的 AWS 账户 内必须是唯一的。名称不区分大小写。例如，您无法同时创建名为 **PRODROLE** 和 **prodrole** 的角色。由于多个实体可能引用该角色，因此，角色创建完毕后，您将无法编辑角色名称。

1. （可选）对于 **Description**（描述），输入新角色的描述。

1. 在 **Step 1: Select trusted entities**（步骤 1：选择可信实体）或 **Step 2: Select permissions**（步骤 2：选择权限）部分中的 **Edit**（编辑），以编辑角色的用户案例和权限。

1. （可选）通过以键值对的形式附加标签来向用户添加元数据。有关在 IAM 中使用标签的更多信息，请参阅 *《IAM 用户指南》* 中的[标记 IAM 资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)。

1. 检查角色，然后选择 **Create role**。

## 启用 SNS 通知（可选）


在以下过程中，您可以启用 Amazon SNS（SNS）通知，以便在审计发现任何不合规的资源时向您发出警报。在本教程中，您将为 [启用审计检查](#audit-tutorial-enable-checks) 教程中启用的审计检查设置通知。

1. 附加允许通过 AWS 管理控制台访问 SNS 的策略（如果您尚未附加）。为此，您可以按照《IAM 用户指南》**的[将策略附加到 IAM 用户组](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups_manage_attach-policy.html)中的说明操作，并选择 **AWSIoTDeviceDefenderPublishFindingsToSNSMitigationAction** 策略。

1. 打开 [AWS IoT 控制台](https://console.aws.amazon.com/iot)。在导航窗格中，依次展开**安全**、**审计**，然后选择**设置**。

1. 在 **Device Defender 审计设置**页面的底部，选择**启用 SNS 警报**。

1. 选择 **Enabled (已启用)**。

1. 对于**主题**，选择**创建新主题**。将主题命名为 *IoTDDNotifications*，然后选择**创建**。对于**角色**，选择您在[创建 AWS IoT Device Defender 审计 IAM 角色（可选）](#audit-iam)中创建的角色。

1. 选择**更新**。

1. 如果您希望通过 Amazon SNS 在运维平台上接收电子邮件或文本，请参阅[使用 Amazon Simple Notification Service 发送用户通知](https://docs.aws.amazon.com/sns/latest/dg/sns-user-notifications.html)。

## 配置客户自主管理型密钥的权限（可选）


**注意**  
仅当您为 AWS IoT Core 选择了客户自主管理型密钥时，才需要进行此配置。有关 AWS IoT Core 静态加密的更多信息，请参阅 [AWS IoT Core 中的静态数据加密](https://docs.aws.amazon.com/iot/latest/developerguide/encryption-at-rest.html)。

如果您为 AWS IoT Core 静态加密启用了客户自主管理型密钥（CMK），则 AWS IoT Device Defender Audit 使用的 IAM 角色需要额外的权限才能解密数据。如果没有这些权限，审计操作将失败。

根据最低权限原则，[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSIoTDeviceDefenderAudit.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSIoTDeviceDefenderAudit.html) 托管策略在设计时就不包括 `kms:Decrypt` 权限。使用客户自主管理型密钥时，您必须手动将这些权限添加到您的审计角色中。

**为 AWS IoT Device Defender Audit IAM 角色添加 KMS 权限**

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**角色**，然后搜索您在 [创建 AWS IoT Device Defender 审计 IAM 角色（可选）](#audit-iam) 中创建的角色或您在配置审计设置时指定的角色。

1. 选择角色名称以打开其详细信息页面。

1. 在**权限**选项卡中，选择**添加权限**，然后选择**创建内联策略**。

1. 选择 **JSON** 选项卡，然后输入以下策略。使用您的 AWS KMS 密钥详细信息替换 *REGION*、*ACCOUNT\$1ID* 和 *KEY\$1ID*：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt"
         ],
         "Resource": "arn:aws:kms:REGION:ACCOUNT_ID:key/KEY_ID"
       }
     ]
   }
   ```

1. 选择**下一步**。

1. 对于**策略名称**，输入一个描述性名称，例如 **DeviceDefenderAuditKMSDecrypt**。

1. 选择**创建策略**。

## 启用日志记录（可选）


本流程介绍如何启用 AWS IoT 将信息记录到 CloudWatch Logs 中。这将允许您查看您的审计结果。启用日志记录可能会导致费用产生。

**要启用日志记录：**

1. 打开 [AWS IoT 控制台](https://console.aws.amazon.com/iot)。在导航窗格上，选择**设置**。

1. 在**日志**中，选择**管理日志**。

1. 对于**选择角色**，选择**创建角色**。将角色命名为 *AWSIoTLoggingRole*，然后选择**创建**。此时会自动附加策略。

1. 对于**日志级别**，选择**调试(最详细)**。

1. 选择**更新**。

# ML Detect 指南


**注意**  
ML Detect 在以下区域中不可用：  
亚太地区（马来西亚）

在本入门指南中，您将创建一个 ML Detect 安全配置文件，该配置文件使用机器学习 (ML) 根据设备中的历史指标数据创建预期行为模型。当 ML Detect 正在创建 ML 模型时，您可以监控其进度。构建 ML 模型后，您可以持续查看和调查告警，并缓解已发现的问题。

有关 ML Detect 及其 API 和 CLI 命令的更多信息，请参阅 [ML Detect](dd-detect-ml.md)。

**Topics**
+ [

## 先决条件
](#ml-detect-prereqs)
+ [

## 如何在控制台中使用 ML Detect
](#dd-detect-ml-console)
+ [

## 如何将 （ML Detect 与 CLI 一起使用
](#dd-detect-ml-cli)

## 先决条件

+ AWS 账户。如果您尚未拥有账户，请参阅[设置](https://docs.aws.amazon.com/iot/latest/developerguide/dd-setting-up.html)。

## 如何在控制台中使用 ML Detect


**Topics**
+ [

### 启用 ML Detect
](#enable-ml-detect-console)
+ [

### 监控您的 ML 模型状态
](#monitor-ml-models-console)
+ [

### 查看您的 ML Detect 告警
](#review-ml-alarms-console)
+ [

### 微调您的机器学习（ML）告警
](#fine-tune-ml-models-console)
+ [

### 标记告警的验证状态
](#mark-your-alarms)
+ [

### 缓解已确定的设备问题
](#mitigate-ml-issues-console)

### 启用 ML Detect


以下流程详细介绍了如何在控制台中设置 ML Detect。

1. 首先，确保您的设备将按 [ML Detect 最低要求](dd-detect-ml.md#dd-detect-ml-requirements)中的定义要求创建最小的数据点，以进行持续训练和刷新模型。要进行数据收集，请确保您的安全配置文件已附加到目标，该目标可以是事物或事物组。

1. 在 [AWS IoT 控制台](https://console.aws.amazon.com/iot)的导航窗格中，展开 **Defend**（防护）。选择 **Detect**（检测）、**Security profiles**（安全配置文件）、**Create security profile**（创建安全配置文件），然后选择 **Create ML anomaly Detect profile**（创建 ML 异常检测配置文件）。

1. 在 **Set basic configurations**（设置基本配置）页面上，执行以下操作。
   + 在 **Target**（目标）项下，选择您的目标设备组。
   + 在 **Security profile name**（安全配置文件名称）中，输入您的安全配置文件的名称。
   + （可选）在 **Description**（说明）项下，您可以编写 ML 配置文件的简述。
   + 在 **Selected metric behaviors in Security Profile**（安全配置文件中特定的指标行为）项下，选择要监控的指标。  
![\[“创建 ML 安全配置文件”配置页面，已将“所有已注册的事物”选择为目标，列出了诸如授权失败和连接尝试次数之类的指标行为，并具有用于添加云端或设备端指标的选项。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-set-basic.png)

   完成此操作后，选择**下一步**。

1. 在 **Set SNS (optional)**（设置 SNS（可选））页面上，为设备违反配置文件中的行为时的告警通知指定 SNS 主题。选择要用于发布到选定 SNS 主题的 IAM 角色。

   如果您还没有 SNS 角色，请使用以下步骤创建具有所需的适当权限和信任关系的角色。
   + 导航到 [IAM 控制台](https://console.aws.amazon.com/iam/)。在导航窗格中，选择**角色**，然后选择**创建角色**。
   + 在**Select type of trusted entity**（选择信任实体的类型）项下，选择 **AWS service**（亚马逊云科技服务）。然后，在 **Choose a use case**（选择使用案例）中，选择 **IoT**，在 **Select your use case**（选择您的使用案例）项下，选择 **IoT - Device Defender Mitigation Actions**（IoT - Device Defender 缓解操作）。完成操作后，选择 **Next: Permissions**（下一步：权限）。
   + 在 **Attached permissions policies**（附加权限策略）项下，确保选择了 **AWSIoTDeviceDefenderPublishFindingsToSNSMitigationAction**，然后选择 **Next: Tags**（下一步：标签）。  
![\[AWS IoT Device Defender 角色的权限策略表，其中包含策略名称、有关每个策略提供访问权限的内容的描述，以及用于筛选或搜索策略的选项。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-sns-findings.png)
   + 在 **Add tags (optional)**（添加标签（可选））项下，您可以添加要与角色关联的任何标签。完成此操作后，选择 **Next: Review (下一步：审核)**。
   + 在 **Review**（审核）项下，请为您的角色指定一个名称，并确保 **AWSIoTDeviceDefenderPublishFindingsToSNSMitigationAction** 列示在 **Permissions**（权限）项下，且 **AWS service: iot.amazonaws.com** 列在 **Trust relationships**（信任关系）项下。完成后，选择 **Create role**（创建角色）。  
![\[IAM 角色摘要页面显示 Sample-SNS-role 详细信息，例如角色 ARN、描述、实例配置文件 ARN、路径、创建时间、最长会话持续时间以及所应用的“AWS IoT Device Defender 将调查发现发布到 SNS 缓解操作”策略\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-detect-permissions.png)  
![\[IAM Sample-SNS-role 摘要显示角色 ARN、角色描述（向 AWS IoT Device Defender 提供发布 SNS 通知的写入权限）、路径、创建时间和可信实体\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-detect-trust-relationships.png)

1. 在 **Edit Metric behavior**（编辑指标行为）页面上，您可以自定义您的机器学习（ML）行为设置。  
![\[“编辑指标行为”部分，包含授权失败、输入字节数和连接尝试次数指标，可用于为警报触发器配置数据点以及配置通知和 ML Detect 置信度。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-update-config.png)

1. 完成此操作后，选择**下一步**。

1. 在 **Review configuration**（查看配置）页面上，验证您希望机器学习监控的行为，然后选择 **Next**（下一步）。  
![\[编辑 ML 安全配置文件页面显示 Smart_lights_ML_Detect_Security_Profile，目标为“所有已注册的事物”，并具有对应于授权失败、输出字节数、连接尝试次数和断开连接次数的指标行为。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-review-config.png)

   

1. 创建了安全配置文件之后，您将会被重定向到 **Security Profiles**（安全配置文件）页面，此处将显示新创建的安全配置文件。
**注意**  
初始 ML 模型训练和创建需要 14 天才能完成。如果您的设备上存在任何异常活动，则在完成后您应会看到告警。

### 监控您的 ML 模型状态


当您的 ML 模型处于初始训练阶段时，您可以通过执行以下步骤随时监控其进度。

1. 在 [AWS IoT 控制台](https://console.aws.amazon.com/iot)中的导航窗格中，展开 **Defend**（防护），然后选择 **Detect**（检测）、**Security profiles**（安全配置文件）。

1. 在 **Security Profiles**（安全配置文件）页面上，选择您要查看的安全配置文件。然后，选择 **Behaviors and ML training**（行为和机器学习（ML）训练）。

1. 在 **Behaviors and ML training**（行为和机器学习（ML）训练）页面上，检查 ML 模型的训练进度。

   在模型状态为 **Active**（激活）后，它将开始根据您的使用情况做出 Detect 决策，并每天更新配置文件。  
![\[控制面板显示了用于监控 TCP/UDP 侦听端口和已建立的 TCP 连接的低置信度机器学习模型。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-active-state.png)

**注意**  
如果您的模型未按预期进行，请确保您的设备满足 [最低要求](dd-detect-ml.md#dd-detect-ml-requirements) 的要求。

### 查看您的 ML Detect 告警


在构建 ML 模型并准备进行数据推理之后，您可以定期查看和调查由模型识别的告警。

1. 在 [AWS IoT 控制台](https://console.aws.amazon.com/iot)的导航窗格中，展开 **Defend**（防护），然后选择 **Detect**（检测）、**Alarms**（告警）。  
![\[AWS IoT Device Defender 警报列表显示了 5 个主动授权失败警报，包括事物名称、安全配置文件、行为类型、行为名称、上次发出时间和验证状态等列。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-alarms.png)

1. 如果您导航到 **History**（历史记录）选项卡上，您还可以查看不再处于告警状态的设备相关详细信息。  
![\[折线图显示两周期间内处于警报中、已清除和已失效状态的警报，警报数量位于 y 轴上，日期位于 x 轴上。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-history-alarm.png)

   若要获取更多信息，请在 **Manage**（管理）项下选择 **Things**（事物），选择您想要查看更多详细信息的事物，然后导航到 **Defender metrics**（Defender 指标）。您可以访问 **Defender metrics graph**（Defender 指标图形）并对 **Active**（激活）选项卡中告警的任何内容进行调查。在这种情况下，图形显示了启动告警的消息大小峰值。您可以看到告警随后被清除。  
![\[IoT 事物控制面板显示了消息大小最大值指标图，指定日期和时间的峰值为 801 字节。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-defender-metrics.png)

### 微调您的机器学习（ML）告警


在构建 ML 模型并准备好进行数据评估之后，您可以更新安全配置文件的机器学习（ML）行为设置以更改配置。以下流程介绍如何在 AWS CLI 中更新您的安全配置文件的机器学习（ML）行为设置。

1. 在 [AWS IoT 控制台](https://console.aws.amazon.com/iot)中的导航窗格中，展开 **Defend**（防护），然后选择 **Detect**（检测）、**Security profiles**（安全配置文件）。

1. 在 **Security Profiles**（安全配置文件）页面上，选中要查看的安全配置文件旁边的复选框。然后依次选择 **Actions**（操作）、**Edit**（编辑）。  
![\[AWS IoT Device Defender 安全配置文件列表显示了配置文件名称、ML 阈值类型、保留的行为、目标事物、创建日期、通知状态\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-fine-tune.png)

1. 在 **Set basic configurations**（设置基本配置）项下，您可以调整安全配置文件目标事物组或更改要监控的指标。  
![\[“创建 ML 安全配置文件”配置页面，已将“所有已注册的事物”选择为目标，列出了诸如授权失败和连接尝试次数之类的指标行为，并具有用于添加云端或设备端指标的选项\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-set-basic.png)

1. 您可以通过导航到 **Edit metric behaviors**（编辑指标行为）更新以下任意一项。
   + 启动告警所需的 ML 模型数据点
   + 清除告警所需的 ML 模型数据点
   + ML Detect 置信级别
   + ML Detect 通知，例如 **Not suppressed**（未隐藏）、**Suppressed**（隐藏）。  
![\[“编辑指标行为”部分，其中包含用于为 ML 安全配置文件配置授权失败、输出字节数和连接尝试次数指标的选项。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-update-config-2.png)

### 标记告警的验证状态


通过设置验证状态并提供该验证状态的描述来标记告警。这会帮助您和您的团队识别不必回应的告警。

1. 在 [AWS IoT 控制台](https://console.aws.amazon.com/iot/)的导航窗格中，展开 **Defend**（防护），然后选择 **Detect**（检测）、**Alarms**（告警）。选择告警以标记其验证状态。  
![\[AWS IoT Device Defender 警报视图显示了 IoT 控制台事物的主动授权失败行为事件，例如 iotconsole-6f8379bc-c245-4ffe-8ef7-b2b52e78975c 以及 fdsa 安全配置文件。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-alarm-select.png)

1. 选择 **Mark verification state**（标记验证状态）。验证状态模式打开。

1. 选择适当的验证状态，输入验证说明（可选），然后选择 **Mark**（标记）。此操作将验证状态和描述分配给选定的告警。  
![\[用于标记警报验证状态的对话框，选项包括：未知、真警报、误报、良性真警报。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-alarm-state-window.png)

### 缓解已确定的设备问题


1. *（可选）*在设置隔离缓解措施之前，让我们设置一个隔离组，我们会将违规的设备移动到该组。您也可以使用现有组。

1. 导航到 **Manage**（管理）、**Thing groups**（事物组），然后选择 **Create Thing Group**（创建事物组）。为您的事物组命名。在本教程中，我们将事物组命名为 `Quarantine_group`。在 **Thing Group**（事物组）、**Security**（安全）中，将以下策略应用于事物组。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": "iot:*",
               "Resource": "*"
           }
       ]
   }
   ```

------  
![\[AWS IoT 控制台“创建事物组”页面，具有“创建事物组”按钮。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-create-thing-group.png)

   完成后，选择 **Create thing group**（创建事务组）。

1. 现在我们已经创建了事物组，让我们创建一个缓解操作，将告警中的设备移动到 `Quarantine_group`。

   在 **Defend**（防护）、**Mitigation actions**（缓解操作）中，选择 **Create**（创建）。  
![\[AWS IoT Device Defender 缓解操作配置表单，包含操作名称、操作类型、权限、操作执行角色和事物组等字段。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-miti-create.png)

1. 在 **Create new mitigation action**（创建新的缓解操作）页面上，输入以下信息。
   + **Action name**（操作名称）：指定缓解操作的名称，例如 **Quarantine\$1action**。
   + **Action type**（操作类型）：选择操作的类型。我们将选择 **Add things to things group (Audit or Detect mitigation)**（将事物添加到事物组（审计或 Detect 缓解））。
   + **Action execution role**（操作执行角色）：创建角色或选择现有角色（如果您之前创建了角色）。
   + **Parameters**（参数）：选择事物组。我们可以使用之前创建的 `Quarantine_group`。  
![\[AWS IoT Device Defender 缓解操作配置表单，包含操作名称、操作类型、权限、操作执行角色和事物组等字段。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-miti-create-form.png)

   完成此操作后，选择**保存**。现在，您可以执行缓解操作，将告警中的设备移动到隔离事物组，并在调查期间执行缓解操作来隔离设备。

1. 导航到 **Defender**、**Detect**（检测）、**Alarms**（告警），您可以查看 **Active**（激活）状态下有哪些设备处于告警状态。  
![\[AWS IoT Device Defender 警报列表显示了 5 个主动授权失败警报，包括事物名称、安全配置文件、行为类型、行为名称、上次发出时间和验证状态等列。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-alarms.png)

   选择要移动到隔离组的设备，然后选择 **Start Mitigation Actions**（启动缓解操作）。

1. 在 **Start mitigation actions**（启动缓解操作）、**Start Actions**（启动操作）项下，选择您之前创建的缓解操作。例如，我们将选择 **Quarantine\$1action**，然后选择 **Start**（启动）。此时将打开操作任务页面。  
![\[缓解操作对话框，其中“udml7”列为受影响的事物，具有用于确认不可逆操作的复选框以及用于选择要执行的操作的下拉列表。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-start-action.png)

1. 设备现在被隔离在 **Quarantine\$1group** 中，您可以调查引发告警的问题的根本原因。完成调查后，您可以将设备移出事物组或采取进一步操作。  
![\[AWS IoT Device Defender Detect 操作任务表显示了一项隔离操作，用于向 quarantine_group 事物组添加事物。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-ml-action-tasks.png)

   

## 如何将 （ML Detect 与 CLI 一起使用


下面的介绍了如何使用 CLI 设置 ML Detect。

**Topics**
+ [

### 启用 ML Detect
](#enable-ml-detect-cli)
+ [

### 监控您的 ML 模型状态
](#monitor-ml-models-cli)
+ [

### 查看您的 ML Detect 告警
](#review-ml-alarms-cli)
+ [

### 微调您的机器学习（ML）告警
](#fine-tune-ml-models-cli)
+ [

### 标记告警的验证状态
](#mark-verification-state-cli)
+ [

### 缓解已确定的设备问题
](#mitigate-issues-cli)

### 启用 ML Detect


以下流程介绍如何在 AWS CLI 中启用 ML Detect。

1. 确保您的设备将如 [ML Detect 最低要求](dd-detect-ml.md#dd-detect-ml-requirements)中定义创建所需的最小数据点，以进行持续训练和模型更新。为了进行数据收集，请确保您的事物位于附加到安全配置文件的事物组中。

1. 使用 `[create-security-profile](https://docs.aws.amazon.com/cli/latest/reference/iot/create-security-profile.html)` 命令创建 ML Detect 安全配置文件。以下示例创建一个名为 *security-profile-for-smart-lights* 的安全配置文件，用于检查发送的消息数量、授权失败次数、连接尝试次数以及断开连接次数。此示例使用 `mlDetectionConfig` 以确定该指标将使用 ML Detect 模型。

   ```
   aws iot create-security-profile \
       --security-profile-name security-profile-for-smart-lights \
       --behaviors \
        '[{
       "name": "num-messages-sent-ml-behavior",
       "metric": "aws:num-messages-sent",
       "criteria": {
         "consecutiveDatapointsToAlarm": 1,
         "consecutiveDatapointsToClear": 1,
         "mlDetectionConfig": {
           "confidenceLevel": "HIGH"
         }
       },
       "suppressAlerts": true
     },
     {
       "name": "num-authorization-failures-ml-behavior",
       "metric": "aws:num-authorization-failures",
       "criteria": {
         "consecutiveDatapointsToAlarm": 1,
         "consecutiveDatapointsToClear": 1,
         "mlDetectionConfig": {
           "confidenceLevel": "HIGH"
         }
       },
       "suppressAlerts": true
     },
     {
       "name": "num-connection-attempts-ml-behavior",
       "metric": "aws:num-connection-attempts",
       "criteria": {
         "consecutiveDatapointsToAlarm": 1,
         "consecutiveDatapointsToClear": 1,
         "mlDetectionConfig": {
           "confidenceLevel": "HIGH"
         }
       },
       "suppressAlerts": true
     },
     {
       "name": "num-disconnects-ml-behavior",
       "metric": "aws:num-disconnects",
       "criteria": {
         "consecutiveDatapointsToAlarm": 1,
         "consecutiveDatapointsToClear": 1,
         "mlDetectionConfig": {
           "confidenceLevel": "HIGH"
         }
       },
       "suppressAlerts": true
     }]'
   ```

   输出：

   ```
   {
       "securityProfileName": "security-profile-for-smart-lights",
       "securityProfileArn": "arn:aws:iot:eu-west-1:123456789012:securityprofile/security-profile-for-smart-lights"
     }
   ```

1. 接下来，将您的安全配置文件与一个或多个事物组关联。使用 `[attach-security-profile](https://docs.aws.amazon.com/cli/latest/reference/iot/attach-security-profile.html)` 命令将事物组附加到您的安全配置文件。下面的示例将名为 *ML\$1Detect\$1beta\$1static\$1group* 的事务组关联到了 *security-profile-for-smart-lights* 安全配置文件。

   ```
   aws iot attach-security-profile \
   --security-profile-name security-profile-for-smart-lights \
   --security-profile-target-arn arn:aws:iot:eu-west-1:123456789012:thinggroup/ML_Detect_beta_static_group
   ```

   输出：

   无。

1. 创建完整的安全配置文件后，ML 模型将开始训练。初始 ML 模型训练和构建需要 14 天才能完成。14 天后，如果您的设备上有异常活动，则可能会看到告警。

### 监控您的 ML 模型状态


以下流程介绍如何监控正在进行训练的 ML 模型。
+ 使用 `[get-behavior-model-training-summaries](https://docs.aws.amazon.com/cli/latest/reference/iot/get-behavior-model-training-summaries.html)` 命令查看 ML 模型的进度。以下示例获取 *security-profile-for-smart-lights* 安全配置文件的 ML 模型训练进度摘要。`modelStatus` 会显示模型是否已完成训练，或是仍在等待针对特定行为的构建。

  ```
  aws iot get-behavior-model-training-summaries \
     --security-profile-name security-profile-for-smart-lights
  ```

  输出：

  ```
  {
      "summaries": [
          {
              "securityProfileName": "security-profile-for-smart-lights",
              "behaviorName": "Messages_sent_ML_behavior",
              "trainingDataCollectionStartDate": "2020-11-30T14:00:00-08:00",
              "modelStatus": "ACTIVE",
              "datapointsCollectionPercentage": 29.408,
              "lastModelRefreshDate": "2020-12-07T14:35:19.237000-08:00"
          },
          {
              "securityProfileName": "security-profile-for-smart-lights",
              "behaviorName": "Messages_received_ML_behavior",
              "modelStatus": "PENDING_BUILD",
              "datapointsCollectionPercentage": 0.0
          },
          {
              "securityProfileName": "security-profile-for-smart-lights",
              "behaviorName": "Authorization_failures_ML_behavior",
              "trainingDataCollectionStartDate": "2020-11-30T14:00:00-08:00",
              "modelStatus": "ACTIVE",
              "datapointsCollectionPercentage": 35.464,
              "lastModelRefreshDate": "2020-12-07T14:29:44.396000-08:00"
          },
          {
              "securityProfileName": "security-profile-for-smart-lights",
              "behaviorName": "Message_size_ML_behavior",
              "trainingDataCollectionStartDate": "2020-11-30T14:00:00-08:00",
              "modelStatus": "ACTIVE",
              "datapointsCollectionPercentage": 29.332,
              "lastModelRefreshDate": "2020-12-07T14:30:44.113000-08:00"
          },
          {
              "securityProfileName": "security-profile-for-smart-lights",
              "behaviorName": "Connection_attempts_ML_behavior",
              "trainingDataCollectionStartDate": "2020-11-30T14:00:00-08:00",
              "modelStatus": "ACTIVE",
              "datapointsCollectionPercentage": 32.891999999999996,
              "lastModelRefreshDate": "2020-12-07T14:29:43.121000-08:00"
          },
          {
              "securityProfileName": "security-profile-for-smart-lights",
              "behaviorName": "Disconnects_ML_behavior",
              "trainingDataCollectionStartDate": "2020-11-30T14:00:00-08:00",
              "modelStatus": "ACTIVE",
              "datapointsCollectionPercentage": 35.46,
              "lastModelRefreshDate": "2020-12-07T14:29:55.556000-08:00"
          }
      ]
  }
  ```

**注意**  
如果您的模型未按预期进行，请确保您的设备满足 [最低要求](dd-detect-ml.md#dd-detect-ml-requirements) 的要求。

### 查看您的 ML Detect 告警


在构建 ML 模型并准备好进行数据评估之后，您可以定期查看由模型推断的任何告警。以下流程介绍如何在 AWS CLI 中查看您的告警。
+ 要查看所有活动告警，请使用 `[list-active-violations](https://docs.aws.amazon.com/cli/latest/reference/iot/list-active-violations.html)` 命令。

  ```
  aws iot list-active-violations \
  --max-results 2
  ```

  输出：

  ```
  {
      "activeViolations": []
  }
  ```

  或者，您可以使用 `[list-violation-events](https://docs.aws.amazon.com/cli/latest/reference/iot/list-violation-events.html)` 命令查看在给定时间内发现的所有违规行为。以下示例列出了从 2020 年 9 月 22 日 5:42:13 GMT 到 2020 年 10 月 26 日 5:42:13 GMT 之间的违规事件。

  ```
  aws iot list-violation-events \
      --start-time 1599500533 \ 
      --end-time 1600796533 \
      --max-results 2
  ```

  输出：

  ```
  {
      "violationEvents": [
          {
              "violationId": "1448be98c09c3d4ab7cb9b6f3ece65d6",
              "thingName": "lightbulb-1",
              "securityProfileName": "security-profile-for-smart-lights",
              "behavior": {
                  "name": "LowConfidence_MladBehavior_MessagesSent",
                  "metric": "aws:num-messages-sent",
                  "criteria": {
                      "consecutiveDatapointsToAlarm": 1,
                      "consecutiveDatapointsToClear": 1,
                      "mlDetectionConfig": {
                          "confidenceLevel": "HIGH"
                      }
                  },
                  "suppressAlerts": true
              },
              "violationEventType": "alarm-invalidated",
              "violationEventTime": 1600780245.29
          },
          {
              "violationId": "df4537569ef23efb1c029a433ae84b52",
              "thingName": "lightbulb-2",
              "securityProfileName": "security-profile-for-smart-lights",
              "behavior": {
                  "name": "LowConfidence_MladBehavior_MessagesSent",
                  "metric": "aws:num-messages-sent",
                  "criteria": {
                      "consecutiveDatapointsToAlarm": 1,
                      "consecutiveDatapointsToClear": 1,
                      "mlDetectionConfig": {
                          "confidenceLevel": "HIGH"
                      }
                  },
                  "suppressAlerts": true
              },
              "violationEventType": "alarm-invalidated",
              "violationEventTime": 1600780245.281
          }
      ],
      "nextToken": "Amo6XIUrsOohsojuIG6TuwSR3X9iUvH2OCksBZg6bed2j21VSnD1uP1pflxKX1+a3cvBRSosIB0xFv40kM6RYBknZ/vxabMe/ZW31Ps/WiZHlr9Wg7R7eEGli59IJ/U0iBQ1McP/ht0E2XA2TTIvYeMmKQQPsRj/eoV9j7P/wveu7skNGepU/mvpV0O2Ap7hnV5U+Prx/9+iJA/341va+pQww7jpUeHmJN9Hw4MqW0ysw0Ry3w38hOQWEpz2xwFWAxAARxeIxCxt5c37RK/lRZBlhYqoB+w2PZ74730h8pICGY4gktJxkwHyyRabpSM/G/f5DFrD9O5v8idkTZzBxW2jrbzSUIdafPtsZHL/yAMKr3HAKtaABz2nTsOBNre7X2d/jIjjarhon0Dh9l+8I9Y5Ey+DIFBcqFTvhibKAafQt3gs6CUiqHdWiCenfJyb8whmDE2qxvdxGElGmRb+k6kuN5jrZxxw95gzfYDgRHv11iEn8h1qZLD0czkIFBpMppHj9cetHPvM+qffXGAzKi8tL6eQuCdMLXmVE3jbqcJcjk9ItnaYJi5zKDz9FVbrz9qZZPtZJFHp"
  }
  ```

### 微调您的机器学习（ML）告警


构建 ML 模型并准备好进行数据评估后，您可以更新安全配置文件的 ML 行为设置以更改配置。以下流程介绍如何在 AWS CLI 中更新您的安全配置文件的机器学习（ML）行为设置。
+ 要更改安全配置文件的 ML 行为设置，请使用 `[update-security-profile](https://docs.aws.amazon.com/cli/latest/reference/iot/update-security-profile.html)` 命令。以下示例通过更改部分行为的 `confidenceLevel` 并取消隐藏所有行为的通知，从而更新了 *security-profile-for-smart-lights* 安全配置文件的行为。

  ```
  aws iot update-security-profile \
      --security-profile-name security-profile-for-smart-lights \
      --behaviors \
       '[{
        "name": "num-messages-sent-ml-behavior",
        "metric": "aws:num-messages-sent",
        "criteria": {
            "mlDetectionConfig": {
                "confidenceLevel" : "HIGH"
            }
        },
        "suppressAlerts": false
    },
    {
        "name": "num-authorization-failures-ml-behavior",
        "metric": "aws:num-authorization-failures",
        "criteria": {
            "mlDetectionConfig": {
                "confidenceLevel" : "HIGH"
            }
        },
        "suppressAlerts": false
    },
    {
        "name": "num-connection-attempts-ml-behavior",
        "metric": "aws:num-connection-attempts",
        "criteria": {
            "mlDetectionConfig": {
                "confidenceLevel" : "HIGH"
            }
        },
        "suppressAlerts": false
    },
    {
        "name": "num-disconnects-ml-behavior",
        "metric": "aws:num-disconnects",
        "criteria": {
            "mlDetectionConfig": {
                "confidenceLevel" : "LOW"
            }
        },
        "suppressAlerts": false
  
    }]'
  ```

  输出：

  ```
   {
      "securityProfileName": "security-profile-for-smart-lights",
      "securityProfileArn": "arn:aws:iot:eu-west-1:123456789012:securityprofile/security-profile-for-smart-lights",
      "behaviors": [
          {
              "name": "num-messages-sent-ml-behavior",
              "metric": "aws:num-messages-sent",
              "criteria": {
                  "mlDetectionConfig": {
                      "confidenceLevel": "HIGH"
                  }
              }
          },
          {
              "name": "num-authorization-failures-ml-behavior",
              "metric": "aws:num-authorization-failures",
              "criteria": {
                  "mlDetectionConfig": {
                      "confidenceLevel": "HIGH"
                  }
              }
          },
          {
              "name": "num-connection-attempts-ml-behavior",
              "metric": "aws:num-connection-attempts",
              "criteria": {
                  "mlDetectionConfig": {
                      "confidenceLevel": "HIGH"
                  }
              },
              "suppressAlerts": false
          },
          {
              "name": "num-disconnects-ml-behavior",
              "metric": "aws:num-disconnects",
              "criteria": {
                  "mlDetectionConfig": {
                      "confidenceLevel": "LOW"
                  }
              },
              "suppressAlerts": true
          }
      ],
      "version": 2,
      "creationDate": 1600799559.249,
      "lastModifiedDate": 1600800516.856
  }
  ```

### 标记告警的验证状态


您可以使用验证状态标记告警，帮助对告警进行分类并调查异常情况。
+ 用验证状态和状态描述标记告警。例如，要将告警的验证状态设置为误报，请使用以下命令：

  ```
  aws iot put-verification-state-on-violation --violation-id 12345  --verification-state FALSE_POSITIVE --verification-state-description "This is dummy description"  --endpoint https://us-east-1.iot.amazonaws.com --region us-east-1
  ```

  输出：

  无。

### 缓解已确定的设备问题


1. 使用 `[create-thing-group](https://docs.aws.amazon.com/cli/latest/reference/iot/create-thing-group.html)` 命令为缓解操作创建事物组。在下面的示例中，我们创建了一个名为 **ThingGroupForDetectMitigationAction** 的事物组。

   ```
   aws iot create-thing-group —thing-group-name ThingGroupForDetectMitigationAction
   ```

   输出：

   ```
   {
    "thingGroupName": "ThingGroupForDetectMitigationAction",
    "thingGroupArn": "arn:aws:iot:us-east-1:123456789012:thinggroup/ThingGroupForDetectMitigationAction",
    "thingGroupId": "4139cd61-10fa-4c40-b867-0fc6209dca4d"
   }
   ```

1. 接下来，使用 `[create-mitigation-action](https://docs.aws.amazon.com/cli/latest/reference/iot/create-mitigation-action.html)` 命令创建缓解操作。在以下示例中，我们使用了 IAM 角色的 ARN 创建了一个名为 **detect\$1mitigation\$1action** 的缓解操作，该 IAM 角色专用于应用缓解操作。我们还将定义操作类型和该操作的参数。在这种情况下，我们的缓解措施会将事物移动到我们之前创建的名为 **ThingGroupForDetectMitigationAction** 的事物组。

   ```
   aws iot create-mitigation-action --action-name detect_mitigation_action \
   --role-arn arn:aws:iam::123456789012:role/MitigationActionValidRole \
   --action-params \  
   '{
        "addThingsToThingGroupParams": {
            "thingGroupNames": ["ThingGroupForDetectMitigationAction"],
            "overrideDynamicGroups": false
        }
    }'
   ```

   输出：

   ```
   {
    "actionArn": "arn:aws:iot:us-east-1:123456789012:mitigationaction/detect_mitigation_action",
    "actionId": "5939e3a0-bf4c-44bb-a547-1ab59ffe67c3"
   }
   ```

1. 使用 `[start-detect-mitigation-actions-task](https://docs.aws.amazon.com/cli/latest/reference/iot/start-detect-mitigation-actions-task.html)` 命令启动缓解操作任务。`task-id`、`target` 和 `actions` 是必要的参数。

   ```
   aws iot start-detect-mitigation-actions-task \
       --task-id taskIdForMitigationAction \
       --target '{ "violationIds" : [ "violationId-1", "violationId-2" ] }' \
       --actions "detect_mitigation_action" \
       --include-only-active-violations \
       --include-suppressed-alerts
   ```

   输出：

   ```
   {
       "taskId": "taskIdForMitigationAction"
   }
   ```

1. （可选）要查看任务中包含的缓解操作执行，请使用 `[list-detect-mitigation-actions-executions](https://docs.aws.amazon.com/cli/latest/reference/iot/list-detect-mitigation-actions-executions.html)` 命令。

   ```
   aws iot list-detect-mitigation-actions-executions \
       --task-id taskIdForMitigationAction \
       --max-items 5 \
       --page-size 4
   ```

   输出：

   ```
   {
       "actionsExecutions": [
           {
               "taskId": "e56ee95e - f4e7 - 459 c - b60a - 2701784290 af",
               "violationId": "214_fe0d92d21ee8112a6cf1724049d80",
               "actionName": "underTest_MAThingGroup71232127",
               "thingName": "cancelDetectMitigationActionsTaskd143821b",
               "executionStartDate": "Thu Jan 07 18: 35: 21 UTC 2021",
               "executionEndDate": "Thu Jan 07 18: 35: 21 UTC 2021",
               "status": "SUCCESSFUL",
           }
       ]
   }
   ```

1. （可选）使用 `[describe-detect-mitigation-actions-task](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-detect-mitigation-actions-task.html)` 命令获取有关缓解操作任务的信息。

   ```
   aws iot describe-detect-mitigation-actions-task \
       --task-id taskIdForMitigationAction
   ```

   输出：

   ```
   {
       "taskSummary": {
           "taskId": "taskIdForMitigationAction",
           "taskStatus": "SUCCESSFUL",
           "taskStartTime": 1609988361.224,
           "taskEndTime": 1609988362.281,
           "target": {
               "securityProfileName": "security-profile-for-smart-lights",
               "behaviorName": "num-messages-sent-ml-behavior"
           },
           "violationEventOccurrenceRange": {
               "startTime": 1609986633.0,
               "endTime": 1609987833.0
           },
           "onlyActiveViolationsIncluded": true,
           "suppressedAlertsIncluded": true,
           "actionsDefinition": [
               {
                   "name": "detect_mitigation_action",
                   "id": "5939e3a0-bf4c-44bb-a547-1ab59ffe67c3",
                   "roleArn": "arn:aws:iam::123456789012:role/MitigatioActionValidRole",
                   "actionParams": {
                       "addThingsToThingGroupParams": {
                           "thingGroupNames": [
                               "ThingGroupForDetectMitigationAction"
                           ],
                           "overrideDynamicGroups": false
                       }
                   }
               }
           ],
           "taskStatistics": {
               "actionsExecuted": 0,
               "actionsSkipped": 0,
               "actionsFailed": 0
           }
       }
   }
   ```

1. （可选）要获取缓解操作任务的列表，请使用 `[list-detect-mitigation-actions-tasks](https://docs.aws.amazon.com/cli/latest/reference/iot/list-detect-mitigation-actions-tasks.html)` 命令。

   ```
   aws iot list-detect-mitigation-actions-tasks \
       --start-time 1609985315 \
       --end-time 1609988915 \
       --max-items 5 \
       --page-size 4
   ```

   输出：

   ```
   {
       "tasks": [
           {
               "taskId": "taskIdForMitigationAction",
               "taskStatus": "SUCCESSFUL",
               "taskStartTime": 1609988361.224,
               "taskEndTime": 1609988362.281,
               "target": {
                   "securityProfileName": "security-profile-for-smart-lights",
                   "behaviorName": "num-messages-sent-ml-behavior"
               },
               "violationEventOccurrenceRange": {
                   "startTime": 1609986633.0,
                   "endTime": 1609987833.0
               },
               "onlyActiveViolationsIncluded": true,
               "suppressedAlertsIncluded": true,
               "actionsDefinition": [
                   {
                       "name": "detect_mitigation_action",
                       "id": "5939e3a0-bf4c-44bb-a547-1ab59ffe67c3",
                       "roleArn": "arn:aws:iam::123456789012:role/MitigatioActionValidRole",
                       "actionParams": {
                           "addThingsToThingGroupParams": {
                               "thingGroupNames": [
                                   "ThingGroupForDetectMitigationAction"
                               ],
                               "overrideDynamicGroups": false
                           }
                       }
                   }
               ],
               "taskStatistics": {
                   "actionsExecuted": 0,
                   "actionsSkipped": 0,
                   "actionsFailed": 0
               }
           }
       ]
   }
   ```

1. （可选）要取消缓解操作任务，请使用 `[cancel-detect-mitigation-actions-task](https://docs.aws.amazon.com/cli/latest/reference/iot/cancel-detect-mitigation-actions-task.html)` 命令。

   ```
   aws iot cancel-detect-mitigation-actions-task \
       --task-id taskIdForMitigationAction
   ```

   输出：

   无。

# 自定义查看 AWS IoT Device Defender 审计结果的时间和方式


AWS IoT Device Defender 审计提供定期安全检查以确认 AWS IoT 设备和资源都遵循了最佳实践。对于每次检查，审计结果都被归类为合规或不合规，其中不合规结果会导致控制台出现警告图标。为了减少重复已知问题产生的噪音，审计查找结果隐藏特征允许您临时将这些不合规通知静音。

您可以在预定时间段内隐藏指定资源或账户的特定审计检查。已隐藏的审计检查结果将被归类为隐藏的查找结果，与合规类别和不合规类别区分开。此新类别不会触发像不合规结果那样的告警。这样，您就可以在已知维护期间或计划完成更新之前减少不合规通知干扰。

## 开始使用


以下各节详细介绍了如何使用审计查找结果隐藏功能来隐藏控制台和 CLI 中的 `Device certificate expiring` 检查。如果您想遵循其中一个演示，您必须首先创建两个即将到期的证书，以便 Device Defender 检测。

请使用以下命令创建您的证书。
+ 《AWS IoT Core 开发人员指南》**中的[创建和注册 CA 证书](https://docs.aws.amazon.com/iot/latest/developerguide/create-device-cert.html)
+ [使用您的 CA 证书创建客户端证书](https://docs.aws.amazon.com/iot/latest/developerguide/create-device-cert.html) 在步骤 3 中，将您的 `days` 参数设置为 **1**。

如果您正在使用 CLI 创建证书，请输入以下命令。

```
openssl x509 -req \ 
    -in device_cert_csr_filename \ 
    -CA root_ca_pem_filename \ 
    -CAkey root_ca_key_filename \     
    -CAcreateserial \
    -out device_cert_pem_filename \ 
    -days 1 -sha256
```

## 在控制台中自定义审计查找结果


以下演练使用具有两个过期设备证书的账户，这些证书将触发不合规审计检查。在这种情况下，我们希望禁用警告，因为我们的开发人员正在测试一项新特征来解决问题。我们为每个证书创建审计查找结果抑制，以阻止下周审计结果出现不合规的情况。

1. 我们将首先运行按需审计，以显示过期的设备证书检查不合规。

   从 [AWS IoT控制台](https://console.aws.amazon.com/iot)中，从左侧边栏选择 **Defend**（防护），然后 **Audit**（审计），随后选择 **Results**（结果）。在 **Audit Results**（审计结果）页面上，选择 **Create**（创建）。**Create a new audit**（创建新审计）窗口将会打开。选择**创建**。  
![\[运行按需审计，来显示到期的设备证书检查不合规。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-afs-noncompliant.png)

   从按需审计结果中，我们可以看到两个资源的“设备证书即将到期”不合规。

1. 现在，我们希望禁用“设备证书即将过期”的不合规检查警告，因为我们的开发人员正在测试新特征来修复警告。

   从左侧边栏的 **Defend**（防护）下，选择 **Audit**（审计），然后选择 **Finding suppressions**（查找结果隐藏）。在 **Audit finding suppressions**（审计查找结果隐藏）页面上，选择 **Create**（创建）。  
![\[在控制台中创建“审计调查发现隐藏”的流程。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-afs-suppressions.png)

1. 在 **Create an audit finding suppression**（创建审计查找结果隐藏）窗口中，我们需要填写以下内容。
   + **Audit check:**（审计检查）：我们选择 `Device certificate expiring`，因为这是我们想要隐藏的审计检查。
   + **Resource identifier**（资源标识符）：我们输入希望隐藏审计查找结果的证书之一的设备证书 ID。
   + **Suppression duration**（隐藏时长）：我们选择 `1 week`，因为这是我们希望将 `Device certificate expiring` 审计检查隐藏的时长。
   + **Description (optional)**（描述（可选））：我们添加了一个说明，描述了为什么我们要隐藏此审计查找结果。  
![\[“创建审计调查发现隐藏”页面，您需要在其中输入详细信息。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-afs-create.png)

   填写完这些字段后，选择 **Create**（创建）。创建审计查找结果隐藏后，我们会看到一个成功的提示。

1. 我们隐藏了其中一个证书的审计查找结果，现在我们需要隐藏第二个证书的审计查找结果。我们可以使用与步骤 3 中相同的隐藏方法，但此次我们将使用不同的方法进行演示。

   从 **Defend**（防护）的左侧边栏中，选择 **Audit**（审计），然后选择 **Results**（结果）。在 **Audit results**（审计结果）页面上，选择包含不合规资源的审计。然后，在 **Non-compliant checks**（不合规检查）项下选择资源。在我们的例子中，我们选择“设备证书即将到期”。

1. 在 **Device certificate expiring**（设备证书即将到期）页面，在 **Non-compliant policy**（不合规的策略）项下选择需要隐藏的查找结果旁的选项按钮。接下来，选择 **Actions**（操作）下拉菜单，然后选择为要隐藏的查找结果选择时长。在我们的例子中，我们跟其它证书一样选择 `1 week`。在 **Confirm suppression**（确认隐藏）窗口中，选择 **Enable suppression**（启用隐藏）。  
![\[“创建审计隐藏”页面，您可以在其中完成流程。在创建审计调查发现隐藏后，您会看到成功提示。\]](http://docs.aws.amazon.com/zh_cn/iot-device-defender/latest/devguide/images/dd-afs-noncompliantcerts.png)

   创建审计查找结果隐藏后，我们会看到一个成功的提示。现在，两个审计查找结果均已被隐藏 1 周，同时我们的开发人员正在研制解决方案来解决警告。

## 在 CLI 中自定义您的审计查找结果


以下演练使用具有过期设备证书并触发了不合规审计检查的账户。在这种情况下，我们希望禁用警告，因为我们的开发人员正在测试一项新特征来解决问题。我们为证书创建审计查找结果隐藏，以防下周的审计结果出现不合规的情况。

我们将使用以下 CLI 命令。
+ [create-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/create-audit-suppression.html)
+ [describe-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-audit-suppression.html)
+ [update-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/update-audit-suppression.html)
+ [delete-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/delete-audit-suppression.html)
+ [list-audit-suppressions](https://docs.aws.amazon.com/cli/latest/reference/iot/list-audit-suppressions.html)

1. 使用以下命令来启用审计。

   ```
   aws iot update-account-audit-configuration \
      --audit-check-configurations "{\"DEVICE_CERTIFICATE_EXPIRING_CHECK\":{\"enabled\":true}}"
   ```

   输出：

   无。

1. 使用以下命令运行按需审计，以针对 `DEVICE_CERTIFICATE_EXPIRING_CHECK` 审计检查。

   ```
   aws iot start-on-demand-audit-task \
       --target-check-names DEVICE_CERTIFICATE_EXPIRING_CHECK
   ```

   输出：

   ```
   {
       "taskId": "787ed873b69cb4d6cdbae6ddd06996c5"
   }
   ```

1. 使用 [describe-account-audit-configuration](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-account-audit-configuration.html) 命令来描述审计配置。我们希望确认我们已开启 `DEVICE_CERTIFICATE_EXPIRING_CHECK` 的审计检查。

   ```
   aws iot describe-account-audit-configuration
   ```

   输出：

   ```
   {
       "roleArn": "arn:aws:iam::<accountid>:role/service-role/project",
       "auditNotificationTargetConfigurations": {
           "SNS": {
               "targetArn": "arn:aws:sns:us-east-1:<accountid>:project_sns",
               "roleArn": "arn:aws:iam::<accountid>:role/service-role/project",
               "enabled": true
           }
       },
       "auditCheckConfigurations": {
           "AUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK": {
               "enabled": false
           },
           "CA_CERTIFICATE_EXPIRING_CHECK": {
               "enabled": false
           },
           "CA_CERTIFICATE_KEY_QUALITY_CHECK": {
               "enabled": false
           },
           "CONFLICTING_CLIENT_IDS_CHECK": {
               "enabled": false
           },
           "DEVICE_CERTIFICATE_EXPIRING_CHECK": {
               "enabled": true
           },
           "DEVICE_CERTIFICATE_KEY_QUALITY_CHECK": {
               "enabled": false
           },
           "DEVICE_CERTIFICATE_SHARED_CHECK": {
               "enabled": false
           },
           "IOT_POLICY_OVERLY_PERMISSIVE_CHECK": {
               "enabled": true
           },
           "IOT_ROLE_ALIAS_ALLOWS_ACCESS_TO_UNUSED_SERVICES_CHECK": {
               "enabled": false
           },
           "IOT_ROLE_ALIAS_OVERLY_PERMISSIVE_CHECK": {
               "enabled": false
           },
           "LOGGING_DISABLED_CHECK": {
               "enabled": false
           },
           "REVOKED_CA_CERTIFICATE_STILL_ACTIVE_CHECK": {
               "enabled": false
           },
           "REVOKED_DEVICE_CERTIFICATE_STILL_ACTIVE_CHECK": {
               "enabled": false
           },
           "UNAUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK": {
               "enabled": false
           }
       }
   }
   ```

   `DEVICE_CERTIFICATE_EXPIRING_CHECK` 应具有 `true` 值。

1. 使用 [list-audit-task](https://docs.aws.amazon.com/cli/latest/reference/iot/list-audit-task.html) 命令来标识已完成的审计任务。

   ```
   aws iot list-audit-tasks \
       --task-status "COMPLETED" \
       --start-time 2020-07-31 \
       --end-time 2020-08-01
   ```

   输出：

   ```
   {
       "tasks": [
           {
               "taskId": "787ed873b69cb4d6cdbae6ddd06996c5",
               "taskStatus": "COMPLETED",
               "taskType": "SCHEDULED_AUDIT_TASK"
           }
       ]
   }
   ```

   您在步骤 1 中运行的审计的 `taskId` 应该具有一个为 `COMPLETED` 的 `taskStatus`。

1. 使用 [describe-audit-task](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-audit-task.html) 命令，获取有关使用来自前述步骤的 `taskId` 输出完成的审计的详细信息。此命令列出了有关审计的详细信息。

   ```
   aws iot describe-audit-task \
       --task-id "787ed873b69cb4d6cdbae6ddd06996c5"
   ```

   输出：

   ```
   {
       "taskStatus": "COMPLETED",
       "taskType": "SCHEDULED_AUDIT_TASK",
       "taskStartTime": 1596168096.157,
       "taskStatistics": {
           "totalChecks": 1,
           "inProgressChecks": 0,
           "waitingForDataCollectionChecks": 0,
           "compliantChecks": 0,
           "nonCompliantChecks": 1,
           "failedChecks": 0,
           "canceledChecks": 0
       },
       "scheduledAuditName": "AWSIoTDeviceDefenderDailyAudit",
       "auditDetails": {
           "DEVICE_CERTIFICATE_EXPIRING_CHECK": {
               "checkRunStatus": "COMPLETED_NON_COMPLIANT",
               "checkCompliant": false,
               "totalResourcesCount": 195,
               "nonCompliantResourcesCount": 2
           }
       }
   }
   ```

1. 使用 [list-audit-findings](https://docs.aws.amazon.com/cli/latest/reference/iot/list-audit-findings.html) 命令查找不合规的证书 ID，以便我们可以暂停此资源的审计提示。

   ```
   aws iot list-audit-findings \
       --start-time 2020-07-31 \
       --end-time 2020-08-01
   ```

   输出：

   ```
   {
       "findings": [
           {
               "findingId": "296ccd39f806bf9d8f8de20d0ceb33a1",
               "taskId": "787ed873b69cb4d6cdbae6ddd06996c5",
               "checkName": "DEVICE_CERTIFICATE_EXPIRING_CHECK",
               "taskStartTime": 1596168096.157,
               "findingTime": 1596168096.651,
               "severity": "MEDIUM",
               "nonCompliantResource": {
                   "resourceType": "DEVICE_CERTIFICATE",
                   "resourceIdentifier": {
                       "deviceCertificateId": "b4490<shortened>"
                   },
                   "additionalInfo": {
                   "EXPIRATION_TIME": "1582862626000"
                   }
               },
               "reasonForNonCompliance": "Certificate is past its expiration.",
               "reasonForNonComplianceCode": "CERTIFICATE_PAST_EXPIRATION",
               "isSuppressed": false
           },
           {
               "findingId": "37ecb79b7afb53deb328ec78e647631c",
               "taskId": "787ed873b69cb4d6cdbae6ddd06996c5",
               "checkName": "DEVICE_CERTIFICATE_EXPIRING_CHECK",
               "taskStartTime": 1596168096.157,
               "findingTime": 1596168096.651,
               "severity": "MEDIUM",
               "nonCompliantResource": {
                   "resourceType": "DEVICE_CERTIFICATE",
                   "resourceIdentifier": {
                       "deviceCertificateId": "c7691<shortened>"
                   },
                   "additionalInfo": {
                   "EXPIRATION_TIME": "1583424717000"
                   }
               },
               "reasonForNonCompliance": "Certificate is past its expiration.",
               "reasonForNonComplianceCode": "CERTIFICATE_PAST_EXPIRATION",
               "isSuppressed": false
           }
      ]
   }
   ```

1. 使用 [create-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/create-audit-suppression.html) 命令将 ID 为 `c7691e<shortened>` 的设备证书隐藏 `DEVICE_CERTIFICATE_EXPIRING_CHECK` 审计检查的通知，直至 *2020-08-20*。

   ```
   aws iot create-audit-suppression \
       --check-name DEVICE_CERTIFICATE_EXPIRING_CHECK \
       --resource-identifier deviceCertificateId="c7691e<shortened>" \
       --no-suppress-indefinitely \ 
       --expiration-date 2020-08-20
   ```

1. 使用 [list-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/list-audit-suppression.html) 命令确认审计隐藏设置并获取有关隐藏的详细信息。

   ```
   aws iot list-audit-suppressions
   ```

   输出：

   ```
   {
       "suppressions": [
           {
           "checkName": "DEVICE_CERTIFICATE_EXPIRING_CHECK",
               "resourceIdentifier": {
                   "deviceCertificateId": "c7691e<shortened>"
               },
           "expirationDate": 1597881600.0,
           "suppressIndefinitely": false
           }
       ]
   }
   ```

1. [update-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/update-audit-suppression.html) 命令可用于更新审计查找结果隐藏。下面的示例将 `expiration-date` 更新为了 `08/21/20`。

   ```
   aws iot update-audit-suppression \
       --check-name DEVICE_CERTIFICATE_EXPIRING_CHECK \
       --resource-identifier deviceCertificateId=c7691e<shortened> \
       --no-suppress-indefinitely \
       --expiration-date 2020-08-21
   ```

1. [delete-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/delete-audit-suppression.html) 命令可用于删除审计查找结果隐藏。

   ```
   aws iot delete-audit-suppression \
       --check-name DEVICE_CERTIFICATE_EXPIRING_CHECK \
       --resource-identifier deviceCertificateId="c7691e<shortened>"
   ```

   要确认删除，请使用 [list-audit-suppressions](https://docs.aws.amazon.com/cli/latest/reference/iot/list-audit-suppressions.html) 命令。

   ```
   aws iot list-audit-suppressions
   ```

   输出：

   ```
   {
    "suppressions": []
   }
   ```

在本教程中，我们向您展示了如何在控制台和 CLI 中隐藏 `Device certificate expiring` 检查。有关审计查找结果隐藏的更多信息，请参阅 [审计查找结果隐藏](audit-finding-suppressions.md)。