thtcsec/GCP-Serverless-SOAR
GitHub: thtcsec/GCP-Serverless-SOAR
基于 GCP 无服务器架构的安全编排与自动化响应平台,实现从威胁检测、自动隔离到取证保全的全流程闭环。
Stars: 3 | Forks: 2
# 🚀 GCP Serverless 安全编排、自动化与响应 (SOAR)





自动化安全事件响应平台,利用 Security Command Center 检测威胁,并在保留取证证据的同时自动隔离受损资源。
**[🇬🇧 英文架构指南](./ARCHITECTURE.md) | [🇻🇳 越南语说明](./ARCHITECTURE_vi.md)**
## 🏗️ 架构概览
### 系统架构
```
Threat Detection → Event Router → Message Queue → Workflow Engine → Workers
↓ ↓ ↓ ↓ ↓
GuardDuty/SCC → EventBridge/Eventarc → SQS/PubSub → Step Functions/Cloud Workflows → Container Workers
```
### GCP 架构流程
```
flowchart TD
subgraph "Detection Layer"
A[Security Command Center] --> D[Eventarc]
B[Cloud Audit Logs] --> D
C[Threat Detection] --> E[Pub/Sub]
end
subgraph "Processing Layer"
D --> F[Cloud Workflows]
E --> G[Cloud Run Workers]
end
subgraph "Response Layer"
F --> H[Isolation Workers]
F --> I[Forensics Workers]
G --> J[Isolation Workers]
G --> K[Forensics Workers]
end
subgraph "Notification Layer"
H --> L[Slack/Jira/SIEM]
I --> L
J --> L
K --> L
end
```
### 工作流过程
1. **检测:** SCC 检测威胁(严重程度 >= 7.0)
2. **事件路由:** Eventarc 路由到 Pub/Sub 队列
3. **工作流引擎:** Cloud Workflows 编排响应
4. **容器 Worker:** Cloud Run 执行长时间运行的操作
5. **人工审批:** 对关键操作进行人工审批
6. **集成:** Slack, Jira, SIEM 通知
### 🖼️ 高层架构

