writer/cerebro

GitHub: writer/cerebro

面向多云和 SaaS 环境的安全数据平台,整合资产发现、策略评估、AI 调查与合规审计能力。

Stars: 0 | Forks: 0

# Cerebro **面向云和 SaaS 态势管理的安全数据平台** Cerebro 是一个综合性的安全平台,融合了云资产发现、策略评估、合规报告、AI 驱动的调查以及自动化修复工作流。 [![Go Version](https://img.shields.io/badge/Go-1.23+-00ADD8?style=flat&logo=go)](https://go.dev/) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](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, 云资产发现, 代码到云, 分布式任务队列, 合规性报告, 大模型安全, 安全合规, 安全数据平台, 攻击路径分析, 日志审计, 模型鲁棒性, 漏洞管理, 策略引擎, 网络代理, 网络安全挑战, 自动修复, 自定义请求头, 足迹分析, 身份治理, 风险评分