shank078/azure-sentinel-jira-soar-pipeline
GitHub: shank078/azure-sentinel-jira-soar-pipeline
该项目构建了一个基于 Azure Logic App 的零接触 SOAR 流水线,实现 Microsoft Sentinel 检测到安全事件后自动在 Jira 中创建包含完整上下文的工单。
Stars: 0 | Forks: 0
# ⚡ 云原生 SOAR Pipeline — Microsoft Sentinel 到 Jira
### *零接触事件响应。几秒内完成从检测到创建工单。无需分析师介入。*
## ⚡ TL;DR — 功能概述
| 步骤 | 发生了什么 | 执行者 |
|------|-------------|-------------|
| **1** | 攻击者脚本生成快速的 Entra ID 身份验证失败 | 攻击者 |
| **2** | KQL 分析规则检测到暴力破解模式(错误代码 `50126`) | Microsoft Sentinel |
| **3** | 高严重性事件触发 — 自动化规则启动 | Microsoft Sentinel |
| **4** | 无服务器 Logic App playbook 执行 | Azure |
| **5** | 包含完整事件上下文的 HTTP POST 请求发送至 Jira REST API | Logic App |
| **6** | 包含完整上下文的 Jira 工单出现在 SOC 队列中 | Jira — 零人工干预 |
## 📖 项目简介
在现代 SOC 环境中,最小化**平均响应时间 (MTTR)** 对于阻止威胁横向移动至关重要。手动将 SIEM 中的告警变量复制到 ITSM 队列中会造成操作滞后,引入人为错误,并耗费本应用于分诊的分析师时间,而不是进行数据录入。
本项目展示了端到端的**零接触安全编排、自动化与响应 (SOAR)** pipeline 的设计、工程化和部署。通过**自定义 REST API 集成**将 **Microsoft Sentinel** 与 **Atlassian Jira** 连接起来,该环境能够自主检测暴力破解攻击,并生成包含完整上下文的事件工单 —— 从检测到生成工单全程无需分析师介入。
## 🏗️ 架构
```
graph LR
A["🔴 Attacker Script\nBrute Force Auth Loop"] -->|Rapid auth failures| B["Microsoft Entra ID"]
B -->|Auth telemetry| C["Log Analytics Workspace"]
C -->|KQL Detection Rule\nError code 50126| D["Microsoft Sentinel\nHigh Severity Incident"]
D -->|Automation Rule triggers| E["Azure Logic App\nServerless Playbook"]
E -->|HTTP POST\nJSON payload| F["Atlassian Jira\nSOC Ticket Queue"]
```
**Pipeline 阶段:**
- **阶段 1:** 对抗性脚本生成快速的 Entra ID 身份验证失败
- **阶段 2:** Log Analytics 通过原生云连接器摄取原始遥测数据
- **阶段 3:** KQL 分析规则隔离错误代码 `50126` 并触发高严重性事件
- **阶段 4:** Sentinel 自动化规则拦截告警并实例化 Logic App
- **阶段 5:** Playbook 解析动态事件数据,并向 Jira REST API 发起 HTTP POST 请求
- **阶段 6:** 包含完整上下文的工单自动进入 SOC 队列
## 🛠️ 技术栈
| 组件 | 技术 | 用途 |
|-----------|-----------|---------|
| **SIEM** | Microsoft Sentinel | 威胁检测 + 事件管理 |
| **身份提供商** | Microsoft Entra ID | 认证遥测数据源 |
| **日志存储** | Log Analytics Workspace | 原始事件摄取 + KQL 查询 |
| **自动化** | Azure Logic Apps (无服务器) | SOAR playbook 执行 |
| **ITSM** | Atlassian Jira | SOC 工单队列目标 |
| **集成** | Jira REST API + HTTP POST | 跨平台工单创建 |
| **检测语言** | KQL (Kusto Query Language) | 暴力破解分析规则 |
| **MITRE ATT&CK** | T1110 — 暴力破解 | 检测框架映射 |
## 🚀 构建阶段
### 阶段 1 — 对抗性模拟(触发器)
为了根据真实世界的参数验证 pipeline,我们发起了一个攻击性的 PowerShell 身份验证循环 —— 模拟快速的密码喷洒攻击。这迫使 Entra ID 拒绝请求,并在环境中填充可操作的威胁遥测数据。

