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 拒绝请求,并在环境中填充可操作的威胁遥测数据。 ![攻击模拟](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c39e6ffc3e075731.png) ### 阶段 2 — 云基础设施与日志存储 在 Azure 中建立了一个安全、沙盒化的资源组。部署了 Log Analytics Workspace 来处理传入日志流的摄取、解析和存储。 ![资源组创建](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4ab6c61c5c075738.png) ![资源组已部署](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a78184db8a075745.png) ![Log Analytics Workspace](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/f180a312db075750.png) ### 阶段 3 — SIEM 部署与数据连接器 初始化了 Microsoft Sentinel,并将原生数据连接器映射到 Entra ID 租户 —— 将关键的身份验证日志直接路由到安全矩阵中。 ![Sentinel 已启用](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/50cc8a5832075755.png) ![Defender 已连接](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/5cedf314f5075759.png) ![Entra ID 连接器](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/785bff1fd0075805.png) ![连接器配置](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/7dc25159b8075809.png) ![数据摄取已确认](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d63f7374a1075815.png) ![审计日志查询](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/e7abb9b10a075820.png) ### 阶段 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 ``` ![实时 KQL 结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/bf071156f7075825.png) ![已创建分析规则](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c1f73e4d1a075831.png) ![规则模拟](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/51f0055977075838.png) ### 阶段 5 — ITSM 目标设置 (Jira) 在编排自动化响应之前,目标 ITSM 平台需要进行结构性准备,以安全地接受可编程的外部 API 连接。 ![Jira 项目已创建](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/8df3673d08075843.png) ![Jira API Token](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/52f194b48b075848.png) ### 阶段 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" } } } ``` ![Logic App 已创建](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/75cc898f6e075853.png) ![事件触发器](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/00dff5f3cc075858.png) ![API 已授权](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/117cfce682075903.png) ![HTTP Action 配置](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/21985d72a9075908.png) ### 阶段 7 — IAM 控制与自动化路由 为自主执行分配了 RBAC 权限。配置了编排路由规则,以便在 KQL 分析规则触发的那一刻立即运行 playbook。 ![自动化规则](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4538a69136075913.png) ![RBAC 权限](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/e9f377dc7e075918.png) ![Pipeline 处于活跃状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c3b2c8fdbe075923.png) ### 阶段 8 — 执行验证(验证结果) 通过重新运行暴力破解攻击脚本验证了 pipeline。系统在无需干预的情况下完成了端到端的执行。 ![Sentinel 事件](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/27f39e4040075928.png) ![Playbook 已触发](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/31ad06c4cc075933.png) ![API 201 Created](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/adff631b0d075938.png) ![Jira 工单已创建](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4f2e07be74075943.png) ![工单详情已映射](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/28c3a0ffa9075948.png) ## 🧠 关键工程决策与经验教训 ### 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 · 澳大利亚永久居民 · 堪培拉,首都领地 [![LinkedIn](https://img.shields.io/badge/LinkedIn-shankarbaral1-0A66C2?style=for-the-badge&logo=linkedin&logoColor=white)](https://linkedin.com/in/shankarbaral1) [![GitHub](https://img.shields.io/badge/GitHub-shank078-181717?style=for-the-badge&logo=github&logoColor=white)](https://github.com/shank078) [![Email](https://img.shields.io/badge/Email-shankarbaral1@gmail.com-EA4335?style=for-the-badge&logo=gmail&logoColor=white)](mailto:shankarbaral1@gmail.com) *正在寻找澳大利亚的初级 SOC 分析师和安全工程师机会。*
标签:AI合规, Azure Logic Apps, Jira, Microsoft Sentinel, PB级数据处理, SOAR, 安全运维, 红队行动, 自动化响应