AWS IoT
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

缓解操作

您可以使用 AWS IoT Device Defender 采取相应措施以缓解审核期间发现的问题。AWS IoT Device Defender 提供了预定义操作来进行不同的审核检查。您可以为您的 AWS 账户配置这些操作,然后将其应用于一组结果。这些结果可以是:

  • 审核中发现的所有结果。此选项可通过 AWS IoT 控制台和 AWS CLI 来使用。

  • 各个结果的列表。此选项仅在使用 AWS CLI 的情况下可用。

  • 筛选的审核结果集。此选项不适用于测试版发布。

下表列出了针对每种情况的审核检查类型和支持的缓解操作:

审核检查到缓解操作映射

审核检查 支持的缓解操作
REVOKED_CA_CERT_CHECK PUBLISH_FINDING_TO_SNS, UPDATE_CA_CERTIFICATE
DEVICE_CERTIFICATE_SHARED_CHECK PUBLISH_FINDING_TO_SNS、UPDATE_DEVICE_CERTIFICATE、ADD_THINGS_TO_THING_GROUP
UNAUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK PUBLISH_FINDING_TO_SNS
AUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK PUBLISH_FINDING_TO_SNS
IOT_POLICY_OVERLY_PERMISSIVE_CHECK PUBLISH_FINDING_TO_SNS、REPLACE_DEFAULT_POLICY_VERSION
CA_CERT_APPROACHING_EXPIRATION_CHECK PUBLISH_FINDING_TO_SNS、UPDATE_CA_CERTIFICATE
CONFLICTING_CLIENT_IDS_CHECK PUBLISH_FINDING_TO_SNS
DEVICE_CERT_APPROACHING_EXPIRATION_CHECK PUBLISH_FINDING_TO_SNS、UPDATE_DEVICE_CERTIFICATE、ADD_THINGS_TO_THING_GROUP
REVOKED_DEVICE_CERT_CHECK PUBLISH_FINDING_TO_SNS、UPDATE_DEVICE_CERTIFICATE、ADD_THINGS_TO_THING_GROUP
LOGGING_DISABLED_CHECK PUBLISH_FINDING_TO_SNS、ENABLE_IOT_LOGGING

所有审核检查都支持向 Amazon SNS 发布审核结果,以便您可以采取自定义操作来响应通知。每种类型的审核检查可以支持其他缓解操作:

REVOKED_CA_CERT_CHECK
  • 在 AWS IoT 中更改证书的状态以将其标记为非活动状态。

DEVICE_CERTIFICATE_SHARED_CHECK
  • 在 AWS IoT 中更改设备证书的状态以将其标记为非活动状态。

  • 将使用该证书的设备添加到事物组。

UNAUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK
  • 无额外受支持的操作。

AUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK
  • 无额外受支持的操作。

IOT_POLICY_OVERLY_PERMISSIVE_CHECK
  • 添加一个空白 AWS IoT 策略版本以限制权限。

CA_CERT_APPROACHING_EXPIRATION_CHECK
  • 在 AWS IoT 中更改证书的状态以将其标记为非活动状态。

CONFLICTING_CLIENT_IDS_CHECK
  • 无额外受支持的操作。

DEVICE_CERT_APPROACHING_EXPIRATION_CHECK
  • 在 AWS IoT 中更改设备证书的状态以将其标记为非活动状态。

  • 将使用该证书的设备添加到事物组。

REVOKED_DEVICE_CERT_CHECK
  • 在 AWS IoT 中更改设备证书的状态以将其标记为非活动状态。

  • 将使用该证书的设备添加到事物组。

LOGGING_DISABLED_CHECK
  • 启用日志记录。

AWS IoT Device Defender 支持以下类型的缓解操作:

操作类型

备注
ADD_THINGS_TO_THING_GROUP 您指定要向其中添加设备的组。您还可以指定是否应覆盖一个或多个动态组中的成员身份(如果它超过了该事物可能所属组的最大数量)。
ENABLE_IOT_LOGGING 您可以指定日志记录级别和具有日志记录权限的角色。您不能指定 DISABLED 日志记录级别。
PUBLISH_FINDING_TO_SNS 您指定结果应发布到的主题。
REPLACE_DEFAULT_POLICY_VERSION 您指定模板名称。使用默认策略或空白策略替换策略版本。目前仅支持值 BLANK_POLICY
UPDATE_CA_CERTIFICATE 您指定 CA 证书的新状态。目前仅支持值 DEACTIVATE
UPDATE_DEVICE_CERTIFICATE 您指定设备证书的新状态。目前仅支持值 DEACTIVATE

通过配置在审核期间发现问题时要执行的标准操作,您可以一致地响应这些问题。使用这些定义的缓解操作还可以帮助您更快地解决问题,并减少人为错误的可能性。

重要

应用旨在更改证书、将事物添加到新事物组或替换策略的缓解操作可能会对您的设备和应用程序产生影响。例如,设备可能无法连接。请考虑缓解操作的影响,然后再应用这些操作。您可能需要采取其他操作来纠正该问题,然后您的设备和应用程序才可正常工作。例如,您可能需要提供更新的设备证书。缓解操作可帮助您快速限制您的风险,但您仍必须采取纠正措施以解决底层问题。

