AWS IoT Device Defenderで検出されたアラームの検証状態を管理出来るようになりました

2021.09.26

いわさです。

AWS IoT Device Defenderにはセキュリティプロファイルで想定する動作を定義することで、想定外の挙動を検出してアラームとして扱う機能があります。
そのアラームに「検証状態」を管理することが出来るようになったとのことです。

alarm verification state
After an alarm has been created, you can verify the alarm as True positive, Benign positive, False positive, or Unknown. You can also add a description to your alarm verification state. You can view, organize, and filter AWS IoT Device Defender alarms by using one of the four verification states. You can use alarm verification states and related descriptions to inform members of your team. This helps your team to take follow-up actions, for example, performing mitigation actions on True positive alarms, skipping Benign positive alarms, or continuing investigation on Unknown alarms. The default verification state for all alarms is Unknown.

マネジメントコンソールの日本語に従うと以下の4つの検証状態としてアラームをマークすることでアラームの状態管理を行うことが出来るというもののようです。

  • 不明
  • 真検知
  • 誤検知
  • 良性の検知

AWS IoT Device Defender Detect自体触るのは初めてですが、本日はちょっと状態管理も含めて触ってみました。

セキュリティプロファイルの設定と検出

では、まずはセキュリティプロファイルの設定から行います。
設定内容と検証コードの一部はAWS IoT Device Defenderハンズオンを参考にさせて頂きました。

    # Start sending dummy data
    topic = BASE_TOPIC + device_name
    logging.info("topic: %s", topic)
    while True:
        # now = datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
        # tmp = 20 + random.randint(-5, 5)
        # hum = 50 + random.randint(-10, 10)
        # payload = {"DEVICE_NAME": device_name, "TIMESTAMP": now, "TEMPERATURE": tmp, "HUMIDITY": hum}
        # logger.debug("  payload: %s", payload)

        # mqtt_connection.publish(
        #     topic=topic,
        #     payload=json.dumps(payload),
        #     qos=mqtt.QoS.AT_LEAST_ONCE)

        bigstr = ''.join(str(e) for e in range(1000))
        mqtt_connection.publish(
            topic=topic,
            payload=bigstr,
            qos=mqtt.QoS.AT_LEAST_ONCE)

        time.sleep(wait_time)

1500以下を想定しているプロファイルに対して、2500くらいのメッセージを送信しています。   すぐ検出されました。

検証状態の設定

さて、では早速検証状態まわりをさわっていきましょう。
アラームを選択し、検証状態をマークを押下します。

ダイアログで表示されて、検証状態と説明を選択してマークする流れですね。

検証状態は冒頭であげた4種類です。

そして検証状態ごとに選択出来る説明が変わります。
ただ、どの検証状態にも「-」と「その他(追加の理由または説明)」が用意されています。

その他は説明をフリー入力出来ます。

選択してみました。
リスト上の検証の状態が変わりましたね。

フィルターで検証状態を設定することが出来るので、例えば誤検知の除いたりが出来るので、そういった使い方を想定している形でしょうか。

アラーム画面ではまとめて操作が出来ます。
検出で選択できる緩和アクションはThingグループへの追加だけのようなので、誤検知をグルーピングして後ほど処理するとかいう使い方でしょうか。

初期検出状態は全て「不明」なので、検出状態を設定することでアラーム管理が出来そうですね。
なるほど、不明なままになっているものは放置されている or 追加の調査が必要といった形でしょうか。

説明が日本語だと「アラームを検証状態とマークできませんでした」が発生

説明欄ですが、「-」とその他のフリー入力で半角英数を入力した場合以外は全て失敗しました。

挙動見る限りではマネジメントコンソールが日本語になっていると失敗するようです。
Englishに変更すると問題なく設定出来ました。

修正を待ちたいですね。

まとめ

本日はDevice Defender Detectのアラーム検出状態を触ってみました。

IoTソリューションの運用面の機能ですね。
これを使うとアラームの一次対応のような形で闇に葬られることなく、大量のアラームで埋もれてしまうことなく、対応すべきアラームに対応出来るようになる便利な機能だなと思いました。
是非使ってみてください。