Sentinel プレイブック - ホスト エンティティに対して MDE 自動調査を実行
はじめに
Microsoft Sentinel は、さまざまなログソースからセキュリティインシデントを自動的に生成することが可能です。このインシデントにホスト エンティティが含まれていた場合、初動対応として Defender for Endpoint の自動調査と修復 (AIR) を使用するケースがありますが、自動的に実行されるケースは限られており、特に 3rd Party 製品起因のインシデントの場合、手動実行が必要となります。
そのため本記事では、インシデントに含まれるホスト エンティティに対して、自動的に AIR をトリガーする Logic Apps を作成してきます。
Logic Apps 設定
全体のフロー概要は以下になります。
- Sentinel インシデントをトリガーとして実行
- Sentinel コネクタでホスト エンティティを取得
- MDE コネクタでホスト名からデバイス情報を取得
- マシンが一意に特定できる場合、MDE コネクタで AIR を実行
- AIR のステータスを完了するまで継続して取得
- 調査が完了し、無害であれば Sentinel インシデントをクローズ
フロー全体はこちらです。
まずマネージド ID を有効化し、Microsoft Sentinel レスポンダーの権限を付与しておきます。
トリガーは [Microsoft Sentinel incident] を使用します。
Sentinel コネクタで ホスト エンティティを取得します。
調査ステータスを格納する変数を作成しておきます。
同じく、調査結果の無害・有害のフラグを格納する変数を作成しておきます。
MDE コネクタ (Defender ATP) を使用して、エンティティから取得したホスト名でデバイスを検索・取得します。この際、一意に特定できるか判断するため、詳細パラメータで [数を含める] を追加し、応答に該当するホスト名が含まれるようにします。なお、ホスト エンティティが複数になる (Array形式になる) ため、自動的に For each が追加されます。
追加された For each については、並列ではなく逐次処理されるように [Concurrency control] を ON に、並列数を 1 にします。
取得したデバイス数を条件として処理を分岐します。1 以外の場合はホスト名が一意に特定できないため、自動調査を実行せずフラグを 0 に指定して処理を止めます。
デバイスが一意に特定できる場合、AIR を実行して、ステータスを取得します。こちらもデバイスが Array 形式になるため For each が自動的に追加されますが、デバイス数が 1 の場合のみに実行するため、実際には 1 回のみ実行されます。
MDE コネクタで調査 ID に基づいて調査ステータスを取得します。
実行中の場合、完了するまで 1 分ごとに繰り返し調査ステータスを取得します。
調査完了し、調査結果が無害でない場合、フラグを 0 に指定します。
ここからは任意ですが、フラグが 1 (= すべてのホスト エンティティが無害) の場合、Sentienl のインシデントをクローズしています。
オートメーション ルール
こちらを自動実行する場合は、Sentinel のオートメーション ルールが必要です。[オートメーション ルール] から追加し、対象となるインシデントを指定、アクションでさきほど作成した Logic Apps を指定しておきます。
動作確認
実行すると、以下のようにホスト エンティティからデバイスを取得します。
取得したデバイスに AIR を自動実行し、ステータスを取得します。
調査が完了して無害であることが確認できています。
最終的に無害であるため、以下でインシデントをクローズしています。
サンプル ARM テンプレート
こちらにサンプルの ARM テンプレートを提供しています。
デプロイ後、以下の対応が必要になります。
- マネージド ID の有効化、権限の付与
- MDE コネクタの接続情報の更新
まとめ
本記事ではプレイブックを使用して、Sentinel インシデントのホスト エンティティに対して MDE 自動調査と応答をキックしました。日常業務で手動実行されている場合は運用負荷を低減することが可能であるため、必要に応じて適宜カスタマイズしてご活用ください。
Discussion