歡迎來到我們關於 OpenAI 和 Microsoft Sentinel 的系列!大型語言模型或 LLM,例如 OpenAI 的 GPT3 系列,正在透過文字摘要、類人對話、程式碼解析和調試以及許多其他範例等創新用例接管公眾的想像。我們已經看到 ChatGPT 編寫劇本和詩歌、創作音樂、撰寫論文,甚至將電腦程式碼從一種語言翻譯成另一種語言。
如果我們可以利用這種不可思議的潛力來幫助安全營運中心的事件回應人員,會怎麼樣?好吧,我們當然可以——而且很簡單! Microsoft Sentinel 已經包含一個用於 OpenAI GPT3 模型的內建連接器,我們可以在由 Azure Logic Apps 提供支援的自動化劇本中實作。這些強大的工作流程易於編寫並整合到 SOC 操作中。今天,我們將了解 OpenAI 連接器,並使用簡單的用例來探索其一些可設定參數:描述與 Sentinel 事件相關的 MITRE ATT&CK 策略。
在我們開始之前,讓我們先了解一些先決條件:
我們將從一個基本的事件觸發劇本開始(Sentinel > Automation > Create > Playbook with incident trigger)。
選擇訂閱和資源群組,新增劇本名稱,然後移至「連線」標籤。您應該會看到帶有一個或兩個身份驗證選項的Microsoft Sentinel - 我在此範例中使用的是託管身份- 但如果您還沒有任何連接,您也可以在邏輯應用程式設計器中添加Sentinel 連接.
查看並建立劇本,幾秒鐘後,資源將成功部署並將我們帶到邏輯應用程式設計器畫布:
#讓我們加入我們的OpenAI 連接器。按一下「新步驟」並在搜尋方塊中鍵入「OpenAI」。您會在頂部窗格中看到連接器,並在其下方看到兩個操作:「建立映像」和「GPT3 完成您的提示」:
選擇“GPT3 完成您的提示”。然後,系統會要求您在下列對話方塊中建立與 OpenAI API 的連線。如果您還沒有,請在https://platform.openai.com/account/api-keys上建立一個金鑰,並確保將其保存在安全位置!
確保在新增OpenAI API 金鑰時完全按照說明進行操作- 它需要單字“Bearer”,後面跟著一個空格,然後是金鑰本身:
成功!我們現在已經為我們的提示準備好 GPT3 文字完成操作。我們想要讓 AI 模型解釋與 Sentinel 事件相關的 MITRE ATT&CK 策略和技術,所以讓我們使用動態內容編寫一個簡單的提示來插入來自 Sentinel 的事件策略。
我們快完成了!儲存邏輯應用程式並前往 Microsoft Sentinel 事件以對其進行測試運行。我的實例中有來自 Microsoft Sentinel Training Lab 的測試數據,因此我將針對惡意收件匣規則警報觸發的事件執行此劇本。
您可能想知道為什麼我們沒有在我們的劇本中配置第二個動作來新增帶有結果的註解或任務。我們會到達那裡 - 但首先我們要確保我們的提示從 AI 模型返回好的內容。返回 Playbook 並在新分頁中開啟 Overview。您應該在運行歷史記錄中看到一個項目,希望帶有綠色複選標記:
#按一下該項目以查看有關邏輯應用程式運作的詳細資訊。我們可以展開任何操作區塊以查看詳細的輸入和輸出參數:
我們的 GPT3 操作只花了兩秒鐘就成功完成了。讓我們單擊操作塊將其展開並查看其輸入和輸出的完整詳細信息:
#讓我們仔細看看“輸出”部分中的“選擇”字段。這是 GPT3 傳回其完成的文字以及完成狀態和任何錯誤代碼的地方。我已將 Choices 輸出的全文複製到 Visual Studio Code 中:
目前看起來還不錯! GPT3 正確擴展了「防禦規避」的 MITRE 定義。在我們為劇本添加邏輯操作以使用此答案文字建立事件評論之前,讓我們再看看 GPT3 操作本身的參數。 OpenAI文字補全動作中一共有九個參數,不算引擎選擇和提示:
這些是什麼意思,我們如何調整它們以獲得最佳結果?為了幫助我們了解每個參數對結果的影響,讓我們轉到OpenAI API Playground。我們可以在邏輯應用程式運行的輸入欄位中貼上準確的提示,但在單擊「提交」之前,我們要確保參數匹配。下面是一個快速表格,用於比較Azure Logic App OpenAI 連接器和OpenAI Playground 之間的參數名稱:
Azure 邏輯應用程式連接器 | 開放人工智慧遊樂場 | 解釋 |
引擎 | 模型 | 將產生完成的模型。我們可以在OpenAI connector中選擇達文西(新)、達文西(舊)、居里、巴貝奇或阿達,分別對應'text-davinci-003'、'text-davinci-002'、'text -curie-001' 、'text-babbage-001' 和'text-ada-001' 在Playground 中。 |
n | 不適用 | 為每個提示產生多少完成。相當於在Playground中多次重新進入提示。 |
最好的 | (相同的) | 產生多個完成並傳回最好的一個。謹慎使用-這會消耗大量代幣! |
溫度 | (相同的) | 定義回應的隨機性(或創造性)。設定為 0 以獲得高度確定性、重複的提示完成,其中模型將始終返回其最有信心的選擇。設定為 1 以獲得具有更多隨機性的最大創意回复,或根據需要介於兩者之間。 |
最大代幣 | 最大長度 | ChatGPT 回應的最大長度,以令牌形式給出。一個令牌大約等於四個字元。 ChatGPT 使用以代幣計價;在撰寫本文時,1000 個代幣的價格為 0.002 美元。 API 呼叫的成本將包括提示的令牌長度和回復一起,因此如果您想保持每次回應的最低成本,請從 1000 中減去提示的令牌長度來設定回應的上限。 |
頻率懲罰 | (相同的) | 從 0 到 2 的範圍。數值越高,模型逐字重複行的可能性就越小(它將嘗試尋找同義詞或重述行)。 |
存在懲罰 | (相同的) | 一個介於 0 到 2 之間的數字。數值越高,模型重複反應中已經提到的主題的可能性就越小。 |
頂部 | (相同的) | 如果您不使用溫度,另一種設定回應「創造力」的方法。此參數根據機率限制可能的答案標記;設定為 1 時,將考慮所有標記,但較小的值會減少前 X% 的可能答案集。 |
使用者 | 不適用 | 唯一識別碼。我們不需要設定此參數,因為我們的 API 金鑰已經用作我們的識別符字串。 |
停止 | 停止序列 | 最多四個序列將結束模型的回應。 |
讓我們使用以下OpenAI API Playground 設定來搭配我們的邏輯應用程式操作:
最大長度:100
這是我們從GPT3 引擎得到的結果。 看起來反應在句子中間被截斷了,所以我們應該增加最大長度參數。否則,此響應看起來還不錯。我們正在使用最高可能的溫度值——如果我們降低溫度以獲得更確定的響應,會發生什麼?以溫度為零為例:###############在 temperature=0 時,無論我們重新產生此提示多少次,我們都會得到幾乎完全相同的結果。當我們要求 GPT3 定義技術術語時,這很有效;作為 MITRE ATT&CK 戰術的「防禦規避」的含義應該沒有太大差異。我們可以透過加入頻率懲罰來提高反應的可讀性,以降低模型重複使用相同字詞的傾向(「技術如」)。讓我們將頻率懲罰增加到最大值 2:###############到目前為止,我們只使用了最新的達文西模型來快速完成任務。如果我們下降到 OpenAI 更快、更便宜的型號之一,例如 Curie、Babbage 或 Ada,會發生什麼?讓我們將模型更改為“text-ada-001”並比較結果:###############嗯…不完全是。讓我們試試巴貝奇:###############Babbage 似乎也沒有回傳我們正在尋找的結果。也許居禮會過得更好? ###############可悲的是,居禮也不符合達文西設定的標準。它們當然很快,但我們為安全事件添加上下文的用例並不依賴亞秒級回應時間 - 摘要的準確性更為重要。我們將繼續使用達文西模型、低溫和高頻懲罰的成功組合。 ######回到我們的邏輯應用程序,讓我們將我們從Playground 發現的設定傳輸到OpenAI 操作塊:###############我們的邏輯應用程式還需要能夠為我們的事件寫評論。點擊“新步驟”並從Microsoft Sentinel 連接器中選擇“向事件添加註釋”:###############我們只需要指定事件ARM 標識符並撰寫我們的評論訊息。首先,在動態內容彈出式選單中搜尋「事件 ARM ID」:###############接下來,找到我們上一個步驟輸出的「文字」。您可能需要點擊“查看更多”才能查看輸出。邏輯應用程式設計器會自動將我們的評論操作包裝在「For each」邏輯區塊中,以處理為相同提示產生多個完成的情況。 ###############我們完成的邏輯應用程式應類似於以下內容:###############讓我們再測試一下!回到那個 Microsoft Sentinel 事件並執行劇本。我們應該在我們的邏輯應用程式運行歷史記錄中獲得另一個成功完成,並在我們的事件活動日誌中獲得一個新評論。 ###############如果到目前為止,您一直與我們保持聯繫,那麼您現在可以將OpenAI GPT3 與Microsoft Sentinel 整合在一起,這可以為您的安全調查增加價值。請繼續關注我們的下一部分,我們將討論更多將 OpenAI 模型與 Sentinel 整合的方法,解鎖可以幫助您充分利用安全平台的工作流程! ###以上是OpenAI 與 Microsoft Sentinel 簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!