Ansley22/azure-sentinel-soar-playbooks
GitHub: Ansley22/azure-sentinel-soar-playbooks
基于 Microsoft Sentinel 和 Azure Logic Apps 的自动化云安全事件响应框架,实现可疑登录自动禁用用户和恶意 IP 自动封锁的安全编排工作流。
Stars: 0 | Forks: 0
# azure-sentinel-soar-playbooks
构建于 Microsoft Sentinel 和 Azure Logic Apps 之上的自动化云事件响应框架,包含用于可疑登录响应(自动禁用用户)和恶意 IP 响应(自动封锁 IP)的 SOAR playbook。
# 🛡️ Azure Sentinel 云原生 SOAR 事件响应框架
一个构建于 **Microsoft Sentinel** 和 **Azure Logic Apps** 之上的自动化云事件响应与遏制框架,能够在 60 秒内自动分诊、记录、警报并中和活跃的安全威胁,无需人工干预。
## 🎯 项目概述
本项目展示了在多租户混合云基础设施内部署的生产级 **SOAR**(安全编排、自动化与响应)实现。这些 playbook 无需人工分析师手动调查日常警报,而是在检测到威胁的瞬间立即编排遏制工作流——将平均修复时间 (MTTR) 从数小时缩短至数秒。
## 🏗️ 架构与核心组件
| 组件 | 用途 |
| :--- | :--- |
| **Microsoft Sentinel** | 提供威胁检测和 playbook 触发的云原生 SIEM/SOAR 平台。 |
| **Azure Logic Apps** | 运行自动化工作流设计的无服务器编排引擎。 |
| **Microsoft Graph API** | 以编程方式在 Microsoft Entra ID 中禁用受损用户访问权限的身份层。 |
| **Azure Network API** | 用于将实时拦截规则注入网络安全组 (NSG) 的可编程基础设施层。 |
| **Gmail Connector** | 为 SOC 团队提供格式化紧急通信的出站通知流水线。 |
| **Microsoft Teams** | 将高严重级别的卡片路由到专用分诊渠道的协作式 ChatOps 框架。 |
| **Managed Identities** | 强制执行严格最小权限访问的系统分配无密码身份验证。 |
## 🔒 权限与安全设计配置
为了消除凭据泄露风险,所有工作流均拒绝静态 API 密钥或连接字符串,转而采用配置了以下 Azure 基于角色的访问控制 (RBAC) 结构的 **System-Assigned Managed Identities**:
| 身份作用域 | 所需角色 | 执行功能 |
| :--- | :--- | :--- |
| **Log Analytics Workspace / Sentinel** | Microsoft Sentinel Responder | 事件元数据分诊、状态更新、时间线审计记录 |
| **Microsoft Entra ID (Azure AD)** | User Administrator | 目标账户状态操作(禁用账户) |
| **Virtual Network Resource Group** | Network Contributor | 以编程方式将入站拒绝 (Inbound Deny) 防火墙规则注入 NSG |
## 🛠️ 逐步 Playbook 工作流文档
### 👤 Playbook 1:可疑登录自动响应
**目标检测:** Password Spray 攻击、不可能旅行异常。
#### 1. 配置与分诊基础
* **触发器:** Microsoft Sentinel 事件触发器。
* **操作 1(获取事件详情):**
* *参数:* 链接至 `soc-lab-rg` 和 `soc-lab-workspace`。
* *动态令牌:* 通过设计器参数面板的闪电符号 ($⚡$) 选择 `Incident ARM id`。
* **操作 2(添加审计评论):** 将初始执行日志直接附加到 Sentinel 事件时间线,以通知人工分析师自动化已接管该工单。
#### 2. 通信与 ChatOps 层
* **操作 3(通过 Gmail 发送电子邮件):** 使用 `Send email (V2)` 连接器以编程方式连接到 SOC 收件箱。动态映射以下正文:
SECURITY ALERT - SUSPICIOUS LOGIN DETECTED
Incident Title: [Incident title]
Severity: [Severity]
Status: [Status]
Time Created: [Created time]
Action Required:
1. Review the incident in Microsoft Sentinel.
2. Verify if the login is legitimate.
* **操作 4(Teams 通知):** 使用 `Post message in a chat or channel` 操作。将警报卡片作为 `Flow bot` 直接推送到 `SOC Lab` 团队下的 `#security-alerts` 频道。
#### 3. 身份遏制层
* **操作 5(提取身份数据):** 调用 Sentinel 的 `Get accounts (Entities)` 操作,传递事件的 `Entities` 数组。
* **操作 6(账户锁定):** 调用 Microsoft Entra ID 的 `Update user` 操作。
* *循环结构:* 设计器会自动将此块包裹在 **For each** 循环中,以处理多个身份实体。
* *执行参数:* `User ID` 映射到 **Account User Principal Name**。显式传递并评估 `Account Enabled` 可选参数为 **No**。
### 🌐 Playbook 2:恶意 IP 自动遏制
**目标检测:** 敌对 C2 通信、恶意 IP 身份验证。
#### 1. 网络丰富基础
* **操作 1(获取事件详情):** 使用动态 `Incident ARM id` 令牌查询主事件元数据。
* **操作 2(提取网络实体):** 调用 Sentinel 的 `Get IPs (Entities)` 操作,以从遥测数据块中解析并隔离敌对源 IP 地址。
#### 2. 分诊升级与通知
* **操作 3(提升严重级别):** 以编程方式与 Sentinel 事件管理引擎交互,将事件严重级别提升为 **High**。
* **操作 4(Gmail 广播):** 将包含隔离出的攻击者 IP 的自动化事件报告表直接发送至工程警报收件箱。
#### 3. 边界防火墙遏制层
* **操作 5(动态 NSG 注入):** 使用 `Create or update a security rule` 操作调用 Azure Network Security Group 连接器。
* *循环结构:* 包裹在针对每个解析出的 IP 元素的 **For each** 控制循环中。
* *配置规则:*
* **Resource Group:** `soc-lab-rg`
* **Security Rule Name:** `Block-IP-[IP Address]`
* **Access:** Deny
* **Direction:** Inbound
* **Protocol:** * (Any)
* **Source IP Address:** 动态分配给提取的 **IP Address** 实体令牌。
## ⚙️ 自动化路由规则(守门员)
这些引擎规则实时评估传入的系统遥测数据,作为条件流量控制器,准确决定何时运行特定的遏制 playbook。
```
[Incoming Azure Security Signal]
│
▼
[Microsoft Sentinel Engine] ── Creates Incident ──► [Automation Rules Evaluation]
│
┌──────────────────────────────────────────┴──────────────────────────────────────────┐
▼ ▼
Matches: "Suspicious Login Response" Matches: "Malicious IP Connection"
│ │
▼ ▼
Execute Playbook-SuspiciousLogin-Response Execute Playbook-MaliciousIP-Response
│ │
▼ ▼
[Lock User + Email + Teams Alert] [Block IP + Escalate + Teams Alert]
```
标签:Azure, FTP漏洞扫描, PB级数据处理, SOAR, 安全编排, 安全运维, 自动化响应