AWS IoT Device Defender トラブルシューティングガイド - AWS IoT Core

AWS IoT Device Defender トラブルシューティングガイド

このトピックの改善にご協力ください

全般

Q: AWS IoT Device Defender を使用するための前提条件はありますか?

A: デバイスでレポートされたメトリクスを使用する場合はまず、AWS IoT に接続されたデバイスまたはデバイスゲートウェイにエージェントをデプロイする必要があります。デバイスで、一貫したクライアント識別子またはモノの名前を指定する必要があります。

Audit

Q: チェック項目を有効にしましたが、監査には長時間「進行中」と表示されています。問題が発生したのですか? 結果はいつ確認できますか?

A: チェック項目が有効になると、データ収集がすぐに開始されます。ただし、アカウントに収集するデータが大量にある場合 (例、証明書、モノ、ポリシー) は、有効にしてからしばらくの間チェックの結果が生成されないことがあります。

検出

Q: AWS IoT Device Defender セキュリティプロファイルの動作で設定するしきい値はどうすれば分かりますか?

A: まず、しきい値の低いセキュリティプロファイル動作を作成し、対応するデバイスセットを含むモノのグループにそれをアタッチします。AWS IoT Device Defender を使用して現在のメトリクスを表示し、ユースケースに合わせてデバイスの動作のしきい値を調整することができます。

Q: 動作を作成しましたが、予想される場合でも違反がトリガーされません。解決策はありますか?

A: デバイスを定義する際に、通常のデバイスの動作を指定してください。たとえば、TCP ポート 8888 で 1 つの中央サーバーにのみ接続するセキュリティカメラがある場合、他の接続を行うことは期待しません。カメラが別のポートで接続を行った場合にアラートを生成するには、以下のように動作を定義します。

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

カメラが TCP ポート 443 で TCP 接続を行った場合、デバイス動作への違反となり、アラートがトリガーされます。

Q: 1 つまたは複数の動作が違反しています。違反をクリアするにはどうすればよいですか?

A: 定義した動作プロファイルで定義されているように、予期される動作に戻るとアラームはクリアされます。動作プロファイルは、デバイスのメトリクスデータを受信したときに評価されます。デバイスが 2 日を超えてメトリクスを発行しない場合は、自動的に違反イベントが alarm-invalidated に設定されます。

Q: 違反した動作を削除しましたが、アラートを停止するにはどうすればいいですか?

A: 動作を削除すると、その後のすべての違反と、その動作に対するアラートが停止されます。それ以前のアラートは、通知メカニズムから空にする必要があります。動作を削除すると、アカウント内の他のすべての違反と同じ期間、その動作の違反記録が保持されます。

デバイスメトリクス

Q: 動作に違反していることが分かっているメトリクスレポートを送信していますが、違反がトリガーされません。何が問題なのでしょうか?

A: 以下の MQTT トピックにサブスクライブし、メトリクスレポートが承諾されていることをチェックしてください。

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

ここで、THING_NAME はメトリクスを報告しているモノの名前であり、FORMAT はモノによって送信されるメトリクスレポートの形式に応じて「json」または「cbor」です。

サブスクライブすると、送信されたメトリクスレポートごとにこれらのトピックに関するメッセージを受け取ります。rejected メッセージは、メトリクスレポートの解析に問題があったことを示しています。エラーメッセージは、メトリクスレポートでエラーを修正できるようにするため、メッセージペイロードに含まれています。accepted メッセージは、メトリクスレポートが適切に解析されたことを示しています。

Q: メトリクスレポートで空のメトリクスを送信した場合はどうなりますか?

A: ポートまたは IP アドレスの空のリストは常に、対応する動作に準拠していると見なされます。対応する動作が違反している場合、違反がクリアされます。

Q: AWS IoT レジストリにないデバイスのメッセージがデバイスメトリクスレポートに含まれているのはなぜですか?

1 つ以上のセキュリティプロファイルがすべてのモノまたは未登録のすべてのモノにアタッチされている場合、AWS IoT Device Defender には未登録のモノからのメトリクスが含まれます。未登録のモノからメトリクスを除外する場合は、すべてのデバイスではなく登録済みのすべてのデバイスにプロファイルをアタッチします。

