OpenAI と Microsoft Sentinel に関するシリーズへようこそ!今日は、OpenAI の人気のある言語モデルの別の使用例を検討し、Sentinel REST API を見ていきます。 Microsoft Sentinel インスタンスをまだお持ちでない場合は、無料の Azure アカウントを使用してインスタンスを作成し、「Sentinel の開始」クイックスタートに従ってください。 API キーを持つ個人の OpenAI アカウントも必要です。準備はできますか?はじめましょう!
セキュリティ担当者が直面するタスクの 1 つは、分析ルール、クエリ、定義を迅速に使用して、何がアラートをトリガーしたかを理解する方法です。たとえば、Kusto クエリ言語 (KQL) で記述された比較的短い Microsoft Sentinel 分析ルールの例を次に示します。
経験豊富な KQL 演算子は、それを簡単に解析できます。ただし、キーワード、ログ ソース、アクション、イベント ロジックを頭の中で計画するのにはまだ時間がかかります。 KQL を使用したことがない人は、このルールが何を検出するように設計されているかを理解するのにさらに時間がかかるかもしれません。幸運なことに、私たちには、コードを読んで自然言語で解釈するのがとても上手な友人、OpenAI の GPT3 がいます。
DaVinci のような GPT3 エンジンは、自然言語でのコードの解釈に非常に優れており、Microsoft Sentinel KQL の構文と使用法について広範なトレーニングを受けています。さらに良いことに、Sentinel には OpenAI コネクタが組み込まれており、GPT3 モデルを自動化された Sentinel プレイブックに統合できます。このコネクタを使用して、分析ルールを説明するコメントを Sentinel イベントに追加できます。これは、直線的な操作フローを持つ単純なロジック アプリになります。
# トリガーから始めて、ロジック アプリを見ていきましょう。このプレイブックには Microsoft Sentinel イベント トリガーを使用し、Sentinel コネクタを使用して関連するすべての分析ルール ID をイベントから抽出できるようにします。 Sentinel REST API を使用して、ルール ID を使用してルール クエリ テキストを検索します。ルール ID は、テキスト補完プロンプトで AI モデルに渡すことができます。最後に、AIモデルの出力をコメントとしてイベントに追加します。
最初のアクションは、Sentinel の「イベント関連分析ルール ID 項目」に作用する「For each」ロジック ブロックです。
次に、次の必要があります。 Sentinel REST API を使用して、スケジュールされたアラート ルール自体をリクエストします。この API エンドポイントは、https://learn.microsoft.com/en-us/rest/api/securityinsights/stable/alert-rules/get ?tabs= HTTP に文書化されています。これまでに Sentinel API を使用したことがない場合は、コード ブロックの横にある緑色の [試してみる] ボタンをクリックして、資格情報を使用して実際のリクエストをプレビューできます。これは API を探索するのに最適な方法です。この例の場合、"Get - Alert Rules" リクエストは次のようになります。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}?api-version=2022-11-01
この API 呼び出しは、ロジック アプリの "HTTP" アクションを使用して行うことができます。幸いなことに、「For each」ロジック ブロックに追加したばかりのイベント関連の分析ルール ID 項目には、ほぼすべてのパラメーターが事前設定されています。 API ドメインの先頭にバージョン指定を最後に追加するだけです。subscriptionID、resourceGroupName、workspaceName、ruleId のすべてのパラメーターは動的コンテンツ オブジェクトから取得されます。 URI ブロックの実際のテキストは次のとおりです。
https://management.azure.com@{items('For_each_related_Analytics_Rule_ID')}?api-version=2022-11-01
HTTP 操作の認証オプションを構成する必要もあります。ロジック アプリにはマネージド ID を使用しています。完成したアクション ブロックは次のようになります。
これでアラート ルールが完成しました。あとはルール テキストを解析して GPT3 に渡すだけです。 JSON の解析アクションを使用して、HTTP ステップからの本文コンテンツをそれに提供し、この API 呼び出しの予期される出力と一致するスキーマを定義してみましょう。スキーマを生成する最も簡単な方法は、サンプル ペイロードをアップロードすることですが、関心のないプロパティをすべて含める必要はありません。アーキテクチャを次のように短縮しました:
{"type": "object","properties": {"id": {"type": "string"},"type": {"type": "string"},"kind": {"type": "string"},"properties": {"type": "object","properties": {"severity": {"type": "string"},"query": {"type": "string"},"tactics": {},"techniques": {},"displayName": {"type": "string"},"description": {"type": "string"},"lastModifiedUtc": {"type": "string"}}}}}
これまでのところ、ロジック ブロックは次のようになります:
次に、AI を取得します。参加してください! OpenAI コネクタから [GPT3 Completes your Prompt] を選択し、前の JSON 解析ステップの「クエリ」動的コンテンツ オブジェクトを使用してプロンプトを作成します。最新の解決エンジンを使用し、デフォルトのパラメータのほとんどをそのまま使用します。私たちのクエリでは、高温値と低温値の間に有意な差は示されませんでしたが、ダ ヴィンチ モデルに長い回答のための余地を与えるために、「最大トークン」パラメーターを増やしたいと考えました。完了したアクションは次のようになります:
プレイブックの最後のステップは、GPT3 から得られたテキストを使用してイベントにコメントを追加することです。代わりにイベント タスクを追加する場合は、Sentinel アクションを選択するだけです。 「イベント ARM ID」動的コンテンツ オブジェクトを追加し、GPT3 アクションによって出力される「テキスト (完了テキスト)」を使用してコメント メッセージを作成します。ロジック アプリ デザイナーは、コメント アクションを "For each" ロジック ブロックに自動的にラップします。完成したコメント アクションは次のようになります。
ロジック アプリを保存して、イベントで試してみましょう。すべてがうまくいけば、ロジック アプリの実行履歴に正常に完了したことが表示されます。問題が発生した場合は、各ステップの正確な入力と出力の詳細を確認できます。これは非常に貴重なトラブルシューティング ツールです。私たちの場合、常に緑色のチェック マークが表示されていました:
成功!プレイブックはイベントに解説を追加し、多忙を極めるセキュリティ アナリストを数分節約します。
以上がOpenAI と Microsoft Sentinel パート 2: 分析ルールの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。