设备端指标 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

设备端指标

创建安全配置文件时,您可以通过为 IoT 设备生成的指标配置行为和阈值来指定 IoT 设备的预期行为。以下是设备端指标,它们是来自您在设备上安装的代理的指标。

输出字节数 (aws:all-bytes-out)

给定时间段内从设备发出的出站字节数量。

使用此指标指定给定时间段内设备应该发送的最大或最小出站流量(以字节为单位)。

兼容:Rules Detect | ML Detect

运算符:小于 |小于等于 | 大于 |大于等于

值:非负整数

单位:字节

持续时间:非负整数。有效值为 300、600、900、1800 或 3600 秒。

{ "name": "TCP outbound traffic", "metric": "aws:all-bytes-out", "criteria": { "comparisonOperator": "less-than-equal", "value": { "count": 4096 }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 statisticalThreshold 的示例

{ "name": "TCP outbound traffic", "metric": "aws:all-bytes-out", "criteria": { "comparisonOperator": "less-than-equal", "statisticalThreshold": { "statistic": "p50" }, "durationSeconds": 900, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 ML Detect 的示例

{ "name": "Outbound traffic ML behavior", "metric": "aws:all-bytes-out", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

字节数 (aws:all-bytes-in)

给定时间段内发往设备的入站字节数量。

使用此指标指定给定时间段内设备应该接收的最大或最小入站流量(以字节为单位)。

兼容:Rules Detect | ML Detect

运算符:小于 |小于等于 | 大于 |大于等于

值:非负整数

单位:字节

持续时间:非负整数。有效值为 300、600、900、1800 或 3600 秒。

{ "name": "TCP inbound traffic", "metric": "aws:all-bytes-in", "criteria": { "comparisonOperator": "less-than-equal", "value": { "count": 4096 }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 statisticalThreshold 的示例

{ "name": "TCP inbound traffic", "metric": "aws:all-bytes-in", "criteria": { "comparisonOperator": "less-than-equal", "statisticalThreshold": { "statistic": "p90" }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 ML Detect 的示例

{ "name": "Inbound traffic ML behavior", "metric": "aws:all-bytes-in", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

侦听 TCP 端口计数 (aws:num-listening-tcp-ports)

设备正在侦听的 TCP 端口数量。

使用此指标指定每个设备应该监控的最大 TCP 端口数量。

兼容:Rules Detect | ML Detect

单位:失败次数

运算符:小于 |小于等于 | 大于 |大于等于

值:非负整数

单位:失败次数

持续时间:非负整数。有效值为 300、600、900、1800 或 3600 秒。

{ "name": "Max TCP Ports", "metric": "aws:num-listening-tcp-ports", "criteria": { "comparisonOperator": "less-than-equal", "value": { "count": 5 }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 statisticalThreshold 的示例

{ "name": "Max TCP Ports", "metric": "aws:num-listening-tcp-ports", "criteria": { "comparisonOperator": "less-than-equal", "statisticalThreshold": { "statistic": "p50" }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 ML Detect 的示例

{ "name": "Max TCP Port ML behavior", "metric": "aws:num-listening-tcp-ports", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

侦听 UDP 端口计数 (aws:num-listening-udp-ports)

设备正在侦听的 UDP 端口数量。

使用此指标指定每个设备应该侦听的最大 UDP 端口数量。

兼容:Rules Detect | ML Detect

单位:失败次数

运算符:小于 |小于等于 | 大于 |大于等于

值:非负整数

单位:失败次数

持续时间:非负整数。有效值为 300、600、900、1800 或 3600 秒。

{ "name": "Max UDP Ports", "metric": "aws:num-listening-udp-ports", "criteria": { "comparisonOperator": "less-than-equal", "value": { "count": 5 }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 statisticalThreshold 的示例

{ "name": "Max UDP Ports", "metric": "aws:num-listening-udp-ports", "criteria": { "comparisonOperator": "less-than-equal", "statisticalThreshold": { "statistic": "p50" }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 ML Detect 的示例

{ "name": "Max UPD Port ML behavior", "metric": "aws:num-listening-tcp-ports", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

输出数据包数 (aws:all-packets-out)

给定时间段内从设备发出的出站数据包数量。

使用此指标指定给定时间段内设备应该发送的最大或最小出站总流量。

兼容:Rules Detect | ML Detect

运算符:小于 |小于等于 | 大于 |大于等于

值:非负整数

单位:数据包

持续时间:非负整数。有效值为 300、600、900、1800 或 3600 秒。

{ "name": "TCP outbound traffic", "metric": "aws:all-packets-out", "criteria": { "comparisonOperator": "less-than-equal", "value": { "count": 100 }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 statisticalThreshold 的示例

{ "name": "TCP outbound traffic", "metric": "aws:all-packets-out", "criteria": { "comparisonOperator": "less-than-equal", "statisticalThreshold": { "statistic": "p90" }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 ML Detect 的示例

{ "name": "Outbound sent ML behavior", "metric": "aws:all-packets-out", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

数据包数 (aws:all-packets-in)

给定时间段内发往设备的入站数据包数量。

使用此指标指定给定时间段内设备应该接收的最大或最小入站总流量。

兼容:Rule Detect | ML Detect

运算符:小于 |小于等于 | 大于 |大于等于

值:非负整数

单位:数据包

持续时间:非负整数。有效值为 300、600、900、1800 或 3600 秒。

{ "name": "TCP inbound traffic", "metric": "aws:all-packets-in", "criteria": { "comparisonOperator": "less-than-equal", "value": { "count": 100 }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

使用 statisticalThreshold 的示例

{ "name": "TCP inbound traffic", "metric": "aws:all-packets-in", "criteria": { "comparisonOperator": "less-than-equal", "statisticalThreshold": { "statistic": "p90" }, "durationSeconds": 300, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 ML Detect 的示例

{ "name": "Inbound sent ML behavior", "metric": "aws:all-packets-in", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

目标 IP (aws:destination-ip-addresses)

一组目标 IP 地址。

使用此指标指定一组允许(以前称为列入白名单)或拒绝(以前称为列入黑名单)的无类域间路由 (CIDR),每个设备必须或不得通过它们连接到 Amazon IoT。

兼容:Rule Detect

运算符:in-cidr-set | not-in-cidr-set

值:CIDR 列表

单位:n/a

{ "name": "Denied source IPs", "metric": "aws:source-ip-address", "criteria": { "comparisonOperator": "not-in-cidr-set", "value": { "cidrs": [ "12.8.0.0/16", "15.102.16.0/24" ] } }, "suppressAlerts": true }

侦听 TCP 端口 (aws:listening-tcp-ports)

设备正在侦听的 TCP 端口。

使用此指标指定一组允许(以前称为列入白名单)或拒绝(以前称为列入黑名单)的 TCP 端口,每个设备必须或不得通过它们进行侦听。

兼容:Rule Detect

运算符:in-port-set | not-in-port-set

值:端口列表

单位:n/a

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

侦听 UDP 端口 (aws:listening-udp-ports)

设备正在侦听的 UDP 端口。

使用此指标指定一组允许(以前称为列入白名单)或拒绝(以前称为列入黑名单)的 UDP 端口,每个设备必须或不得通过它们进行侦听。

兼容:Rule Detect

运算符:in-port-set | not-in-port-set

值:端口列表

单位:n/a

{ "name": "Listening UDP Ports", "metric": "aws:listening-udp-ports", "criteria": { "comparisonOperator": "in-port-set", "value": { "ports": [ 1025, 2000 ] } } }

已建立的 TCP 连接计数 (aws:num-established-tcp-connections)

设备的 TCP 连接数。

使用此指标指定每个设备应该具有的最大或最小活动 TCP 连接数量(所有 TCP 状态)。

兼容:Rules Detect | ML Detect

运算符:小于 |小于等于 | 大于 |大于等于

值:非负整数

单位:连接

{ "name": "TCP Connection Count", "metric": "aws:num-established-tcp-connections", "criteria": { "comparisonOperator": "less-than-equal", "value": { "count": 3 }, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 statisticalThreshold 的示例

{ "name": "TCP Connection Count", "metric": "aws:num-established-tcp-connections", "criteria": { "comparisonOperator": "less-than-equal", "statisticalThreshold": { "statistic": "p90" }, "durationSeconds": 900, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }

例 使用 ML Detect 的示例

{ "name": "Connection count ML behavior", "metric": "aws:num-established-tcp-connections", "criteria": { "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1, "mlDetectionConfig": { "confidenceLevel": "HIGH" } }, "suppressAlerts": true }

设备指标文档规范

整体结构

长名称

短名称

必需

类型

约束

备注

header

hed

对象

格式正确的报告所必需的完整数据块。

metrics

met

对象

报告可以同时包含两个或至少一个 metrics 或者 custom_metrics 数据块。

custom_metrics

cmet

对象

报告可以同时包含两个或至少一个 metrics 或者 custom_metrics 数据块。

标头数据块

长名称

短名称

必需

类型

约束

备注

report_id

rid

整数

单调递增值。推荐采用纪元时间戳。

版本

v

字符串

Major.Minor

添加字段时为次要增量。如果指标移除,则为主要增量。

指标数据块:

TCP 连接

长名称

短名称

父元素

必需

类型

约束

备注

tcp_connections

tc

metrics

对象

established_connections

ec

tcp_connections

List<Connection>

已建立 TCP 状态

connections

cs

established_connections

List<Object>

remote_addr

rad

connections

数字

ip:port

IP 可能是 IPv6 或 IPv4

local_port

lp

connections

数字

>= 0

local_interface

li

connections

字符串

接口名称

total

t

established_connections

数字

>= 0

已建立的连接数

侦听 TCP 端口

长名称

短名称

父元素

必需

类型

约束

备注

listening_tcp_ports

tp

metrics

对象

ports

pts

listening_tcp_ports

List<Port>

> 0

port

pt

ports

数字

> 0

端口应该是大于 0 的数字

interface

if

ports

字符串

接口名称

total

t

listening_tcp_ports

数字

>= 0

侦听 UDP 端口

长名称

短名称

父元素

必需

类型

约束

备注

listening_udp_ports

up

metrics

对象

ports

pts

listening_udp_ports

List<Port>

> 0

port

pt

ports

数字

> 0

端口应该是大于 0 的数字

interface

if

ports

字符串

接口名称

total

t

listening_udp_ports

数字

>= 0

网络统计数据

长名称

短名称

父元素

必需

类型

约束

备注

network_stats

ns

metrics

对象

bytes_in

bi

network_stats

数字

Delta Metric, >= 0

bytes_out

bo

network_stats

数字

Delta Metric, >= 0

packets_in

pi

network_stats

数字

Delta Metric, >= 0

packets_out

po

network_stats

数字

Delta Metric, >= 0

以下 JSON 结构使用长名称。

{ "header": { "report_id": 1530304554, "version": "1.0" }, "metrics": { "listening_tcp_ports": { "ports": [ { "interface": "eth0", "port": 24800 }, { "interface": "eth0", "port": 22 }, { "interface": "eth0", "port": 53 } ], "total": 3 }, "listening_udp_ports": { "ports": [ { "interface": "eth0", "port": 5353 }, { "interface": "eth0", "port": 67 } ], "total": 2 }, "network_stats": { "bytes_in": 29358693495, "bytes_out": 26485035, "packets_in": 10013573555, "packets_out": 11382615 }, "tcp_connections": { "established_connections": { "connections": [ { "local_interface": "eth0", "local_port": 80, "remote_addr": "192.168.0.1:8000" }, { "local_interface": "eth0", "local_port": 80, "remote_addr": "192.168.0.1:8000" } ], "total": 2 } } }, "custom_metrics": { "MyMetricOfType_Number": [ { "number": 1 } ], "MyMetricOfType_NumberList": [ { "number_list": [ 1, 2, 3 ] } ], "MyMetricOfType_StringList": [ { "string_list": [ "value_1", "value_2" ] } ], "MyMetricOfType_IpList": [ { "ip_list": [ "172.0.0.0", "172.0.0.10" ] } ] } }

例 使用短名称的 JSON 结构示例

{ "hed": { "rid": 1530305228, "v": "1.0" }, "met": { "tp": { "pts": [ { "if": "eth0", "pt": 24800 }, { "if": "eth0", "pt": 22 }, { "if": "eth0", "pt": 53 } ], "t": 3 }, "up": { "pts": [ { "if": "eth0", "pt": 5353 }, { "if": "eth0", "pt": 67 } ], "t": 2 }, "ns": { "bi": 29359307173, "bo": 26490711, "pi": 10014614051, "po": 11387620 }, "tc": { "ec": { "cs": [ { "li": "eth0", "lp": 80, "rad": "192.168.0.1:8000" }, { "li": "eth0", "lp": 80, "rad": "192.168.0.1:8000" } ], "t": 2 } } }, "cmet": { "MyMetricOfType_Number": [ { "number": 1 } ], "MyMetricOfType_NumberList": [ { "number_list": [ 1, 2, 3 ] } ], "MyMetricOfType_StringList": [ { "string_list": [ "value_1", "value_2" ] } ], "MyMetricOfType_IpList": [ { "ip_list": [ "172.0.0.0", "172.0.0.10" ] } ] } }

从设备发送指标

Amazon IoT Device Defender Detect 可以收集、聚合和监控 Amazon IoT 设备生成的指标数据,以识别表现出异常行为的设备。本部分介绍如何将指标从设备发送到 Amazon IoT Device Defender。

您必须在连接 Amazon IoT 的设备或设备网关上安全部署 Amazon IoT 软件开发工具包版本 2,以收集设备端指标。查看在此处查看软件开发工具包的完整列表。

您应使用 Amazon IoT Device Client 发布指标,因为它提供了单个代理,该代理涵盖了 Amazon IoT Device Defender 和 Amazon IoT Device Management 中的功能 这些功能包括任务、安全隧道、Amazon IoT Device Defender 指标发布等。

使用 Amazon IoT Device Client 发布指标

要安装 Amazon IoT Device Client,您可以从 Github 下载。在要收集设备端数据的设备上安装 Amazon IoT 后,您必须进行配置以将设备端指标发送到 Amazon IoT Device Defender。确认 Amazon IoT Device Client 配置文件device-defender 部分设置了以下参数:

"device-defender": { "enabled": true, "interval-in-seconds": 300 }
警告

时间间隔至少应设置为 300 秒。如果将时间间隔设置为小于 300 秒,则您的指标数据可能会被节流。

更新配置后,您可以在 Amazon IoT Device Defender 控制台创建安全配置文件和行为来监控设备发布到云的指标。您可以依次选择 Defend(防护)、Detect(检测)和 Metrics(指标),从而在 Amazon IoT Core 控制台中发布指标。