Q: セキュリティプロファイルを未登録のすべてのデバイスまたはすべてのデバイスに適用しても、未登録の 1 つ以上のデバイスからのメッセージが表示されません。どうすれば解決できますか?

サポートされているいずれかの形式を使用して、適切な形式のメトリクスレポートを送信していることを確認してください。詳細については、デバイスメトリクスドキュメントの仕様 を参照してください。未登録のデバイスで一貫したクライアント識別子またはモノの名前が使用されていることを確認します。モノ名に制御文字が含まれている場合、またはモノ名が 128 バイトの UTF-8 エンコード文字より長い場合、デバイスによって報告されたメッセージは拒否されます。

Q: 未登録のデバイスがレジストリに追加された場合、または登録済みのデバイスが未登録になった場合はどうなりますか?

A: レジストリにデバイスが追加または削除された場合は次のようになります。

  • 違反の測定基準を引き続き公開すると、デバイスに対して 2 つの異なる違反が表示されます (1 つは登録済みのモノの名前の下、もう 1 つは未登録の ID の下)。古い ID に対するアクティブな違反は 2 日後には表示されなくなりますが、違反の履歴には最大 14 日間表示でされます。

Q: デバイスメトリクスレポートの ID フィールドにはどの値を指定する必要がありますか?

A: 正の整数で表された、メトリクスレポートごとに一意の値にする必要があります。一般的な手法として UNIX エポックタイムスタンプを使用できます。

Q: AWS IoT Device Defender メトリクスの専用 MQTT 接続を作成する必要はありますか?

A: 別個の MQTT 接続は必要ありません。

Q: デバイスメトリクスを発行するために接続するとき、どのクライアント ID を使用する必要がありますか?

AWS IoT レジストリにあるデバイス (モノ) の場合は、登録済みのモノの名前を使用します。AWS IoT レジストリにないデバイス (モノ) の場合は、AWS IoT に接続する際の一貫した ID を使用します。このプラクティスは、モノの名前の違反を一致させるのに役立ちます。

Q: 別のクライアント 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
Q: アカウントにはいくつのセキュリティプロファイルと動作を保有できますか?

A: AWS IoT Device Defender エンドポイントとクォータを参照してください。

Q: アラートターゲットの典型的なターゲットロールはどのようなものですか?

A: AWS IoT Device Defender がアラートターゲット (SNS トピック) でアラートを発行できるようにするロールには、以下の 2 つが必要です。

  • 信頼されたエンティティとして iot.amazonaws.com 指定する信頼関係。

  • 指定された SNS トピックで発行する AWS IoT アクセス許可を付与するアタッチされたポリシー。例 :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "<sns-topic-arn>" } ] }
  • アラートを発行するために使用される SNS トピックが暗号化されたトピックである場合、SNS トピックに発行するためのアクセス許可とともに、AWS IoT にさらに 2 つのアクセス許可を付与する必要があります。例 :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish", "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "<sns-topic-arn>" } ] }
Q: カスタムメトリクスタイプ number を使用したメトリクスレポートの送信時に、エラーメッセージ Malformed metrics report が表示されて失敗します。何が問題なのでしょうか?

A: タイプ number は入力として単一のメトリクス値のみを取りますが、DeviceMetrics レポートでメトリック値を送信するときは、単一の値を持つ配列として渡す必要があります。メトリクス値を配列として送信していることを確認します。

ペイロードエラー:

{"header":{"report_id":12334567,"version":"1.0"},"metrics":{"network_stats":{"bytes_in":30680,"bytes_out":10652,"packets_in":113,"packets_out":118}},"custom_metrics":{"my_custom_metric":{"number":0}}}

エラーメッセージ :

{"thingName":"myThing","status":"REJECTED","statusDetails":{"ErrorCode":"InvalidPayload","ErrorMessage":"Malformed metrics report"},"timestamp":1635802047699}

エラーのないペイロード :

{"header":{"report_id":12334567,"version":"1.0"},"metrics":{"network_stats":{"bytes_in":30680,"bytes_out":10652,"packets_in":113,"packets_out":118}},"custom_metrics":{"my_custom_metric":[{"number":0}]}}

レスポンス:

{"thingName":"myThing","12334567":1635800375,"status":"ACCEPTED","timestamp":1635801636023}