某些操作(例如重新激活设备证书)只能手动执行。 AWS IoT Device Defender 不提供机制来自动回滚已应用的缓解操作。

如何定义和管理缓解操作

您定义的每个缓解操作是预定义的操作类型和特定于您账户的参数的组合。

创建缓解操作

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

您可以使用 AWS IoT 控制台或 AWS CLI 为您的 AWS 账户定义和管理缓解操作。

  1. 打开 AWS IoT 控制台

  2. 在左侧导航窗格中,选择防护,然后选择 Mitigation Actions (缓解操作)

  3. Mitigation Actions (缓解操作) 页面上,选择创建

    
                            创建新的缓解操作窗口。
  4. Create a Mitigation Action (创建缓解操作) 页面上,在操作名称中输入缓解操作的唯一名称。

  5. 操作类型中,指定您要定义的操作的类型。

  6. 每个活动类型请求不同的一组参数。输入操作的参数。例如,如果选择将事物添加到事物组操作类型,请选择目标组,然后选择或清除 Override dynamic groups (覆盖动态组)

  7. Action execution role (操作执行角色) 中,选择应用操作的权限所属的角色。

  8. 选择保存可将缓解操作保存到您的 AWS 账户。

使用 AWS CLI 创建缓解操作

  • 使用 CreateMitigationAction 命令创建您的缓解操作。当您将操作应用于审核结果时,将使用您为该操作提供的唯一名称。选择一个有意义的名称。

使用 AWS IoT 控制台查看和修改缓解操作

  1. 打开 AWS IoT 控制台

  2. 在左侧导航窗格中,选择防护,然后选择 Mitigation Actions (缓解操作)

    Mitigation Actions (缓解操作) 页面显示为您的 AWS 账户定义的所有缓解操作的列表。

    
                            缓解操作列表。
  3. 选择您要更改的缓解操作的操作名称链接。

  4. 对缓解操作进行更改。由于缓解操作的名称用于标识此操作,您将无法更改名称。

    
                            编辑缓解操作窗口。
  5. 选择保存可将对缓解操作的更改保存到您的 AWS 账户。

使用 AWS CLI 列出缓解操作

  • 使用 ListMitigationActions 命令可列出您的缓解操作。如果您想更改或删除缓解操作,请记下名称。

使用 AWS CLI 更新缓解操作

使用 AWS IoT 控制台删除迁移操作

  1. 打开 AWS IoT 控制台

  2. 在左侧导航窗格中,选择防护,然后选择 Mitigation Actions (缓解操作)

    Mitigation Actions (缓解操作) 页面显示为您的 AWS 账户定义的所有缓解操作。

  3. 选择与要删除的缓解操作对应的省略号 (),然后选择删除

使用 AWS CLI 删除缓解操作

使用 AWS IoT 控制台查看缓解操作详细信息

  1. 打开 AWS IoT 控制台

  2. 在左侧导航窗格中,选择防护,然后选择 Mitigation Actions (缓解操作)

    
                            缓解操作列表。

    Mitigation Actions (缓解操作) 页面显示为您的 AWS 账户定义的所有缓解操作。

  3. 选择您要更改的缓解操作的操作名称链接。

  4. Are you sure you want to delete the mitigation action (是否确定要删除缓解操作) 窗口中,选择 Confirm (确认)

    
                            Are you sure you want to delete the mitigation action (是否确定要删除缓解操作) 确认窗口。

使用 AWS CLI 查看缓解操作详细信息

应用缓解操作

在定义了一组缓解操作后,您可以将这些操作应用于审核的结果。当您应用操作时,您就启动了审核缓解操作任务。此任务可能需要一些时间才能完成,具体取决于结果集和您应用于结果集的操作。例如,如果您有一个证书已过期的大型设备池,则可能需要一些时间来停用所有这些证书或将这些设备移到隔离组。其他操作(如启用日志记录)可以快速完成。

您可以查看操作执行的列表并取消尚未完成的执行。已作为已取消操作执行的一部分执行的操作不会回滚。如果您对一组结果应用多个操作而其中一个操作失败,则会对该结果跳过后续操作(但仍应用于其他结果)。结果的任务状态为 FAILED(失败)。如果在应用于结果时一个或多个操作失败,则 taskStatus 设置为失败。操作按指定的顺序应用。

每个操作执行将一组操作应用到目标。该目标可以是结果列表,也可以是来自某个审核的所有结果。

下图显示了您如何可以定义审核缓解任务,该任务从一个审核中获取所有结果并对这些结果应用一组操作。单次执行将一个操作应用于一个结果。审核缓解操作任务输出执行摘要。


                概念图显示审核缓解操作任务。

下图显示了您如何可以定义审核缓解任务,该任务从一个或多个审核中获取各个结果的列表并对这些结果应用一组操作。单次执行将一个操作应用于一个结果。审核缓解操作任务输出执行摘要。


                概念图显示审核缓解操作任务。

