OpenAI 和 Microsoft Sentinel 第 2 部分:解释分析规则

欢迎回到我们关于 OpenAI 和 Microsoft Sentinel 的系列!今天我们将探讨 OpenAI 广受欢迎的语言模型的另一个用例,并了解一下 Sentinel REST API。如果您还没有 Microsoft Sentinel 实例,您可以使用免费的 Azure 帐户创建一个实例并按照Sentinel 入门快速入门进行操作。您还需要一个带有 API 密钥的个人 OpenAI 帐户。准备好?让我们开始吧!

 

安全从业者面临的任务之一是如何快速使用分析规则、查询和定义来理解触发警报的原因。例如,下面是一个用 Kusto 查询语言 (KQL) 编写的相对较短的 Microsoft Sentinel 分析规则示例:

 

large.pngcharsetUTF-8-15

 

经验丰富的 KQL 操作员不会有任何困难将其解析出来,但仍然需要一些时间来在脑海中映射出关键字、日志源、操作和事件逻辑。从未使用过 KQL 的人可能需要更多时间来了解此规则旨在检测的内容。幸运的是,我们有一个非常擅长阅读代码并用自然语言解释的朋友——OpenAI 的 GPT3!
large.pngcharsetUTF-8-16

 

DaVinci 等 GPT3 引擎非常擅长用自然语言解释代码,并且在 Microsoft Sentinel KQL 语法和用法方面接受过广泛培训。更好的是,Sentinel 有一个内置的 OpenAI 连接器,使我们能够将 GPT3 模型集成到自动化的 Sentinel 剧本中!我们可以使用此连接器向描述分析规则的 Sentinel 事件添加评论。这将是一个具有线性操作流程的简单逻辑应用程序:

 

large.pngcharsetUTF-8-13

 

让我们从触发器开始逐步了解逻辑应用。我们为此剧本使用 Microsoft Sentinel 事件触发器,以便我们可以使用 Sentinel 连接器从事件中提取所有相关的分析规则 ID。我们将使用规则 ID 使用 Sentinel REST API 查找规则查询文本,我们可以在文本完成提示中将其传递给 AI 模型。最后,我们会将 AI 模型的输出作为评论添加到事件中。

 

我们的第一个动作是作用于 Sentinel 的“事件相关分析规则 ID 项”的“For each”逻辑块:

 

medium.pngcharsetUTF-8

 

接下来,我们需要使用 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

 

我们可以在我们的逻辑应用程序中使用“HTTP”操作进行此 API 调用。幸运的是,我们刚刚添加到“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 操作配置身份验证选项 – 我正在为我的逻辑应用程序使用托管标识。完成的操作块如下所示:

 

large.pngcharsetUTF-8-14

 

现在我们有了警报规则,我们只需要解析规则文本,以便我们可以将其传递给 GPT3。让我们使用 Parse 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"
                }
            }
        }
    }
}

 

到目前为止,我们的逻辑块如下所示:

 

large.pngcharsetUTF-8-17

 

现在是时候让 AI 参与进来了!从 OpenAI 连接器中选择“GPT3 Completes your prompt”并使用上一个 Parse JSON 步骤中的“query”动态内容对象编写您的提示。我们将使用最新的达芬奇引擎并保留大部分默认参数。我们的查询没有显示高温值和低温值之间的显着差异,但我们确实希望增加“max tokens”参数,为达芬奇模型提供更多的长答案空间。完成的动作应该是这样的:

 

large.pngcharsetUTF-8-20

 

我们剧本的最后一步是使用 GPT3 的结果文本为事件添加评论。如果您想改为添加事件任务,只需选择该 Sentinel 操作即可。添加“事件 ARM ID”动态内容对象,并使用 GPT3 操作输出的“文本(完成文本)”撰写评论消息。逻辑应用程序设计器会自动将您的评论操作包装在“For each”逻辑块中。完成的评论操作应与此类似:

 

large.pngcharsetUTF-8-21

 

保存逻辑应用,让我们在事件中试用它!如果一切顺利,我们的逻辑应用程序运行历史将显示成功完成。如果出现任何问题,您可以检查每个步骤的确切输入和输出详细信息 – 一个非常宝贵的故障排除工具!在我们的例子中,它一直是绿色的复选标记:

 

large.pngcharsetUTF-8-18

 

成功!该剧本为事件添加了评论,为我们过度劳累的安全分析师节省了几分钟时间。

 

large.pngcharsetUTF-8-19

原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun219051.html

(0)
打赏 微信扫一扫不于多少! 微信扫一扫不于多少! 支付宝扫一扫礼轻情意重 支付宝扫一扫礼轻情意重
上一篇 2023年3月11日 上午11:24
下一篇 2023年3月12日

相关推荐