Sentinel事件评论工具

该工具通过Azure Logic App和MCP Server实现向Microsoft Sentinel事件添加评论的功能,适用于需要安全认证和本地MCP服务器集成的环境。

  • by stefanpems
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 stefanpems/mcp-add-comment-to-sentinel-incident

使用说明

向Sentinel事件添加评论

此解决方案允许通过MCP工具向Microsoft Sentinel事件添加注释。它由两个部分组成:

  1. Azure逻辑应用程序 -通过安全身份验证处理Sentinel API交互
  2. MCP 服务器 -将该功能作为VS Code Copilot的MCP工具公开

何时使用此解决方案

该解决方案专为以下环境而设计:

  • Azure Logic应用程序必须使用 消费 托管模型
  • Azure API管理(APIM) 无法部署
  • 没有其他托管的MCP服务器网关可用

替代方法

如果这些约束不适用于您的环境,请考虑以下更简单的替代方案:

备选方案 描述
Azure逻辑应用程序(标准) 具有HTTP触发器的标准逻辑应用程序可以直接作为MCP服务器公开,而不需要单独的本地MCP服务器组件
Azure API管理 APIM可以将任何API(包括Logic App端点)公开为MCP服务器,提供集中管理和附加功能

如果您可以使用这些替代方案中的任何一个,则无需在此解决方案中使用本地Node.js MCP服务器组件。

建筑

┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   VS Code   │────▶│ MCP Server  │────▶│  Logic App  │────▶│  Sentinel   │
│   Copilot   │     │  (local)    │     │  (Azure)    │     │    API      │
└─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘
                          │
                    Uses webhook URL
                    from env variable

第1部分:逻辑应用程序

Logic应用程序 Sentinel-Incident-Add-Comment 提供了一个安全的HTTPS端点,该端点接收Defender事件ID和消息,通过日志分析查询查找相应的Sentinel事件,然后通过HTTP直接调用Sentinel REST API添加注释。

逻辑应用程序部署

步骤1:部署ARM模板

Azure命令行界面:

# Set variables
RESOURCE_GROUP="Sentinel-Incident-Add-Comment-rg"
SENTINEL_RG="your-sentinel-resource-group"
SENTINEL_WORKSPACE="your-sentinel-workspace"
LOCATION="eastus"

# Create resource group (if needed)
az group create --name $RESOURCE_GROUP --location $LOCATION

# Deploy the Logic App
az deployment group create \
  --resource-group $RESOURCE_GROUP \
  --template-file infra/Sentinel-Incident-Add-Comment.json \
  --parameters resourceGroupName=$SENTINEL_RG workspaceName=$SENTINEL_WORKSPACE

PowerShell:

$ResourceGroup = "Sentinel-Incident-Add-Comment-rg"
$SentinelRG = "your-sentinel-resource-group"
$SentinelWorkspace = "your-sentinel-workspace"
$Location = "eastus"

# Create resource group (if needed)
New-AzResourceGroup -Name $ResourceGroup -Location $Location

# Deploy the Logic App
New-AzResourceGroupDeployment `
  -ResourceGroupName $ResourceGroup `
  -TemplateFile "infra\Sentinel-Incident-Add-Comment.json" `
  -resourceGroupName $SentinelRG `
  -workspaceName $SentinelWorkspace

步骤2:分配权限

Logic应用程序的托管身份需求 Microsoft Sentinel响应程序 角色:

# Get the Logic App's Principal ID
PRINCIPAL_ID=$(az logic workflow show -g $RESOURCE_GROUP -n "Sentinel-Incident-Add-Comment" --query identity.principalId -o tsv)

# Assign Sentinel Responder role
az role assignment create \
  --assignee $PRINCIPAL_ID \
  --role "Microsoft Sentinel Responder" \
  --scope "/subscriptions/<subscription-id>/resourceGroups/$SENTINEL_RG/providers/Microsoft.OperationalInsights/workspaces/$SENTINEL_WORKSPACE"

步骤3:获取Webhook URL

部署和配置后,检索webhook URL:

Azure门户:

  1. 打开Logic应用程序
  2. 点击 “收到HTTP请求时” 触发
  3. 复制 HTTP帖子URL

Azure命令行界面:

az rest --method post \
  --uri "https://management.azure.com/subscriptions/<sub-id>/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Logic/workflows/Sentinel-Incident-Add-Comment/triggers/When_a_HTTP_request_is_received/listCallbackUrl?api-version=2016-06-01" \
  --query value -o tsv

第2部分:MCP服务器

MCP服务器公开 add_comment_to_sentinel_incident 安全调用Logic App webhook的工具。

MCP服务器部署

步骤1:安装依赖项

npm install

步骤2:构建服务器

npm run build

步骤3:配置VS代码

添加到您的VS代码 settings.json 或工作区设置:

{
  "mcp.servers": {
    "sentinel-incident-comment": {
      "command": "node",
      "args": ["c:/gh/mcp-add-comment-to-sentinel-incident/dist/index.js", "--stdio"],
      "env": {
        "SENTINEL_COMMENT_WEBHOOK_URL": "<YOUR_LOGIC_APP_WEBHOOK_URL>"
      }
    }
  }
}

替换 <YOUR_LOGIC_APP_WEBHOOK_URL> 使用第1部分步骤3中获得的webhook URL。

MCP工具使用

工具: add_comment_to_sentinel_incident

为Microsoft Sentinel事件添加评论。

参数:

参数 类型 必填 说明
incidentId string 是 Sentinel事件ID(例如“12345”)
message string 是 注释文本(纯文本或HTML)

从GitHub Copilot调用(自然语言)

配置完MCP服务器后,您可以使用自然语言从GitHub Copilot Chat调用它。以下是一些示例:

简单评论:

“在Sentinel事件12345中添加一条评论,称调查已完成,未发现任何恶意活动”

详细调查总结:

“在事件2847中添加以下发现:用户确认这是合法活动,源IP属于我们的企业VPN,没有检测到任何泄露迹象。建议关闭为假阳性。”

HTML格式的注释:

“为事件5123添加一条HTML格式的评论,标题为‘AI分析结果’、发现项目列表和粗体推荐部分”

GitHub Copilot将自动调用 add_comment_to_sentinel_incident 工具具有适当的参数。

程序化使用(无MCP服务器)

有关直接对Logic App的编程访问(例如,从脚本、自动化管道或其他应用程序),请参阅 逻辑应用程序自述 其中包括使用curl、PowerShell和Python的示例。

响应

成功:

{
  "status": "success",
  "message": "Comment added to incident 12345",
  "incidentId": "12345"
}

错误:

{
  "status": "error",
  "message": "Failed to add comment to incident",
  "incidentId": "12345",
  "error": { ... }
}

安全注意事项

  1. Webhook URL保护:逻辑应用程序webhook URL包含SAS签名。把它当作秘密。
  2. 环境变量:切勿将webhook URL提交到源代码管理。
  3. 访问控制:Logic应用程序的托管身份控制对Sentinel的访问。确保正确的RBAC。

故障排除

问题 解决方案
“SENTINEL_COMMENT_WEBHOOK_URL未设置” 在VS代码MCP设置中设置环境变量
401未经授权 验证逻辑应用程序的托管身份是否配置正确
403禁止 验证逻辑应用程序的托管身份是否具有“Microsoft Sentinel响应程序”角色
404 Not Found 检查事件ID是否存在于Sentinel工作区中
连接超时 验证与Azure Logic Apps的网络连接

相关资源