Sentinel プレイブック - 類似インシデントの対応状況を取得し過検知を判断
はじめに
インシデント対応では、過去に発生した類似のインシデントを参考にしながら、対応方針や過検知の判断を行うことが一般的です。従来は、インシデント管理ツールを使って過去の事例を検索し、手作業で調査・判断を進める必要があり、運用負荷をあげる一因になっていました。
そのため本記事では、このような過検知判断のプロセスを Logic Apps を活用して自動化する取り組みについて紹介します。
Logic Apps 設定
全体のフロー概要は以下になります。
- Sentinel インシデントをトリガーとして実行
- Azure Monitor クエリで類似インシデントを検索
- Sentinel コネクタで類似インシデントのコメントを取得
- Azure OpenAI コネクタでコメントから過検知・正規検知を判断
- 過検知と判断された場合 Sentinel インシデントをクローズ
フロー全体はこちらです。
まずマネージド ID を有効化し、Microsoft Sentinel レスポンダーの権限を付与しておきます。
トリガーは [Microsoft Sentinel incident] を使用します。
Azure Monitor コネクタでクエリを実行し、類似インシデントをピックアップします。let incidentId =
の箇所にトリガーとなった Sentinel インシデントの ARM ID を入れています。
類似インシデントの検索クエリは以下で紹介しています。
クエリ実行結果が JSON で出力されるため、パースします。
類似インシデントから取得したコメントを格納するための変数を準備します。
取得したインシデント情報を取得し、コメントを追記形式で変数に格納します。類似インシデントは Array 形式となるため自動的に For each が追加されます。
今回は Sentinel のコメントを取得していますが、ServiceNow などインシデント管理ツールを使用している場合はそちらの対応状況を取得するようにします。また、今回はコメントのみ取得していますが、クローズ時のステータス (真陽性・擬陽性) や理由なども活用可能かと思います。
Azure OpenAI コネクタでプロンプトを実行し、コメントに基づいて過検知かどうかを判断します。
Azure OpenAI コネクタの出力 (choices) に JSON 形式を指定しているためパースします。なお出力が Array 形式のため、For each が自動で追加されますが、出力は 1 つとなるため、1 回のみ処理されます。
出力結果の falsePositive
の true/false を確認します。値が String 型となっているため、以下のようにパースした値を bool(body('Parse_JSON_-_AOAI_Output')?['falsePositive'])
で boolean 型に変換し、比較します。
true の場合、インシデントをクローズとし、Close Reason に Azure OpenAI の出力の reason を記載します。
オートメーション ルール
こちらを自動実行する場合は、Sentinel のオートメーション ルールが必要です。[オートメーション ルール] から追加し、対象となるインシデントを指定、アクションでさきほど作成した Logic Apps を指定しておきます。
動作確認
実行されると、以下のように類似インシデントが取得できます。
類似インシデントの情報からコメントを取得します。
取得したコメントを追記してマージしています。本来は message
の箇所のみのほうが望ましいですが、パースの処理が手間であったため、コメントの id
や name
なども含めてしまっています。
こちらを Azure OpenAI に投げて、回答を受領します。今回は分かりやすいコメントでテストしているためはっきり過検知と判断できていますが、状況によっては明確な回答が得られない可能性があります。
最後にコメントをつけてインシデントをクローズします。
サンプル ARM テンプレート
こちらにサンプルの ARM テンプレートを提供しています。
デプロイ後、以下の対応が必要になります。
- マネージド ID の有効化、権限の付与
- Azure Monitor コネクタ、Azure OpenAI コネクタの接続情報の更新
まとめ
本記事ではプレイブックを使用して Sentinel の類似インシデントを検索し、過去対応状況から過検知有無を Azure OpenAI で判断する処理を自動化しました。
生成 AI を使用しているため判断にブレが出る可能性はありますが、インシデントへのコメント追記やメール通知内容に追記するだけでも一から調査するよりも省力化が可能になるかと思います。
Discussion