writer/cerebro
GitHub: writer/cerebro
面向多云和 SaaS 环境的安全数据平台,整合资产发现、策略评估、AI 调查与合规审计能力。
Stars: 0 | Forks: 0
# Cerebro
**面向云和 SaaS 态势管理的安全数据平台**
Cerebro 是一个综合性的安全平台,融合了云资产发现、策略评估、合规报告、AI 驱动的调查以及自动化修复工作流。
[](https://go.dev/)
[](LICENSE)
## 功能特性
- **云资产发现** - 通过原生扫描器摄取 AWS、GCP、Azure 和 Kubernetes 的配置
- **策略引擎** - Cedar 风格的策略,用于安全评估,支持自定义条件
- **并行扫描** - 具备可配置 Worker Pool 的高性能扫描
- **合规框架** - 针对 SOC 2、CIS、PCI DSS、HIPAA、NIST 800-53 的预构建映射
- **AI Agent** - 由 LLM 驱动的安全调查,支持 Anthropic Claude 和 OpenAI GPT
- **深度研究 Agent** - 代码到云的安全分析,连接源代码与实时云检测
- **分布式作业队列** - 基于 SQS + DynamoDB 的作业系统,用于可扩展的分布式处理
- **身份治理** - 访问审查、僵尸权限检测和风险评分
- **攻击路径分析** - 潜在攻击路径的基于图的可视化
- **集成** - Jira、Linear、Slack、PagerDuty 和自定义 Webhook
- **计划操作** - 具有可配置间隔的自动化扫描
## 架构
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ CEREBRO PLATFORM │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ CLI │ │ REST API │ │ Webhooks │ │Scheduler │ │ Agents │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ └──────────────┴──────────────┴──────────────┴──────────────┘ │
│ │ │
│ ┌─────────────▼─────────────┐ │
│ │ Application Container │ │
│ │ Policy│Scanner│Findings │ │
│ └─────────────┬─────────────┘ │
│ │ │
└─────────────────────────────────────┼───────────────────────────────────────┘
│
┌─────────────────────────────┼─────────────────────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────────┐ ┌───────────┐
│ Snowflake │◀─────────────│ Native Sync │ │ External │
│ (Storage) │ │ (Ingestion) │ │ APIs │
└───────────┘ └──────────────┘ └───────────┘
│ │ │
AWS/GCP/Azure Cloud Providers Jira/Slack/PD
Kubernetes SaaS Apps Anthropic/OpenAI
```
## 快速开始
### 前置条件
- Go 1.23+
- Snowflake 账户
### 安装
```
# 克隆仓库
git clone https://github.com/writer/cerebro.git
cd cerebro
# 安装依赖
make setup
# 构建
make build
```
### 配置
```
# 复制环境模板
cp .env.example .env
# 必需:Snowflake 连接
export SNOWFLAKE_CONNECTION_STRING="user:pass@account/CEREBRO/CEREBRO"
# 可选:AI agents
export ANTHROPIC_API_KEY="sk-ant-..."
# 可选:Notifications
export SLACK_WEBHOOK_URL="https://hooks.slack.com/..."
# 可选:Ticketing
export JIRA_BASE_URL="https://company.atlassian.net"
export JIRA_API_TOKEN="..."
```
### 本地模式 (无 Snowflake)
对于本地开发,您可以在没有 Snowflake 凭证的情况下运行 Cerebro:
```
unset SNOWFLAKE_PRIVATE_KEY SNOWFLAKE_ACCOUNT SNOWFLAKE_USER
export CEREBRO_DB_PATH=.cerebro/cerebro.db
make serve
```
在本地模式下,发现结果将持久化到 SQLite。基于 Snowflake 的能力(例如直接数据湖查询端点和安全图谱填充)将减少或不可用。
### 运行
```
# 启动 API server
./bin/cerebro serve
# 或使用 make
make serve
# 开发模式
make dev
```
## CLI 命令
```
# 启动 API server
cerebro serve
# 启动分布式 job worker
cerebro worker
# 运行 code-to-cloud 安全分析
cerebro agent run --repo-url https://github.com/org/repo
cerebro agent run --resource arn:aws:s3:::my-bucket --aws-region us-east-1
# 运行分布式分析(将 jobs 加入 SQS 队列)
cerebro agent run --repo-url https://github.com/org/repo --distributed --wait
# 通过原生 scanners 同步云数据
cerebro sync
cerebro sync --gcp --gcp-project my-project
cerebro sync --azure
# Policy 管理
cerebro policy list
cerebro policy validate
cerebro policy test
# 查询 Snowflake
cerebro query "SELECT * FROM aws_s3_buckets LIMIT 10"
cerebro query --format json "SELECT * FROM aws_iam_users"
# 初始化数据库
cerebro bootstrap
```
## API 概览
| 端点 | 描述 |
|----------|-------------|
| `GET /health` | 健康检查 |
| `GET /ready` | 就绪状态及依赖项状态 |
| `GET /metrics` | Prometheus 指标 |
| `GET /api/v1/tables` | 列出 Snowflake 表 |
| `POST /api/v1/query` | 执行 SQL 查询 |
| `GET /api/v1/policies` | 列出已加载的策略 |
| `POST /api/v1/policies/evaluate` | 评估策略 |
| `GET /api/v1/findings` | 列出发现结果 |
| `POST /api/v1/findings/scan` | 触发策略扫描 |
| `GET /api/v1/compliance/frameworks` | 列出合规框架 |
| `GET /api/v1/compliance/frameworks/{id}/pre-audit` | 预审计检查 |
| `POST /api/v1/agents/sessions` | 创建 Agent 会话 |
| `POST /api/v1/agents/sessions/{id}/messages` | 向 Agent 发送消息 |
| `GET /api/v1/identity/stale-access` | 检测僵尸权限 |
| `POST /api/v1/attack-paths/analyze` | 分析攻击路径 |
| `POST /api/v1/webhooks` | 注册 Webhook |
完整文档请参阅 [API 参考](docs/API_REFERENCE.md)。
## 策略
策略是定义安全检查的 JSON 文件:
```
{
"id": "aws-s3-bucket-no-public-access",
"name": "S3 Bucket Public Access",
"description": "S3 buckets should not allow public access",
"effect": "forbid",
"conditions": ["block_public_acls != true"],
"severity": "critical",
"tags": ["cis-aws-2.1.5", "security", "s3"]
}
```
### 策略目录
```
policies/
├── aws/ # AWS policies (S3, IAM, EC2, RDS)
├── gcp/ # GCP policies (Storage, Compute, IAM)
├── azure/ # Azure policies (Storage, VM)
└── kubernetes/ # Kubernetes policies (Pods, RBAC)
```
编写自定义策略请参阅 [策略文档](docs/POLICIES.md)。
## 合规
### 支持的框架
- **SOC 2 Type II** - 信任服务标准
- **CIS AWS Foundations** - v1.4.0 基准
- **CIS GCP Foundations** - v1.3.0 基准
- **PCI DSS** - v4.0
- **HIPAA** - 安全规则
- **NIST 800-53** - Rev 5
### 预审计检查
```
curl http://localhost:8080/api/v1/compliance/frameworks/soc2/pre-audit
```
返回预估的审计结果、未通过的控制项以及修复建议。
## AI Agent
Cerebro 包含 AI 驱动的安全调查 Agent:
### 可用 Agent
| Agent | 提供商 | 用途 |
|-------|----------|---------|
| `security-analyst` | Anthropic Claude | 安全发现调查 |
| `incident-responder` | OpenAI GPT | 事件分诊与响应 |
### 使用方法
```
# 创建 session
curl -X POST http://localhost:8080/api/v1/agents/sessions \
-H "Content-Type: application/json" \
-d '{"agent_id": "security-analyst", "user_id": "analyst@company.com"}'
# 发送消息
curl -X POST http://localhost:8080/api/v1/agents/sessions/{id}/messages \
-H "Content-Type: application/json" \
-d '{"content": "Investigate the public S3 bucket findings"}'
```
### Agent 工具
- `query_snowflake` - 执行 SQL 查询
- `list_findings` - 列出安全发现
- `get_asset` - 获取资产详情
- `evaluate_policy` - 针对资产测试策略
- `search_logs` - 搜索审计日志
## 身份与访问审查
### 僵尸权限检测
```
curl http://localhost:8080/api/v1/identity/stale-access
```
检测:
- 非活跃用户 (90 天以上)
- 未使用的访问密钥
- 过时的服务账户
### 访问审查
```
# 创建 review
curl -X POST http://localhost:8080/api/v1/identity/reviews \
-H "Content-Type: application/json" \
-d '{
"name": "Q1 2024 Access Review",
"type": "user_access",
"scope": {"providers": ["aws", "gcp"]}
}'
```
## Webhook
注册 Webhook 以获取实时事件通知:
```
curl -X POST http://localhost:8080/api/v1/webhooks \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhook",
"events": ["finding.created", "scan.completed"],
"secret": "webhook-secret"
}'
```
### 事件类型
- `finding.created` / `finding.resolved` / `finding.suppressed`
- `scan.completed`
- `review.started` / `review.completed`
- `attack_path.found`
- `ticket.created`
## 分布式作业系统
Cerebro 包含一个分布式作业队列,用于在大型代码库和云环境中进行可扩展的安全分析。
### 架构
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ DISTRIBUTED JOB SYSTEM │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ API/CLI │───────▶│ SQS │◀───────│ Workers │ │
│ │ (Orchestrator)│ │ Queue │ │ (N instances)│ │
│ └──────────────┘ └──────────────┘ └──────┬───────┘ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌──────────────┐ │ │
│ └──────────────▶│ DynamoDB │◀───────────────┘ │
│ │ Job Store │ │
│ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
```
### 组件
- **Job Manager (作业管理器)**: 将检查作业入队并跟踪批次完成情况
- **SQS Queue (队列)**: 利用可见性超时和死信队列分发工作
- **DynamoDB Store (存储)**: 持久化作业状态,使用基于租约的认领机制实现精确一次执行
- **Workers (工作节点)**: 轮询 SQS、认领作业、执行检查、更新结果
### 使用方法
```
# 设置基础设施(通过 Pulumi)
cd infra && pulumi up --stack prod
# 运行 orchestrator 将 jobs 加入队列
cerebro agent run --repo-url https://github.com/org/repo --distributed
# 运行 workers(水平扩展)
cerebro worker --concurrency 4
# 或等待完成
cerebro agent run --repo-url https://github.com/org/repo --distributed --wait
```
### 基础设施
分布式作业基础设施通过 `infra/` 中的 Pulumi 进行管理:
- 带有死信队列的 SQS 队列,用于处理失败的作业
- 带有 GSI 的 DynamoDB 表,用于分组/状态查询
- Worker ECS 服务,根据队列深度进行自动扩缩容
- 针对 DLQ 消息和队列积压的 CloudWatch 告警
## 开发
```
# 运行测试
make test
# 运行并生成覆盖率报告
go test -v -cover ./...
# Lint
make lint
# 构建 Docker image
make docker-build
```
详细说明请参阅 [开发指南](docs/DEVELOPMENT.md)。
## 文档
| 文档 | 描述 |
|----------|-------------|
| [架构](docs/ARCHITECTURE.md) | 系统架构与设计 |
| [API 参考](docs/API_REFERENCE.md) | 完整 API 文档 |
| [包](docs/PACKAGES.md) | 内部包文档 |
| [配置](docs/CONFIGURATION.md) | 环境变量与设置 |
| [策略](docs/POLICIES.md) | 策略编写指南 |
| [开发](docs/DEVELOPMENT.md) | 开发指南 |
## 环境变量
| 变量 | 描述 | 默认值 |
|----------|-------------|---------|
| `API_PORT` | 服务器端口 | `8080` |
| `LOG_LEVEL` | 日志详细程度 | `info` |
| `SNOWFLAKE_CONNECTION_STRING` | Snowflake DSN | - |
| `POLICIES_PATH` | 策略目录 | `policies` |
| `ANTHROPIC_API_KEY` | Claude API 密钥 | - |
| `OPENAI_API_KEY` | OpenAI API 密钥 | - |
| `JIRA_BASE_URL` | Jira 实例 | - |
| `SLACK_WEBHOOK_URL` | Slack Webhook | - |
| `SCAN_INTERVAL` | 扫描频率 | - |
| `JOB_QUEUE_URL` | 用于分布式作业的 SQS 队列 URL | - |
| `JOB_TABLE_NAME` | 用于作业状态的 DynamoDB 表 | - |
| `JOB_REGION` | 作业基础设施的 AWS 区域 | - |
| `JOB_WORKER_CONCURRENCY` | 每个 Worker 的并发作业数 | `4` |
所有选项请参阅 [配置](docs/CONFIGURATION.md)。
## 技术栈
| 组件 | 技术 |
|-----------|------------|
| 语言 | Go 1.23+ |
| API 框架 | Chi |
| 数据库 | Snowflake |
| 数据摄取 | 原生扫描器 |
| 策略引擎 | Cedar 风格 JSON |
| CLI | Cobra |
| 指标 | Prometheus |
| AI | Anthropic, OpenAI |
## 许可证
Apache 2.0
标签:AI 安全分析, AWS, Azure, Cedar, CIS, CSPM, DPI, EVTX分析, EVTX分析, GCP, Go, GPT, HIPAA, Kubernetes 安全, NIST, Ruby工具, SaaS 安全态势管理, SOC 2, SSPM, TinkerPop, 云资产发现, 代码到云, 分布式任务队列, 合规性报告, 大模型安全, 安全合规, 安全数据平台, 攻击路径分析, 日志审计, 模型鲁棒性, 漏洞管理, 策略引擎, 网络代理, 网络安全挑战, 自动修复, 自定义请求头, 足迹分析, 身份治理, 风险评分