## 🕵️ 威胁场景
**场景:** 攻击者发现您面向公众的应用程序存在远程代码执行 (RCE) 漏洞,并安装了 Monero 加密货币矿工。
**检测:** 恶意软件开始向已知的矿池发出出站 DNS 请求。GCP Security Command Center 分析日志并将该实例标记为*高严重性*发现。
### ⚙️ 逻辑数据流
```
sequenceDiagram
participant Attacker
participant GCE as GCP Compute Engine
participant SCC as Security Command Center
participant PS as Pub/Sub Topic
participant CW as Cloud Workflows
participant CR as Cloud Run Workers
participant Sec as Security Admin
Attacker->>GCE: Exploits RCE vulnerability
Attacker->>GCE: Downloads Crypto Miner
GCE->>Internet: Makes unauthorized DNS queries (Mining Pool)
rect rgb(255, 200, 200)
Note over SCC,GCE: Detection Phase
SCC->>GCE: Analyzes Network & Compute Logs
SCC-->>PS: Generates High Severity Finding (Score: 8.5)
end
rect rgb(200, 220, 255)
Note over PS,CW: Orchestration Phase
PS-->>CW: Triggers Incident Response Workflow
CW->>CW: Validates Finding & Extracts VM/Project ID
end
rect rgb(255, 230, 200)
Note over CW,CR: Automated Response Phase
CW->>GCE: Updates Network Tags (isolates VM)
CW->>GCE: Blocks Project SSH Keys
CW->>IAM: Detaches Service Account from VM
CW->>GCE: Triggers Compute Disk Snapshot
CW->>GCE: Executes stop_instance()
end
rect rgb(200, 255, 200)
Note over CW,Sec: Forensic & Notification Phase
CW->>CR: Dispatches Forensics Worker Container
CR->>CR: Mounts Snapshot & Scans for Malware
CR-->>CW: Returns Forensic Report
CW->>Sec: Sends Slack/Jira Alert with Report
end
```
**响应流程:**
1. SOAR 工作流在数秒内执行。
2. 通过将网络标签替换为 `isolated-vm` 标签来隔离实例,阻止所有入口和出口流量。
3. IAM 服务账号从 VM 分离。
4. SSH 密钥在项目级别被阻止 (`block-project-ssh-keys=TRUE`)。
5. 对 VM 的主磁盘进行快照,以供蓝队(Blue Team)分析。
6. VM 被停止以暂停本地执行。
### 时间线/响应流程
```
gantt
title GCP SOAR Incident Response Timeline
dateFormat s
axisFormat %S
section Detection
SCC Analyzes Logs :a1, 0, 10s
Eventarc Routes Finding :a2, after a1, 2s
section Automated Response
Pub/Sub Buffers Message :a3, after a2, 1s
Workflow Validates Event :a4, after a3, 2s
GCE Network Isolation :crit, a5, after a4, 3s
SA Role Detachment :crit, a6, after a5, 2s
Block SSH Keys :a7, after a6, 2s
section Forensics
Compute Disk Snapshotting :a8, after a7, 15s
GCE Instance Shutdown :a9, after a8, 5s
Cloud Run Malware Scan :a10, after a9, 45s
section Notification
Compile Final Report :a11, after a10, 2s
Dispatch Slack/Jira Alert :a12, after a11, 1s
```
## 🛡️ 高级功能
### 🧠 AI/ML 威胁情报 (阶段 9)
- **威胁分类器:** 机器学习驱动引擎,根据历史攻击模式预测事件严重程度,映射到 MITRE ATT&CK TTP,并自动生成响应剧本。
- **行为分析:** 为 Service Account 建立行为基线,以检测 IP 位置、时间模式(非工作时间)和 API 操作频率方面的异常。
- **攻击预测器:** 预测性安全模块,分析历史事件以预测可能的未来攻击向量,并生成前瞻性的安全建议。
### 工作流引擎 (Cloud Workflows)
- 针对关键操作的**人工审批**工作流
- 带有重试逻辑的**多步骤事件响应**
- 用于隔离和取证的**并行执行**
- **错误处理**和死信队列处理
### 消息队列层 (Pub/Sub)
- **缓冲层**防止攻击期间系统过载
- **死信主题 (Dead Letter Topics)** 处理失败的流程
- **批处理**以提高性能
- **跨项目消息路由**
### 容器 Worker (Cloud Run)
- **长时间运行的操作**(15分钟以上的取证扫描)
- **全环境**访问权限,用于全面分析
- 具备自动扩缩容能力的**可扩展计算**
- **健康监控**和优雅降级
### 多项目安全
- 具有跨项目角色的**集中式安全项目**
- **SCC 组织**配置
- **跨项目事件响应**能力
- 带有外部 ID 的**安全身份联合**
### 集成
- **Slack/Teams** 用于实时通知
- **Jira/ServiceNow** 用于工单管理
- **SIEM 集成** (Chronicle, Splunk, Elastic)
- **威胁情报**源 (VirusTotal, AbuseIPDB)
- 用于基于决策编排的**自动评分引擎**
### 多云编排
- **统一事件规范化器**将 SCC/AuditLog 事件转换为标准的 `UnifiedIncident` schema
- **事件关联器**通过共享 IOC(IP、行为者、±5 分钟时间窗口)对相关警报进行分组
- 通过 BFS 聚类进行**战役检测 (Campaign Detection)**,用于识别多阶段攻击
### AI/ML 异常检测
- 用于行为异常检测的 **Isolation Forest** 模型
- 当 ML 模型尚未训练时的 **Z-Score 备选方案**
- **特征向量**:`hour_of_day`, `day_of_week`, `ip_reputation_score`, `action_risk_level`, `request_frequency`
- **增强评分**:异常提升 (+15) 自动提高风险等级
### 进程级隔离 (Compute Engine)
- 通过 metadata 脚本在 GCE 上直接**终止恶意进程**
- **隔离可疑文件**至 `/var/quarantine`
- **可疑进程检测**(xmrig, cryptominer, kinsing 等)
- **隔离层级**:Function > Process > Permissions > Network
### 审计追踪与合规
- 对所有 SOAR 操作(隔离、评分、审批)进行**不可变审计日志记录**
- **Cloud Logging** 集成,用于实时审计流传输
- **GCS 归档**,用于长期审计保留和合规
- 可按资源、操作类型或时间范围**过滤的审计查询**
### 监控与可观测性 (Terraform)
- **Cloud Monitoring Dashboard**,包含函数执行量、错误率、MTTR
- 针对 Cloud Function 错误和 Pub/Sub 积压的**告警策略 (Alerting Policies)**
- **Cloud Workflows 执行跟踪**(成功/失败)
- **Cloud Run** 取证 worker 指标
### 密钥轮换
- 对所有 SOAR API 密钥进行**自动化密钥时长检测**
- 带审计追踪的 **Secret Manager 版本轮换**
- 具有可配置阈值的 **90 天轮换策略**
- 用于合规仪表板的**轮换报告**
### GenAI 事件摘要 (Vertex AI)
- 通过 Gemini (gemini-3-flash-preview) 生成 **AI 驱动的警报摘要**并注入到 Slack 通知中
- 当 Vertex AI 不可用时**自动回退**到基于规则的模板
- **可操作的上下文**:发生了什么、受影响的资源、严重程度、建议的后续步骤
## 🗂️ 项目结构
- `src/`:Cloud Functions 和 Cloud Run 响应器的 Python 代码。
- `main.py`:主 GCE 事件响应剧本
- `storage_exfil_response.py`:存储数据泄露检测与响应
- `sa_compromise_response.py`:服务账号失陷检测与响应
- `core/event_normalizer.py`:统一事件规范化 (→ `UnifiedIncident`)
- `core/correlator.py`:跨云事件关联引擎
- `integrations/anomaly_detector.py`:ML 异常检测
- `integrations/scoring.py`:带有异常提升的风险评分引擎
- `integrations/intel.py`:多源威胁情报
- `core/process_containment.py`:通过 Compute Engine metadata 进行进程级隔离
- `core/audit_logger.py`:带有 Cloud Logging/GCS 归档的结构化审计追踪
- `core/secret_rotation.py`:API 密钥轮换管理器(90 天策略)
- `terraform/`:用于部署所有 GCP 资源的基础设施即代码 定义。
- `modules/monitoring/`:Cloud Monitoring Dashboard 和告警策略
- `attack_simulation/`:交互式攻击模拟器容器(针对 GCE、Storage 和 SA 的脚本的 Docker 封装)。
## 🥊 攻击模拟器
为了测试 SOAR 能力,提供了一个强大的内置红队 Docker 容器。
您不需要手动导出凭据;容器会自动映射您本地的 gcloud 凭据。
```
# 从项目根目录:
docker compose run --rm attacker
```
这将启动一个交互式菜单,允许您:
1. 触发 GCE 加密货币矿工
2. 触发 Cloud Storage 数据泄露
3. 触发服务账号失陷
- `containers/`:Cloud Run 取证 worker 配置。
## 🚀 部署
我们为整个平台提供了一个完全自动化的部署脚本。
**👉 请参阅详细的 [部署指南](./Deployment.md) 以了解完整的前置条件、分步说明和故障排除。**
### 环境结构
```
terraform/
├── modules/ # Reusable modules
│ ├── workflows/ # Cloud Workflows
│ ├── queues/ # Pub/Sub and Eventarc
│ ├── containers/ # Cloud Run workers
│ └── security/ # Multi-project security
├── environments/ # Environment-specific configs
│ ├── dev/ # Development environment
│ ├── staging/ # Staging environment
│ └── prod/ # Production environment
└── existing/ # Original basic setup
```
### TL;DR 快速部署
```
# 1. Clone repository
git clone https://github.com/thtcsec/GCP-Serverless-SOAR.git
cd GCP-Serverless-SOAR
# 2. 运行部署脚本(部署 Terraform,构建 Cloud Run 容器,设置 Secrets)
./scripts/deploy.sh prod deploy
# 3. 配置 Integrations (Slack/Jira)
gcloud secrets create slack-webhook-url --replication-policy automatic
echo "YOUR_WEBHOOK_URL" | gcloud secrets versions add slack-webhook-url --data-file=-
```
## 📊 安全覆盖范围
| 威胁类型 | 检测 | 响应时间 | 风险决策 | 高级功能 |
|-------------|-----------|---------------|---------------|-------------------|
| GCE 失陷 | SCC | < 30s | 评分引擎 | 工作流审批,容器取证 |
| 存储数据泄露 | Audit Logs | < 60s | 评分引擎 | 多情报充实,SIEM 集成 |
| SA 失陷 | Audit Logs | < 45s | 评分引擎 | 基于决策的编排,工单系统 |
| DDoS 攻击 | VPC Flow Logs | < 15s | 聚合 | 队列缓冲,自动扩缩容 |
## 🔧 配置
### 本地开发环境
仓库根目录中提供了 `.env.example` 文件,记录了剧本使用的所有 OS 环境变量。
- 对于本地测试,将此文件复制到 `.env` 并调整值。
- 在生产环境中,这些参数由 Terraform 安全地注入到 Cloud Functions 运行时中。
### 变量
- `worker_desired_count`:容器 worker 实例(prod: 3, dev: 1)
- `approval_wait_time`:人工审批超时(prod: 3600s, dev: 300s)
- `enable_multi_project`:跨项目安全(默认:true)
- `enable_integrations`:Slack/Jira/SIEM(默认:true)
### 集成设置
```
# Slack integration
gcloud secrets create slack-webhook-url --replication-policy automatic
echo "WEBHOOK_URL" | gcloud secrets versions add slack-webhook-url --data-file=-
# Jira integration
gcloud secrets create jira-url --replication-policy automatic
echo "https://your-domain.atlassian.net" | gcloud secrets versions add jira-url --data-file=-
gcloud secrets create jira-username --replication-policy automatic
echo "email@example.com" | gcloud secrets versions add jira-username --data-file=-
gcloud secrets create jira-api-token --replication-policy automatic
echo "API_TOKEN" | gcloud secrets versions add jira-api-token --data-file=-
gcloud secrets create jira-project-key --replication-policy automatic
echo "SEC" | gcloud secrets versions add jira-project-key --data-file=-
# SIEM integration
gcloud secrets create siem-api-key --replication-policy automatic
echo "API_KEY" | gcloud secrets versions add siem-api-key --data-file=-
```
## 💰 成本估算
由于此平台完全构建在原生 Serverless 架构上,成本得到了高度优化,并且严格**按需付费**。几乎零闲置成本。
### 预计每月成本(低/中等流量):`~$5 - $15 / 月`
- **GCP Security Command Center:** Premium 层级通常按您 GCP 总消费的百分比计费。但是,Standard 层级是免费的,可检测基本的错误配置。威胁检测依赖于 SCC Premium 或 Audit Logs。
- **Cloud Workflows:** 每月 5,000 个免费内部步骤。由于 SOAR 工作流仅在发现关键问题时触发,您可能会保持在免费层级内(**$0**)。
- **Cloud Functions:** 每月 200 万次免费调用。用于事件路由的使用量可以忽略不计(**$0**)。
- **Pub/Sub / Eventarc:** 每月 10 GB 免费消息传递。事件量极小(**$0**)。
- **Cloud Run (Forensics Workers):** 按每 100 毫秒的计算时间计费。由于取证容器仅在事件发生期间启动并运行约 5-15 分钟,成本极低(**< $2/月**)。
- **威胁情报:** 免费的社区 API 密钥将查询限制为约 500-1000 次/天。对于 SOAR 警报来说绰绰有余(**$0**)。
*注意:启用组织级别的审计日志或在攻击量大的环境中运行,将按比例增加日志记录和存储成本。*
## 📄 许可证
本项目基于 **Apache License 2.0** 授权。有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:AMSI绕过, Cloud Run, Cloud Workflows, DevSecOps, ECS, Eventarc, GCP, Google Cloud Platform, IaC 安全, Incident Response, Infrastructure as Code, Pub/Sub, Python, Security Command Center, Serverless, SIEM 集成, SOAR, Terraform, 上游代理, 不可变基础设施, 域环境安全, 威胁检测, 安全告警, 数字取证, 无后门, 自动化脚本, 请求拦截, 资源隔离, 逆向工具, 速率限制