您可以使用 AWS IoT 控制台或 AWS CLI 以应用缓解操作。

使用 AWS IoT 控制台通过启动操作执行以应用缓解操作

  1. 打开 AWS IoT 控制台

  2. 在左侧导航窗格中,选择防护,选择 审核,然后选择结果

    
                        显示 Start mitigation actions (启动缓解操作) 按钮的审核结果列表。
  3. 选择您要应用操作的审核的名称。

    
                        Are you sure you want to start mitigation action task (是否确定要启动缓解操作任务) 窗口。
  4. 选择 Start Mitigation Actions (启动缓解操作)。如果所有检查都符合要求,则此按钮不可用。

  5. Are you sure you want to start mitigation action task (是否确定要启动缓解操作任务) 中,任务名称默认为审核 ID,但您可以将其更改为更有意义的内容。

  6. 对于在审核中具有一个或多个不合规结果的每种类型的检查,您可以选择一个或多个要应用的操作。仅显示对检查类型有效的操作。

    注意

    如果尚未为 AWS 账户配置操作,则适用操作的列表为空。您可以选择单击此处链接以创建一个或多个缓解操作。

  7. 当您已经指定要应用的所有操作时,请选择确认

使用 AWS CLI 通过启动审核缓解操作执行以应用缓解操作

  1. 如果您要对审核的所有结果应用操作,请使用 ListAuditTasks 命令查找任务 ID。

  2. 如果您要仅对选定的结果应用操作,请使用 ListAuditFindings 命令获取结果 ID。

  3. 使用 ListMitigationActions 命令,并记下要应用的缓解操作的名称。

  4. 使用 StartAuditMitigationActionsTask 命令将操作应用到目标。记下任务 ID。您可以使用该 ID 来检查操作执行的状态,查看详细信息,或取消它。

使用 AWS IoT 控制台查看您的操作执行

  1. 打开 AWS IoT 控制台

  2. 在左侧导航窗格中,选择防护,然后选择 Action Executions (操作执行)

    
                        审核操作执行的列表。

    操作任务列表显示每个操作任务的启动时间和当前状态。

  3. 选择名称链接以查看任务的详细信息。详细信息包括任务应用的所有操作、其目标及其状态。

    
                        审核缓解操作任务的详细信息。

    您可以使用 Show executions for (显示的执行面向) 筛选条件来重点关注特定类型的操作或处于特定状态的操作。

  4. 要查看任务的详细信息,请在执行中,为要查看其执行详细信息的任务选择显示

    
                        审核缓解操作任务的执行详细信息。

使用 AWS CLI 列出已启动的任务

  1. 使用 ListAuditMitigationActionsTasks 可查看您的审核缓解操作任务。您可以提供筛选条件来缩小结果范围。记下要查看其详细信息的任何任务的任务 ID。

  2. 使用 ListAuditMitigationActionsExecutions 查看特定审核缓解操作任务的执行详细信息。

  3. 使用 DescribeAuditMitigationActionsTask 查看有关任务的详细信息,例如启动时指定的参数。

使用 AWS CLI 取消正在运行的审核缓解操作任务

  1. 使用 ListAuditMitigationActionsTasks 命令找到您要取消其执行的任务的任务 ID。您可以提供筛选条件来缩小结果范围。

  2. 使用 CancelAuditMitigationActionsTask 命令通过任务 ID 取消您的审核缓解操作任务。您无法取消已完成的任务。当您取消任务时,不会应用剩余的操作,但不会回滚已应用的缓解操作。

权限

对于您定义的每个缓解操作,您必须提供用于应用该操作的角色。

缓解操作的权限

操作类型 权限策略模板

UPDATE_DEVICE_CERTIFICATE

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iot:UpdateCertificate" ], "Resource":[ "*" ] } ] }
UPDATE_CA_CERTIFICATE
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iot:UpdateCACertificate" ], "Resource":[ "*" ] } ] }
ADD_THINGS_TO_THING_GROUP
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iot:ListPrincipalThings", "iot:AddThingToThingGroup" ], "Resource":[ "*" ] } ] }
REPLACE_DEFAULT_POLICY_VERSION
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iot:CreatePolicyVersion" ], "Resource":[ "*" ] } ] }
ENABLE_IOT_LOGGING
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iot:SetV2LoggingOptions" ], "Resource":[ "*" ] }, { "Effect":"Allow", "Action":[ "iam:PassRole" ], "Resource":[ "<IAM role ARN used for setting up logging>" ] } ] }
PUBLISH_FINDING_TO_SNS
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "sns:Publish" ], "Resource":[ "<The SNS topic to which the finding will be published>" ] } ] }

对于所有缓解操作类型,请使用以下信任策略模板:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

服务限制

以下服务限制适用于缓解操作和审核缓解操作任务:

资源 限制
一个 AWS 账户中的最大缓解操作数量 100 个操作
同时运行的审核缓解操作任务的最大数量 10 个任务
审核缓解操作任务的保留期 90 天