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

AWS IoT Device Defender 故障排除指南

常规

问:使用 AWS IoT Device Defender 是否需要满足任何先决条件?

答:如果要使用设备报告的指标,必须首先在连接 AWS IoT 的设备或设备网关上部署代理。设备必须提供一致的客户端标识符或事物名称。

审核

问:我启用了检查,审核持续显示“In-Progress”已经很长时间了。是哪里出错了吗? 何时可以看到结果?

答:检查一经启用,数据收集就会立即开始。但是,如果您的账户具有大量要收集的数据(证书、事物、策略等),那么您在启用检查后可能需要一段时间才能看到检查结果。

Detect

问:如何知道在 AWS IoT Device Defender 安全配置文件行为中设置的阈值?

答:首先创建低阈值的安全配置文件行为,并将其附加到包含相应设备组的事物组。您可以使用 AWS IoT Device Defender 查看当前指标,然后根据使用案例调整设备行为阈值。

问:我创建了一个行为,但它没有在预计的时间点触发违规。应该如何修复此问题?

答:在定义行为时,您指定了预期的设备的正常行为方式。例如,您有一个监控摄像头,只在 TCP 端口 8888 连接一个中央服务器,您不希望它进行任何其他连接。要想在摄像头连接其他端口时收到提醒,您可以定义一个类似如下的行为:

{ "name": "Listening TCP Ports", "metric": "aws:listening-tcp-ports", "criteria": { "comparisonOperator": "in-port-set", "value": { "ports": [ 8888 ] } } }

如果摄像头在 TCP 端口 443 上建立 TCP 连接,则违反了设备行为并将触发提醒。

问:我的一个或多个行为违规。如何清除违规?

答:警报将在设备恢复预期行为后解除,如行为配置文件中所定义。系统在收到设备指标数据后即会评估行为配置文件。

问:我删除了违规行为,但如何停止提醒?

答:删除行为会停止针对该行为的所有未来的违规和提醒。必须从通知机制中清除早期的提醒。行为被删除后,该行为的违规记录将同账户中的其他违规一样保留相同的时间。

设备指标

问:我在提交已知违反行为的指标报告,但没有触发任何违规。这是怎么回事?

答:请订阅以下 MQTT 主题以核对您的指标报告是否被接受:

$aws/things/THING_NAME/defender/metrics/FORMAT/rejected $aws/things/THING_NAME/defender/metrics/FORMAT/accepted

其中,THING_NAME 是报告指标的事物的名称,FORMAT 是“json”或“cbor”,具体取决于事物提交的指标报告的格式。

订阅后,对于提交的每个指标报告,您应该会收到关于这些主题的消息。rejected 消息表明解析指标报告时出现了问题。消息负载中会包含一条错误消息,以帮助您更正指标报告中的任何错误。accepted 消息表明指标报告已正确解析。

问:如果在指标报告中发送空指标会怎样?

答:空的端口列表或 IP 地址列表始终被视为符合对应行为。如果对应行为违规,则违规将被清除。

问:为什么我的设备指标报告中包含不在 AWS IoT 注册表中的设备的消息?

如果您有一个或多个安全配置文件附加到所有事物或所有未注册的事物,那么 AWS IoT Device Defender 将包括未注册事物的指标。如果您要排除未注册事物的指标,可以将配置文件附加到所有已注册的设备,而不是所有设备。

问:即使我将安全配置文件附加到所有未注册的设备或所有设备,我也没有看到来自一个或多个未注册设备的消息。如何修复此问题?

请确认您发送的指标报告格式正确,并且使用的是支持的格式之一。有关信息,请参阅设备指标文档规范。验证未注册的设备是否使用的是一致的客户端标识符或事物名称。如果事物名称包含控制字符,或事物名称的长度超过 128 字节的 UTF-8 编码字符,则将拒绝设备报告的消息。

问:如果将未注册的设备添加到注册表,或已注册的设备变为未注册,会发生什么情况?

答:如果在注册表中添加或删除设备:

  • ListMetricValues API 返回为指定的 thingName 发布的指标(行为无变化)。

  • 如果它持续发布违规指标,您可以看到设备的两项单独的违规(一个在其注册的事物名称下,一个在其未注册的身份下)。旧身份的活动违规会在两天后不再显示,但在违规历史记录存在最长可达 14 天。

问:我应该在设备指标报告的报告 ID 字段提供什么值?

答:对每个指标报告使用唯一值,用正整数表示。常见的做法是使用 Unix 纪元时间戳

问:我是否应该为 AWS IoT Device Defender 指标创建专用 MQTT 连接?

答:不需要使用单独的 MQTT 连接。

问:在连接以发布设备指标时,我应该使用什么客户端 ID?

对于 AWS IoT 注册表中的设备(事物),可使用注册的事物名称。对于不在 AWS IoT 注册表中的设备,在连接到 AWS IoT 时可使用一致的标识符。此做法有助于将违规与事物名称匹配。

问:我能否使用不同的客户端 ID 发布设备指标?

代表另一项事物发布指标是可以实现的。要实现此目的,您可以将指标发布到 AWS IoT Device Defender 为该设备预留的主题。例如,Thing-1 要发布自己的指标,并代表 Thing-2 发布指标。Thing-1 收集自己的指标并将其发布到 MQTT 主题:

$aws/things/Thing-1/defender/metrics/json

Thing-1 随后从 Thing-2 获取指标,并将这些指标发布到 MQTT 主题:

$aws/things/Thing-2/defender/metrics/json
问:我的账户中能拥有多少个安全配置文件和行为?

答:请参阅服务限制

问:提醒目标的典型目标角色是什么样的?

答:允许 AWS IoT Device Defender 针对提醒目标(SNS 主题)发布提醒的角色需要具备以下两个条件:

  • 信任关系,将 iot.amazonaws.com 指定为可信实体。

  • 附加的策略,授权 AWS IoT 发布到指定的 SNS 主题。例如:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "<sns-topic-arn>" } ] }