Acontoso/secops-api
GitHub: Acontoso/secops-api
一个部署在 AWS 上的 Serverless SOAR API 平台,用于集成威胁情报源并自动化编排事件响应工作流。
Stars: 0 | Forks: 0
# SOAR API
一个构建在 AWS 上的综合安全编排、自动化与响应 (SOAR) 平台,可自动化并编排安全运营工作流。此 API 与领先的安全工具集成,能够实现快速威胁情报富化、自动化事件响应以及跨安全基础设施的协同补救。
## 概述
SOAR API 提供了一个集中式的安全自动化中心,允许您的团队:
- 利用来自多个来源的威胁情报**富化**安全告警
- 通过跨安全工具的协同操作**自动化**事件响应
- 利用集成的阻断和隔离功能**原生**响应威胁
- 跨基础设施**编排**复杂的安全工作流
## 架构
### 高层架构
```
┌─────────────┐
│ Clients │
└──────┬──────┘
│
▼
┌─────────────────────────────────────────────┐
│ AWS API Gateway │
│ (HTTPS, Cognito Authorizer) │
└──────────────────┬──────────────────────────┘
│
▼
┌──────────────────────┐
│ AWS Lambda │
│ (SOAR API - Go) │
└──────────┬───────────┘
│
┌───────────┼───────────┐
│ │ │
▼ ▼ ▼
┌──────┐ ┌────────┐ ┌──────┐
│DDB │ │KMS/SSM │ │Cognito│
│Cache │ │Secrets │ │Auth │
└──────┘ └────────┘ └──────┘
│
┌───┴────────────────────────────────────┐
│ │
▼ Enrichment Services ▼ Response/Action Services
• AbuseIPDB • Zscaler (SSE Block)
• Anomali • Azure AD (Conditional Access)
• RecordedFuture • Defender (Block Indicators)
• Cloudflare (WAF Block)
```
### 核心组件
#### 前端与认证
- **API Gateway**:带有基于 Cognito 授权的 HTTPS endpoint
- **Cognito**:用于认证和范围授权的 OpenID Connect 集成
- **API Key 要求**:在所有 endpoint 上强制执行以提供额外的安全性
#### 计算与服务
- **AWS Lambda**:运行基于 Go 的 API 应用程序的 Serverless 计算层
- 通过 Gin-gonic web 框架处理请求
- 自动扩缩容与高可用性
- 基于 JSON 的结构化日志
#### 数据层
- **DynamoDB**:用于 IOC (Indicators of Compromise) 缓存的持久化存储
- 减少对外部威胁情报服务的 API 调用开销
- 基于 TTL 的过期机制用于数据新鲜度管理
- **KMS**:用于敏感 API 凭证的密钥管理
- **Systems Manager (SSM)**:安全的凭证存储与检索
## API 端点
所有 endpoint 均要求:
- 有效的 Cognito 认证 token
- 请求头中的 API key
- HTTPS 连接
### 情报富化路由 (`/api/enrich/*`)
提供用于调查和决策的威胁情报的数据富化 endpoint。
#### `POST /api/enrich/ipabusedb`
通过本地缓存查询 IP 在 AbuseIPDB 数据库中的信誉。
- **目的**:识别恶意、VPN 或代理 IP 地址
- **响应**:置信度、国家/地区、报告次数、TOR 状态
- **缓存**:在可用时返回缓存结果
#### `POST /api/enrich/anomali`
查询 Anomali 威胁情报平台获取 IOC 数据。
- **目的**:识别已知的恶意指标
- **响应**:威胁名称、威胁类型和置信度分数
#### `POST /api/enrich/recordedfuture`
通过 RecordedFuture 威胁情报源进行富化。
- **目的**:与广泛的威胁数据库进行交叉比对
- **响应**:威胁评估和情报元数据
### 响应路由 (`/api/soar/*`)
执行隔离和补救操作的自动化响应 endpoint。
#### `POST /api/soar/sse/zscaler`
通过 Zscaler Security Service Edge 阻断流量。
- **操作**:在 Zscaler 中创建 URL 阻断规则
- **用例**:防止用户访问已知的恶意域名
#### `POST /api/soar/azuread/ca`
触发 Azure AD Conditional Access 策略。
- **操作**:阻断高风险用户账户的认证
- **用例**:拒绝访问,或实施设备合规性检查
#### `POST /api/soar/datp/blockioc`
将 IOC 提交给 Microsoft Defender for Endpoint。
- **操作**:将威胁添加到 Defender 的检测规则中
- **用例**:在 endpoint 级别阻断检测并执行自动化响应
#### `POST /api/soar/waf/blockip`
在 Cloudflare WAF 中创建防火墙规则。
- **操作**:基于 IP 的速率限制和阻断
- **用例**:缓解 DDoS 和暴力破解攻击
## 项目结构
```
soar-api/
├── code/ # Go application source
│ ├── app/ # Application container & handlers
│ │ ├── app.go # Dependency injection container
│ │ ├── handlers.go # HTTP endpoint handlers
│ │ ├── cloudflarehandler.go
│ │ ├── zscalerhandler.go
│ │ └── recordedfuturehandler.go
│ ├── services/ # External service integrations
│ │ ├── abuseipdb.go
│ │ ├── anomali.go
│ │ ├── zscaler.go
│ │ ├── recordedFuture.go
│ │ ├── azuread.go
│ │ ├── datp.go
│ │ └── cloudflare.go
│ ├── database/ # Data persistence layer
│ │ └── dynamodb.go # DynamoDB client & operations
│ ├── middleware/ # HTTP middleware
│ │ ├── auth.go # Cognito authentication
│ │ └── logger.go # Structured logging
│ ├── models/ # Data structures & types
│ │ ├── ioc.go
│ │ ├── confidence.go
│ │ └── [service models]
│ ├── routes/ # Route definitions
│ │ └── routes.go
│ └── main.go # Application entrypoint
├── terraform/ # Infrastructure as Code
│ ├── lambda.tf # Lambda function configuration
│ ├── apigateway.tf # API Gateway setup
│ ├── dynamodb.tf # DynamoDB table definitions
│ ├── cognito-oidc.tf # Cognito authentication
│ ├── kms.tf # Key management
│ ├── ssm.tf # Parameter store configuration
│ └── variables.tf # Configuration variables
├── workflows/ # CI/CD pipelines
│ ├── azure-pipelines.yaml # Azure DevOps pipeline
│ └── ci.yaml # GitHub Actions
└── Dockerfile # Container image definition
```
## 数据流
### 富化请求流
```
1. Client sends IP/IOC to /api/enrich/ipabusedb
2. API validates request & checks DynamoDB cache
3. If found in cache → Return cached result
4. If not found → Query external service (AbuseIPDB)
5. Service returns threat intelligence
6. API stores result in DynamoDB with TTL
7. Response sent to client
```
### 响应/操作流
```
1. Client sends incident details to /api/soar/sse/zscaler
2. API validates request & extracts action parameters
3. API authenticates with target service (Zscaler)
4. API submits action request (block URL, IP, etc.)
5. Target service executes action
6. API logs action in DynamoDB audit trail
7. Response with action status sent to client
```
## 外部集成
| 服务 | 用途 | 类型 |
|---------|---------|------|
| **AbuseIPDB** | IP 信誉数据库 | 富化 |
| **Anomali** | 威胁情报平台 | 富化 |
| **RecordedFuture** | 商业威胁源 | 富化 |
| **Zscaler SSE** | 云安全服务 | 响应 |
| **Azure AD** | 身份与访问管理 | 响应 |
| **Defender for Endpoint** | Endpoint 检测与响应 | 响应 |
| **Cloudflare WAF** | Web 应用程序防火墙 | 响应 |
| **AWS Lambda** | Serverless 计算 | 基础设施 |
| **DynamoDB** | NoSQL 数据库 | 基础设施 |
| **KMS** | 密钥加密 | 基础设施 |
| **SSM** | 配置与密钥 | 基础设施 |
## 部署
该 API 使用 Terraform 作为 serverless 应用程序部署在 AWS 上:
- **计算**:带有 Go runtime 的 AWS Lambda
- **API Gateway**:HTTPS 区域 endpoint
- **认证**:带有 OIDC 的 AWS Cognito
- **存储**:用于缓存和审计日志的 DynamoDB
- **基础设施状态**:使用 Terraform 存储在 S3 中
有关基础设施配置的详细信息,请参阅 `terraform/` 目录。
## 开发
### 本地运行
```
cd code
go run main.go
```
运行于 `http://localhost:8080`
### 构建与部署
通过 `workflows/` 中的 CI/CD pipeline 自动化完成
- 测试、linting 和安全检查
- 构建 Docker 镜像和 Lambda 包
- 通过 Terraform 部署基础设施
标签:AWS, DPI, EVTX分析, FTP漏洞扫描, Go, Ruby工具, SOAR, 安全编排, 安全运营, 扫描框架, 日志审计, 自动化响应, 请求拦截