### 阶段 2 — 云基础设施与日志存储
在 Azure 中建立了一个安全、沙盒化的资源组。部署了 Log Analytics Workspace 来处理传入日志流的摄取、解析和存储。



### 阶段 3 — SIEM 部署与数据连接器
初始化了 Microsoft Sentinel,并将原生数据连接器映射到 Entra ID 租户 —— 将关键的身份验证日志直接路由到安全矩阵中。






### 阶段 4 — 检测工程 (KQL)
原始身份验证表被提升为可操作的情报。编写了 KQL 检测逻辑,利用 Entra ID 错误代码 `50126` 来隔离密码失败模式 —— 过滤掉标准的操作噪音。
```
SigninLogs
| where ResultType == "50126" // Invalid username or password — brute-force signal
| where TimeGenerated > ago(1h)
| summarize FailedAttempts = count() by UserPrincipalName, IPAddress, Location
| where FailedAttempts > 5 // >5 accounts for normal user typos; automated sprays exceed this immediately
| project UserPrincipalName, IPAddress, Location, FailedAttempts
| order by FailedAttempts desc
```



### 阶段 5 — ITSM 目标设置 (Jira)
在编排自动化响应之前,目标 ITSM 平台需要进行结构性准备,以安全地接受可编程的外部 API 连接。


### 阶段 6 — SOAR Playbook 工程 (Logic App)
使用无服务器的 Azure Logic App 构建了自动化响应。此 playbook 将传入的 Sentinel webhook 转换为动态的出站 REST API 请求 —— 将高度嵌套的 JSON payload 数组传递给 Jira API。
**关键工程决策:**
- 使用了 **Microsoft Sentinel 事件触发器**(而非告警触发器)来捕获包含所有告警实体的完整事件上下文
- 在 HTTP action header 中将 Jira API 凭据编码为 **Base64 Basic Auth**
- 使用 Atlassian Document Format (ADF) 将 Sentinel 的动态字段(`IncidentName`、`Severity`、`Description`、`Tactics`)直接映射到 Jira issue 正文中:
```
{
"fields": {
"project": { "key": "SOC" },
"summary": "High Severity Incident: @{triggerBody()?['IncidentName']}",
"description": {
"type": "doc",
"version": 1,
"content": [
{
"type": "paragraph",
"content": [
{ "type": "text", "text": "Severity: @{triggerBody()?['Severity']}" }
]
}
]
},
"issuetype": { "name": "Task" }
}
}
```




### 阶段 7 — IAM 控制与自动化路由
为自主执行分配了 RBAC 权限。配置了编排路由规则,以便在 KQL 分析规则触发的那一刻立即运行 playbook。



### 阶段 8 — 执行验证(验证结果)
通过重新运行暴力破解攻击脚本验证了 pipeline。系统在无需干预的情况下完成了端到端的执行。





