缓解操作 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

缓解操作

您可以使用采取措施 Amazon IoT Device Defender 来缓解在 “审核发现” 或 “检测” 警报中发现的问题。

注意

不会对被隐藏的审计查找结果执行缓解操作。有关审计查找结果隐藏的更多信息,请参阅 审计查找结果隐藏

审计缓解操作

Amazon IoT Device Defender 为不同的审计检查提供了预定义的操作。您可以为自己配置这些操作 Amazon Web Services 账户 ,然后将其应用于一组调查结果。这些结果可以是:

  • 审核中发现的所有结果。此选项可在 Amazon IoT 控制台中使用,也可以使用 Amazon CLI。

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

  • 筛选的审核结果集。

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

审核检查到缓解操作映射
审核检查 支持的缓解操作
REVOKED_CA_CERT_CHECK PUBLISH_FINDING_TO_SNS、UPDATE_CA_CERTIFICATE
INTERMEDIATE_CA_REVOKED_FOR_ACTIVE_DEVICE_CERTIFICATES_CHECK PUBLISH_FINDING_TO_SNS、UPDATE_DEVICE_CERTIFICATE、ADD_THINGS_TO_THING_GROUP
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
IOT_POLICY_POTENTIAL_MISCONFIGURATION_CHECK PUBLISH_FINDING_TO_SNS、REPLACE_DEFAULT_POLICY_VERSION
CA_CERTIFICATE_EXPIRING_CHECK PUBLISH_FINDING_TO_SNS、UPDATE_CA_CERTIFICATE
CONFLICTING_CLIENT_IDS_CHECK PUBLISH_FINDING_TO_SNS
DEVICE_CERTIFICATE_EXPIRING_CHECK PUBLISH_FINDING_TO_SNS、UPDATE_DEVICE_CERTIFICATE、ADD_THINGS_TO_THING_GROUP
REVOKED_DEVICE_CERTIFICATE_STILL_ACTIVE_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
  • 在中更改证书的状态以将其标记为非活动状态 Amazon IoT。

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

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

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

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

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

IOT_POLICY_POTENTIAL_MISCONFIGURATION_CHECK
  • 识别 Amazon IoT 策略中可能存在的错误配置。

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

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

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

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

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

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

LOGGING_DISABLED_CHECK
  • 启用日志记录。

Amazon 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

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

重要

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

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

检测缓解操作

Amazon IoT Device Defender 在 “检测” 警报上支持以下类型的缓解操作:

操作类型

注意事项
ADD_THINGS_TO_THING_GROUP 您指定要向其中添加设备的组。您还可以指定是否应覆盖一个或多个动态组中的成员身份(如果它超过了该事物可能所属组的最大数量)。

如何定义和管理缓解操作

您可以使用 Amazon IoT 控制台或 Amazon CLI 来定义和管理您的缓解措施 Amazon Web Services 账户。

创建缓解操作

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

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

  1. 打开 Amazon IoT 控制台中的“Mitigation actions”(缓解操作)页面

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

  3. Create a new mitigation action(创建新的缓解操作)页面上,在 Action name(操作名称)中输入缓解操作的唯一名称。

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

  5. Permissions(权限)中,选择应用操作的权限所属的 IAM 角色。

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

  7. 选择 Create(创建)以将缓解操作保存到您的 Amazon 账户。

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

使用 Amazon IoT 控制台查看和修改缓解措施
  1. 打开 Amazon IoT 控制台中的“Mitigation actions”(缓解操作)页面

    Mitigation actions(缓解操作)页面显示为您的 Amazon Web Services 账户定义的所有缓解操作的列表。

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

  3. 选择 Edit(编辑),然后对缓解操作进行更改。由于缓解操作的名称用于标识此操作,因此,您不能更改此名称。

  4. 选择 “更新”,将缓解操作的更改保存到您的 Amazon Web Services 账户。

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

使用更新 Amazon CLI 缓解措施
使用 Amazon IoT 控制台删除缓解操作
  1. 打开 Amazon IoT 控制台中的“Mitigation actions”(缓解操作)页面

    Mitigation actions(缓解操作)页面显示为您的 Amazon Web Services 账户定义的所有缓解操作。

  2. 选择要删除的缓解操作,然后选择 Delete(删除)。

  3. Are you sure you want to delete(是否确定要删除)窗口中,选择 Delete(删除)。

使用删除 Amazon CLI 缓解措施
使用 Amazon IoT 控制台查看缓解措施的详细信息
  1. 打开 Amazon IoT 控制台中的“Mitigation actions”(缓解操作)页面

    Mitigation actions(缓解操作)页面显示为您的 Amazon Web Services 账户定义的所有缓解操作。

  2. 选择您要查看的缓解操作的操作名称链接。

使用查看缓解措施的详细信息 Amazon CLI

应用缓解操作

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

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

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

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


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

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


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

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

使用 Amazon IoT 控制台通过启动操作执行来应用缓解操作
  1. Amazon IoT 控制台中打开“Audit results”(审计结果)页面

  2. 选择您要应用操作的审核的名称。

  3. 选择 Start mitigation actions(启动缓解操作)。如果所有检查都符合要求,则此按钮不可用。

  4. Start a new mitigation action(启动新的缓解操作)中,任务名称默认为审核 ID,但您可以将其更改为更有意义的内容。

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

    注意

    如果您尚未为自己配置操作 Amazon Web Services 账户,则操作列表为空。您可以选择 Create mitigation action(创建缓解操作)链接来创建一个或多个缓解操作。

  6. 指定要应用的所有操作后,请选择 Start task(启动任务)。

使用通过开始执行审计缓解操作来应用缓解措施 Amazon CLI
  1. 如果您要对审核的所有结果应用操作,请使用 ListAuditTasks 命令查找任务 ID。

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

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

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

使用 Amazon IoT 控制台查看您的操作执行情况
  1. 打开 Amazon IoT 控制台中的“Action tasks”(操作任务)页面

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

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

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

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

  3. 要查看任务的详细信息,请在 Executions (执行) 中选择 Show (显示)

    
              审核缓解操作任务的执行详细信息。
使用列 Amazon CLI 出已启动的任务
  1. 使用 ListAuditMitigationActionsTasks 可查看您的审核缓解操作任务。您可以提供筛选条件来缩小结果范围。如果要查看任务的详细信息,请记下任务 ID。

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

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

使用取消正在运行的审计缓解操作任务 Amazon CLI
  1. 使用 ListAuditMitigationActionsTasks 命令找到您要取消其执行的任务的任务 ID。您可以提供筛选条件来缩小结果范围。

  2. 使用 ListDetectMitigationActionsExecutions 命令通过任务 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 is published>" ] } ] }

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:iot:*:111122223333::*" }, "StringEquals": { "aws:SourceAccount": "111122223333:" } } } ] }