anfisher1967/Sentinel-Rule-Relevance-Auditor
GitHub: anfisher1967/Sentinel-Rule-Relevance-Auditor
一个基于 MCP 协议的检测工程审计代理,让 GitHub Copilot 能够直接读取并评估 Microsoft Sentinel 分析规则的质量与时效性。
Stars: 0 | Forks: 0
# Sentinel Rules MCP Server
一个模型上下文协议(MCP)服务器,通过 Azure REST API 让 GitHub Copilot 直接访问您的 Microsoft Sentinel 分析规则定义。
## 功能介绍
- **列出所有分析规则**,包含元数据(严重程度、MITRE 映射、最后修改日期、启用状态)
- **筛选过期规则** — 查找 N 天内未更新的规则
- **检索完整的 KQL 查询** — 支持按名称(支持部分匹配)获取任何规则
- **生成审计报告** — 将需要审查的规则格式化为 Markdown 表格
## 前置条件
- **Python 3.10+**
- **Azure CLI** (`az`) 已安装并在 PATH 中可用
- **VS Code** 及 GitHub Copilot Chat 扩展
- **Azure RBAC**:您的身份至少需要具备 Sentinel 工作区的 **Reader** 权限
## 快速入门
### 1. 安装依赖
```
cd sentinel-rules-mcp
pip install -r requirements.txt
```
### 2. 向 Azure 进行身份验证
```
az login --tenant
az account set --subscription
```
### 3. 在 VS Code 中打开工作区
首次使用 MCP 服务器时,VS Code 会提示您输入:
- **Subscription ID** — 包含您的 Sentinel 工作区的 Azure 订阅
- **Resource Group** — 资源组名称
- **Workspace Name** — Log Analytics 工作区名称
这些信息将在会话期间被缓存。您也可以将它们设置为环境变量:
```
export SENTINEL_SUBSCRIPTION_ID="your-subscription-id"
export SENTINEL_RESOURCE_GROUP="your-resource-group"
export SENTINEL_WORKSPACE_NAME="your-workspace-name"
```
### 4. 启动 MCP 服务器
当 VS Code 检测到 `.vscode/mcp.json` 配置时,服务器会自动启动。
验证其是否正在运行:**Ctrl+Shift+P** → **"MCP: List Servers"** → 查找 `sentinelrules`。
### 5. 使用代理
在 Copilot Chat 中,输入:
```
@sentinel-rule-auditor list all stale rules
```
或者直接提问:
```
@sentinel-rule-auditor check the KQL for "Brute force attack against Azure Portal"
```
## 工具
| 工具 | 用途 |
|------|---------|
| `list_sentinel_rules` | 列出规则,支持可选的过期/严重程度筛选 |
| `get_sentinel_rule` | 按名称获取特定规则的完整 KQL 查询 |
| `list_stale_rules_summary` | 生成过期规则的 Markdown 审计表 |
| `ping` | 健康检查 |
## 查找您的 Sentinel 工作区详细信息
```
# 列出您有权限访问的所有 Sentinel workspaces:
az resource list --resource-type "Microsoft.OperationalInsights/workspaces" -o table
# 或者在 Azure Portal 中找到它:
# Sentinel → Settings → Workspace Settings → Properties
```
## 故障排除
| 问题 | 解决方法 |
|---------|-----|
| "Azure authentication failed" | 运行 `az login` 并确保您的账户有权访问该订阅 |
| "API call failed (403)" | 您的身份需要具备 Sentinel 工作区的 Reader 角色 |
| "API call failed (404)" | 检查 Subscription ID、Resource Group 和 Workspace Name |
| 服务器未在 VS Code 中显示 | Ctrl+Shift+P → "MCP: Restart Server" → 选择 `sentinelrules` |
| "model unexpectedly did not return a response" | MCP 服务器可能已崩溃 — 检查输出面板 → "MCP" |
## 架构
```
VS Code Copilot Chat
↓ (MCP stdio)
sentinel-rules-mcp/server.py
↓ (Azure REST API)
Microsoft Sentinel (alertRules endpoint)
↓ (AzureCliCredential)
az login session
```
## 许可证
MIT
标签:Azure CLI, Azure RBAC, Azure REST API, Force Graph, GitHub Copilot, KQL, KQL查询审计, MCP Server, Microsoft Sentinel, Model Context Protocol, Python, SOC自动化, Subfinder, 分析规则, 合规性审计, 安全检测工程, 无后门, 规则质量评估, 逆向工具