## 🧠 关键工程决策与经验教训
### 1. 事件触发器 vs 告警触发器
Sentinel 提供两者作为 Logic App 触发器。选择**事件触发器**是因为它能捕获完整的聚合上下文 —— 所有实体、所有告警、所有映射的战术 —— 而告警触发器只能捕获单个告警的数据。要让 Jira 工单具备可操作性,它需要全局信息。
### 2. JSON Payload 深度
Jira REST API v3 使用 Atlassian Document Format (ADF) 来描述 issue —— 这是一种深度嵌套的 JSON 结构。将 Sentinel 的动态内容映射到 ADF 需要在 Logic App 中进行仔细的 `compose` 操作,以便在 HTTP POST 步骤之前正确构建 payload。
### 3. RBAC 不可或缺
Logic App 需要在工作区上拥有 **Microsoft Sentinel Responder** 角色才能读取事件数据。如果没有这个权限,playbook 虽然会触发,但在每次获取数据时都会返回 403 错误。最小权限分配已记录在案并被应用。
### 4. 真实 SOC 环境价值
此 pipeline 可直接降低**平均响应时间 (MTTR)**。在手动工作流中,分析师必须:注意到告警、打开 Sentinel、阅读事件、打开 Jira、创建工单、复制所有上下文。而使用此 pipeline:零步骤。在分析师打开笔记本电脑之前,工单就已经存在了。
## 🔮 后续计划
- **双向同步** — 在 Jira 工单解决后更新 Sentinel 事件状态
- **实体丰富** — 在创建工单前查询 AbuseIPDB 或 VirusTotal,并在 Jira 描述中包含威胁情报分数
- **🤖 AI 驱动的分诊** — 试点 **IBM watsonx Orchestrate** agent,以自主对事件严重性进行分类,利用威胁情报进行丰富,并根据攻击类型将其路由到正确的 Jira 队列 —— 所有这一切都在任何人工接触工单之前完成
## 📁 仓库结构
```
azure-sentinel-jira-soar-pipeline/
├── images/
│ ├── 00-attack-simulation-brute-force.png
│ ├── 01-resource-group-created.png
│ ├── 02-resource-group-creation-form.png
│ ├── 03-log-analytics-workspace-created.png
│ ├── 04-microsoft-sentinel-enabled.png
│ ├── 05-sentinel-workspace-connected-to-defender.png
│ ├── 06-defender-data-connectors-entra-visible.png
│ ├── 07-entra-id-connector-configuration.png
│ ├── 08-entra-data-ingestion-confirmed.png
│ ├── 09-auditlogs-query-results.png
│ ├── 10-failed-signin-kql-live-results.png
│ ├── 11-analytics-rule-created.png
│ ├── 12-analytics-rule-simulation-results.png
│ ├── 13-jira-project-created.png
│ ├── 14-jira-api-token-created.png
│ ├── 15-logic-app-playbook-created.png
│ ├── 16-sentinel-incident-trigger-configured.png
│ ├── 17-logic-app-http-action-jira-configured.png
│ ├── 18-azuresentinel-api-connection-authorized.png
│ ├── 19-sentinel-automation-rule-created.png
│ ├── 20-sentinel-logic-app-permission-granted.png
│ ├── 21-sentinel-incidents-created.png
│ ├── 22-playbook-triggered-successfully.png
│ ├── 22b-logic-app-run-history-success.png
│ ├── 23-jira-ticket-auto-created.png
│ ├── 23b-jira-ticket-details-mapped.png
│ └── 24-automation-rule-active-confirmed.png
└── README.md
```
## 🔗 相关项目
| 项目 | 描述 |
|---------|-------------|
| [双重 SIEM 检测实验室](https://github.com/shank078/Dual-SIEM-Detection-Lab) | 在 Sentinel + Splunk 上针对实时攻击流量进行 5 项 MITRE 映射检测 |
| [Azure Sentinel 蜜罐 SIEM](https://github.com/shank078/azure-sentinel-honeypot-siem) | 捕获并全球映射了 1,400 多次真实的暴力破解尝试 |
| [Azure 身份安全实验室](https://github.com/shank078/azure-identity-security-lab) | 完整的红蓝对抗 MFA 攻陷与事件响应 (IR) 周期 |
## 👤 关于作者
**Shankar Baral** — 初级网络安全分析师与 IT 支持专家
信息技术硕士(网络安全) · GPA 4.92 · 澳大利亚永久居民 · 堪培拉,首都领地
[](https://linkedin.com/in/shankarbaral1)
[](https://github.com/shank078)
[](mailto:shankarbaral1@gmail.com)
*正在寻找澳大利亚的初级 SOC 分析师和安全工程师机会。*
标签:AI合规, Azure Logic Apps, Jira, Microsoft Sentinel, PB级数据处理, SOAR, 安全运维, 红队行动, 自动化响应