デバイス側のメトリクス
セキュリティプロファイルを作成するときに、IoT デバイスによって生成されるメトリクスの動作としきい値を設定することで、IoT デバイスの想定される動作を指定できます。以下は、デバイス側のメトリクスです。これは、デバイスにインストールしたエージェントから取得したメトリクスです。
出力バイト数 (aws:all-bytes-out
)
一定期間内におけるデバイスからのアウトバウンドバイト数。
一定期間内にデバイスが送信する必要があるアウトバウンドトラフィックの最大量と最小量 (バイト単位で測定) を指定するには、このメトリクスを使用します。
次と互換性あり: Rules Detect | ML Detect
演算子: less-than | less-than-equals | greater-than | greater-than-equals
値: 負でない整数
単位: バイト
期間: 負でない整数 有効な値は、300、600、900、1800、3600 秒です。
例
{ "name": "TCP outbound traffic", "metric": "aws:all-bytes-out", "criteria": { "comparisonOperator": "less-than-equals", "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-equals", "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
演算子: less-than | less-than-equals | greater-than | greater-than-equals
値: 負でない整数
単位: バイト
期間: 負でない整数 有効な値は、300、600、900、1800、3600 秒です。
例
{ "name": "TCP inbound traffic", "metric": "aws:all-bytes-in", "criteria": { "comparisonOperator": "less-than-equals", "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-equals", "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
単位: エラー
演算子: less-than | less-than-equals | greater-than | greater-than-equals
値: 負でない整数
単位: エラー
期間: 負でない整数 有効な値は、300、600、900、1800、3600 秒です。
例
{ "name": "Max TCP Ports", "metric": "aws:num-listening-tcp-ports", "criteria": { "comparisonOperator": "less-than-equals", "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-equals", "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
単位: エラー
演算子: less-than | less-than-equals | greater-than | greater-than-equals
値: 負でない整数
単位: エラー
期間: 負でない整数 有効な値は、300、600、900、1800、3600 秒です。
例
{ "name": "Max UDP Ports", "metric": "aws:num-listening-udp-ports", "criteria": { "comparisonOperator": "less-than-equals", "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-equals", "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
演算子: less-than | less-than-equals | greater-than | greater-than-equals
値: 負でない整数
単位: パケット
期間: 負でない整数 有効な値は、300、600、900、1800、3600 秒です。
例
{ "name": "TCP outbound traffic", "metric": "aws:all-packets-out", "criteria": { "comparisonOperator": "less-than-equals", "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-equals", "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
演算子: less-than | less-than-equals | greater-than | greater-than-equals
値: 負でない整数
単位: パケット
期間: 負でない整数 有効な値は、300、600、900、1800、3600 秒です。
例
{ "name": "TCP inbound traffic", "metric": "aws:all-packets-in", "criteria": { "comparisonOperator": "less-than-equals", "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-equals", "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 送信先のセット。
各デバイスが AWS IoT に接続する必要がある、または接続してはならない、許可された Classless Inter-Domain Routings (CIDR) のセット (以前はホワイトリストに登録されたとしていた) または拒否された CIDR のセット (以前はブラックリストに登録されたとしていた) を指定するには、このメトリクスを使用します。
次と互換性あり: Rules Detect
演算子: in-cidr-set | not-in-cidr-set
値: CIDR のリスト
単位: 該当なし
例
{ "name": "Denied source IPs", "metric": "aws:destination-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 ポートのセット (以前はホワイトリストに登録されたとしていた) または拒否された TCP ポートのセット (以前はブラックリストに登録されたとしていた) を指定するには、このメトリクスを使用します。
次と互換性あり: Rules Detect
演算子: in-port-set | not-in-port-set
値: ポートのリスト
単位: 該当なし
{ "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 ポートのセット (以前はホワイトリストに登録されたとしていた) または拒否された UDP ポートのセット (以前はブラックリストに登録されたとしていた) を指定するには、このメトリクスを使用します。
次と互換性あり: Rules Detect
演算子: in-port-set | not-in-port-set
値: ポートのリスト
単位: 該当なし
{ "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
演算子: less-than | less-than-equals | greater-than | greater-than-equals
値: 負でない整数
単位: 接続
例
{ "name": "TCP Connection Count", "metric": "aws:num-established-tcp-connections", "criteria": { "comparisonOperator": "less-than-equals", "value": { "count": 3 }, "consecutiveDatapointsToAlarm": 1, "consecutiveDatapointsToClear": 1 }, "suppressAlerts": true }
例 statisticalThreshold
を使用した例
{ "name": "TCP Connection Count", "metric": "aws:num-established-tcp-connections", "criteria": { "comparisonOperator": "less-than-equals", "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 }
デバイスメトリクスドキュメントの仕様
長い名前 |
短縮名 |
必須 |
タイプ |
制約 |
コメント |
---|---|---|---|---|---|
ヘッダー |
hed |
Y |
オブジェクト |
正しい形式のレポートに必要なブロックを完成させます。 |
|
メトリクス |
met |
Y |
オブジェクト |
レポートは、 |
|
custom_metrics |
cmet |
Y |
オブジェクト |
レポートは、 |
長い名前 |
短縮名 |
必須 |
タイプ |
制約 |
コメント |
---|---|---|---|---|---|
report_id |
rid |
Y |
整数 |
一定間隔で増加する値。エポックタイムスタンプが推奨されています。 |
|
バージョン |
v |
Y |
文字列 |
Major.Minor |
フィールドの追加があるマイナー増分。メトリクスが削除された場合はメジャー増分。 |
メトリクスブロック:
長い名前 |
短縮名 |
親要素 |
必須 |
タイプ |
制約 |
コメント |
---|---|---|---|---|---|---|
tcp_connections |
tc |
メトリクス |
N |
オブジェクト |
||
established_connections |
ec |
tcp_connections |
N |
オブジェクト |
確立された TCP 状態 |
|
接続 |
cs |
established_connections |
N |
List<Object> |
||
remote_addr |
rad |
接続 |
Y |
数値 |
ip:port |
IP は IPv6 または IPv4 |
local_port |
lp |
接続 |
N |
数値 |
>= 0 |
|
local_interface |
li |
接続 |
N |
文字列 |
インターフェイス名 |
|
total |
t |
established_connections |
N |
数値 |
>= 0 |
確立した接続の数 |
長い名前 |
短縮名 |
親要素 |
必須 |
タイプ |
制約 |
コメント |
---|---|---|---|---|---|---|
listening_tcp_ports |
tp |
メトリクス |
N |
オブジェクト |
||
ports |
pts |
listening_tcp_ports |
N |
List<Object> |
> 0 |
|
port |
pt |
ports |
N |
数値 |
> 0 |
ポートは 0 より大きい数値にする必要があります |
インターフェイスからリクエスト |
if |
ports |
N |
文字列 |
インターフェイス名 |
|
total |
t |
listening_tcp_ports |
N |
数値 |
>= 0 |
長い名前 |
短縮名 |
親要素 |
必須 |
タイプ |
制約 |
コメント |
---|---|---|---|---|---|---|
listening_udp_ports |
up |
メトリクス |
N |
オブジェクト |
||
ports |
pts |
listening_udp_ports |
N |
List<Port> |
> 0 |
|
port |
pt |
ports |
N |
数値 |
> 0 |
ポートは 0 より大きい数値にする必要があります |
インターフェイスからリクエスト |
if |
ports |
N |
文字列 |
インターフェイス名 |
|
total |
t |
listening_udp_ports |
N |
数値 |
>= 0 |
長い名前 |
短縮名 |
親要素 |
必須 |
タイプ |
制約 |
コメント |
---|---|---|---|---|---|---|
network_stats |
ns |
メトリクス |
N |
オブジェクト |
||
bytes_in |
bi |
network_stats |
N |
数値 |
デルタメトリクス、>= 0 |
|
bytes_out |
bo |
network_stats |
N |
数値 |
デルタメトリクス、>= 0 |
|
packets_in |
pi |
network_stats |
N |
数値 |
デルタメトリクス、>= 0 |
|
packets_out |
po |
network_stats |
N |
数値 |
デルタメトリクス、>= 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" ] } ] } }
デバイスからのメトリクスの送信
AWS IoT Device Defender Detect は、AWS IoT デバイスによって生成されたメトリクスデータを収集、集計、監視し、異常な動作をしているデバイスを特定できます。このセクションでは、デバイスから AWS IoT Device Defender にメトリクスを送信する方法について説明します。
デバイス側のメトリクスを収集するには、AWS IoT コネクテッドデバイスまたはデバイスゲートウェイに AWS IoT SDK バージョン 2 を安全な方法でデプロイする必要があります。SDK の完全なリストはこちらをご覧ください。
AWS IoT Device Client は、AWS IoT Device Defender と AWS IoT Device Management の両方に存在する機能をカバーする単一のエージェントを提供することから、メトリクスの発行に使用できます。これらの機能には、ジョブ、セキュアトンネリング、AWS IoT Device Defender メトリクスの発行などがあります。
AWS IoT Device Defender が収集および評価するために、デバイス側のメトリックを AWS IoT の予約済みトピックに公開します。
AWS IoT デバイスクライアントを使用したメトリクスの発行
AWS IoT Device Client をインストールするには、Githubdevice-defender
セクションで次のパラメータが設定されていることを確認します。
"device-defender": { "enabled": true, "interval-in-seconds": 300 }
警告
少なくとも、時間間隔を 300 秒に設定する必要があります。時間間隔を 300 秒未満に設定すると、メトリクスデータがスロットリングされることがあります。
設定を更新したら、AWS IoT Device Defender コンソールでセキュリティプロファイルと動作を作成して、デバイスがクラウドに発行するメトリクスをモニタリングできます。AWS IoT Core コンソールで、[Defend] (防御)、[Detect] (検出)、[Metrics] (メトリクス) の順に選択することで、発行されたメトリクスを確認できます。