vidit135g/AI-Security-Copilot

GitHub: vidit135g/AI-Security-Copilot

基于 LangGraph 多代理架构和 Claude Sonnet 的生产级 AI 安全平台,通过九个专业代理实现漏洞分诊、代码审查、云安全检测、威胁建模和事件响应等安全运营能力的自动化与智能化。

Stars: 0 | Forks: 0

# AI 安全 Copilot 平台 ## 目录 - [概述](#overview) - [架构](#architecture) - [代理](#agents) - [技术栈](#tech-stack) - [快速开始(本地开发)](#quick-start-local-dev) - [生产部署](#production-deployment) - [Docker Compose(单服务器)](#docker-compose-single-server) - [AWS EKS (Kubernetes)](#aws-eks-kubernetes) - [GCP / Azure](#gcp--azure) - [环境变量](#environment-variables) - [连接集成](#connecting-integrations) - [API 参考](#api-reference) - [开发指南](#development-guide) - [安全](#security) - [路线图](#roadmap) ## 概述 Security Copilot 是一个生产级、多代理的 AI 安全平台,可作为您团队中嵌入的安全工程师。 | 功能 | 描述 | |---------|-------------| | **Security Copilot** | 流式 AI 聊天助手 (Claude claude-sonnet-4-6),解答任何安全问题 | | **漏洞分诊** | 解析 Semgrep/Trivy/Grype 的发现 → 去重 → CVE 丰富化 → OWASP/ATT&CK 映射 → 优先级排序 | | **PR 安全审查** | 自动审查每个 PR 是否包含 SQLi、SSRF、RCE、机密信息和身份验证绕过 — 发布内联 GitHub 评论 | | **云安全** | AWS IAM、S3、SG、EKS、Lambda 错误配置检测(已为 GCP/Azure 做好准备) | | **自动修复** | AI 生成的变更计划,附带人工审批门和回滚机制 | | **威胁建模** | 基于 Terraform/K8s/代码的 STRIDE 分析、DFD 和威胁登记册 | | **事件调查** | CloudTrail + GuardDuty 摄取 → 时间线 → IOC 提取 → 遏制计划 | | **AI 安全** | 提示词注入检测、RAG 投毒、工具滥用防护 | | **知识图谱** | Neo4j 攻击路径分析 — 资产、身份、漏洞、通往核心资产 (Crown Jewels) 的路径 | ## 架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ Security Copilot Platform │ │ │ │ ┌──────────────┐ ┌────────────────────────────────────────┐ │ │ │ Next.js 14 │◄───│ FastAPI (port 8000) │ │ │ │ Frontend │ │ Auth · RBAC · Rate limiting · CORS │ │ │ └──────────────┘ └──────────────┬─────────────────────────┘ │ │ │ │ │ ┌──────────────────────────────────▼────────────────────────┐ │ │ │ Agent Orchestrator (LangGraph) │ │ │ │ Registry · Memory · Policy Engine · Audit Log │ │ │ └─────────────────────┬─────────────────────────────────────┘ │ │ │ │ │ ┌──────────────────────▼────────────────────────────────────┐ │ │ │ 9 AI Agents │ │ │ │ VulnTriage │ PRReview │ CloudSec │ AutoRemediate │ │ │ │ ThreatModel │ IncidentInv │ DevSec │ AISec │ KnowGraph │ │ │ └──────────────────────┬────────────────────────────────────┘ │ │ │ │ │ ┌──────────────────────▼────────────────────────────────────┐ │ │ │ Data: PostgreSQL+pgvector · Redis · Qdrant · Neo4j │ │ │ │ Queue: Kafka/Celery · Scanners: Trivy · Grype · Semgrep│ │ │ └────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` **信任区域:** Internet → WAF → 负载均衡器 → API (DMZ) → 代理 (App) → 数据层 生产环境中所有内部服务之间使用 **mTLS**。 ## 代理 每个代理都是一个 LangGraph `StateGraph`,具有类型化的状态、提示词缓存和工具调用功能。 | 代理 | 节点 | 核心能力 | |-------|-------|---------------| | `VulnerabilityTriage` | 6 | NVD/EPSS 丰富化、OWASP/ATT&CK 映射、优先级评分公式 | | `PRReview` | 6 | Semgrep + 机密信息正则表达式 + Claude AI 审查 → GitHub check run | | `CloudSecurity` | 6 | boto3 IAM/SG/S3/EKS/Lambda 检查,安全态势评分 0–100 | | `AutoRemediation` | 7 + 中断 | 人工审批门、5 种修复器类型、完整回滚 | | `ThreatModeling` | 6 | STRIDE、Mermaid DFD、威胁登记册 (可能性 × 影响程度) | | `IncidentInvestigation` | 7 | CloudTrail + GuardDuty 摄取、IOC 提取、爆炸半径 | | `DeveloperSecurity` | 5 | CI 门禁、安全编码指导、自动补丁生成 | | `AISecurity` | 6 | 提示词注入正则表达式 + AI 验证、数据泄露检测 | | `KnowledgeGraph` | 6 | Neo4j Cypher 生成、攻击路径分析 | ## 技术栈 | 层级 | 技术 | |-------|-----------| | **Frontend** | Next.js 14 (App Router), TypeScript, CSS 变量 | | **Backend** | FastAPI, Python 3.11, SQLAlchemy 异步 | | **AI** | Anthropic Claude claude-sonnet-4-6, 提示词缓存, 工具调用, 流式传输 | | **代理框架** | LangGraph (有状态图, human-in-the-loop) | | **主数据库** | PostgreSQL 16 + pgvector (1536 维嵌入) | | **向量存储** | Qdrant (语义搜索, 去重) | | **图数据库** | Neo4j (攻击路径分析) | | **缓存 / 队列** | Redis, Celery, Kafka | | **扫描器** | Trivy, Grype, Semgrep (全部基于 CLI,无供应商锁定) | | **云** | AWS (主要) — boto3 用于 IAM/EC2/S3/EKS/Lambda 检查 | | **IaC** | Terraform (AWS EKS + RDS + ElastiCache + MSK + Secrets Manager) | | **容器** | Docker, Kubernetes (基础清单 + Helm) | | **CI/CD** | GitHub Actions (SAST + SCA + IaC 扫描 + 镜像扫描 + OIDC 部署) | ## 快速开始(本地开发) ### 前置条件 - Python 3.11+, Node 20+, Docker Desktop ### 1. 克隆并配置 ``` git clone cd AI-Security-Copilot cp .env.example .env # 编辑 .env — 至少设置 ANTHROPIC_API_KEY ``` ### 2. 启动基础设施 ``` docker-compose -f docker-compose.dev.yml up -d # 启动:PostgreSQL, Redis, Qdrant, Neo4j ``` ### 3. 启动 API ``` python3.11 -m venv .venv source .venv/bin/activate pip install -r app/api/requirements.txt export $(cat .env | grep -v ^# | xargs) export DATABASE_URL="postgresql+asyncpg://postgres:postgres@localhost/security_copilot" export REDIS_URL="redis://localhost:6379" PYTHONPATH=. uvicorn app.api.main:app --host 0.0.0.0 --port 8000 --reload ``` API 现已运行在 **http://localhost:8000** · 文档地址为 **http://localhost:8000/api/docs** ### 4. 启动前端 ``` cd app/frontend npm install npm run dev ``` 前端现已运行在 **http://localhost:3000** ## 生产部署 ### Docker Compose(单服务器) 适用于小型团队、预发布环境或本地私有部署。 ``` # 构建镜像 docker-compose build # 启动所有服务(包括 Kafka, Celery workers, Grafana) docker-compose up -d # 查看日志 docker-compose logs -f api worker ``` 服务: - Frontend: `http://your-server:3000` - API: `http://your-server:8000` - Grafana: `http://your-server:3001` ### AWS EKS (Kubernetes) 具备高可用性、自动扩缩容和托管服务的完整生产部署。 #### 步骤 1 — 配置基础设施 ``` cd infra/terraform/aws terraform init \ -backend-config="bucket=YOUR-TF-STATE-BUCKET" \ -backend-config="region=us-east-1" terraform plan \ -var="anthropic_api_key=$ANTHROPIC_API_KEY" \ -var="environment=prod" \ -out=tfplan terraform apply tfplan # 约 15 分钟 — 创建 EKS, RDS, ElastiCache, MSK, Secrets Manager, IAM ``` #### 步骤 2 — 配置 kubectl ``` aws eks update-kubeconfig \ --name security-copilot-prod \ --region us-east-1 ``` #### 步骤 3 — 创建 Secrets ``` kubectl create namespace security-copilot # 从 AWS Secrets Manager 拉取密钥到 K8s kubectl create secret generic security-copilot-secrets \ --from-literal=database-url="$(aws secretsmanager get-secret-value --secret-id security-copilot/prod/db-credentials --query SecretString --output text | jq -r '.url')" \ --from-literal=anthropic-api-key="$ANTHROPIC_API_KEY" \ --from-literal=jwt-secret="$(openssl rand -hex 32)" \ --from-literal=redis-url="rediss://:$(aws secretsmanager get-secret-value --secret-id security-copilot/prod/redis-auth --query SecretString --output text)@YOUR-REDIS-ENDPOINT:6379" \ -n security-copilot ``` #### 步骤 4 — 部署 ``` # 构建并推送镜像 docker build -t $ECR_REPO/security-copilot-api:$VERSION -f infra/docker/Dockerfile.api . docker build -t $ECR_REPO/security-copilot-frontend:$VERSION -f infra/docker/Dockerfile.frontend . docker push $ECR_REPO/security-copilot-api:$VERSION docker push $ECR_REPO/security-copilot-frontend:$VERSION # 通过 kubectl 部署 kubectl apply -f infra/kubernetes/base/core/namespace.yaml kubectl apply -f infra/kubernetes/base/core/network-policy.yaml kubectl apply -f infra/kubernetes/base/core/api-deployment.yaml kubectl apply -f infra/kubernetes/base/core/worker-deployment.yaml ``` #### 步骤 5 — 验证 ``` kubectl get pods -n security-copilot kubectl logs -l app=security-copilot-api -n security-copilot --tail=30 curl https://your-domain.com/health ``` ### GCP / Azure 该平台是云无关的。对于 GCP/Azure: 1. 将 `infra/terraform/aws/` 替换为等效的 GKE/AKS Terraform 2. 使用 GCP Secret Manager / Azure Key Vault 代替 AWS Secrets Manager 3. 将 MSK 替换为 Cloud Pub/Sub (GCP) 或 Event Hubs (Azure) 4. 使用 Cloud SQL / Azure DB for PostgreSQL 代替 RDS 5. 将代理的 IRSA 替换为 GCP Workload Identity / Azure Managed Identity 核心应用程序代码保持不变。 ## 环境变量 ### API (`/.env`) | 变量 | 必需 | 描述 | |----------|----------|-------------| | `ANTHROPIC_API_KEY` | ✅ | 来自 console.anthropic.com 的 Claude API 密钥 | | `DATABASE_URL` | ✅ | PostgreSQL 异步 URL (`postgresql+asyncpg://...`) | | `REDIS_URL` | ✅ | Redis URL (`redis://...` 或 `rediss://...`) | | `JWT_SECRET` | ✅ | 用于 JWT 签名的 32 位以上随机字符串 | | `GITHUB_TOKEN` | ⬜ | 用于 PR 审查和 Webhook 发布的 GitHub PAT | | `GITHUB_WEBHOOK_SECRET` | ⬜ | 用于 GitHub Webhook 验证的 HMAC 密钥 | | `NVD_API_KEY` | ⬜ | 用于提高速率限制的 NVD API 密钥 | | `NEO4J_URI` | ⬜ | 用于知识图谱的 Neo4j Bolt URI | | `QDRANT_URL` | ⬜ | 用于向量搜索的 Qdrant URL | | `KAFKA_BOOTSTRAP_SERVERS` | ⬜ | 用于异步代理消息传递的 Kafka Brokers | | `SLACK_WEBHOOK_URL` | ⬜ | 用于事件通知的 Slack Webhook | ### Frontend (`/app/frontend/.env`) | 变量 | 描述 | |----------|-------------| | `API_URL` | 后端 URL (默认: `http://localhost:8000`) | ## 连接集成 ### GitHub(PR 审查 + Webhooks) 1. 创建一个具有 `pull_requests: write`、`checks: write`、`contents: read` 权限的 GitHub App 或 PAT 2. 在 `.env` 中设置 `GITHUB_TOKEN` 和 `GITHUB_WEBHOOK_SECRET` 3. 将 Webhook 添加到您的 GitHub 组织: `POST https://your-domain/api/v1/integrations/webhooks/github` - 事件: `pull_request`, `push`, `repository` ### AWS 云扫描 对于本地开发 — 在 `.env` 中设置 `AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY` 对于生产环境 — 使用 IRSA (Terraform 会自动创建该角色) 所需权限(只读): ``` iam:List*, iam:Get*, ec2:Describe*, s3:ListAllMyBuckets, s3:GetBucket*, eks:DescribeCluster, lambda:List*, guardduty:ListDetectors, cloudtrail:LookupEvents ``` ### NVD(CVE 丰富化) 1. 在 https://nvd.nist.gov/developers/request-an-api-key 注册 2. 设置 `NVD_API_KEY` — 将速率限制从 5 提升至 50 请求/30秒 ## API 参考 完整的 OpenAPI 规范可在 `http://localhost:8000/api/docs`(开发模式)获取。 ### 主要端点 | 方法 | 路径 | 描述 | |--------|------|-------------| | `GET` | `/health` | 健康检查 | | `GET` | `/api/v1/findings` | 列出漏洞发现 | | `GET` | `/api/v1/findings/stats/summary` | 安全态势摘要 | | `POST` | `/api/v1/scans` | 创建新的扫描 | | `GET` | `/api/v1/scans` | 列出扫描记录 | | `POST` | `/api/v1/incidents` | 创建并触发 AI 调查 | | `POST` | `/api/v1/copilot/stream` | SSE 流式 Copilot 聊天 | | `WS` | `/api/v1/copilot/ws/{session_id}` | WebSocket Copilot | | `POST` | `/api/v1/remediations` | 规划修复方案 | | `POST` | `/api/v1/remediations/{id}/approve` | 批准/拒绝修复方案 | | `POST` | `/api/v1/integrations/webhooks/github` | GitHub Webhook 接收器 | ## 开发指南 ### 仓库结构 ``` app/ api/ FastAPI backend routers/ REST endpoints (findings, scans, incidents, copilot…) db/ SQLAlchemy models + session management config.py Pydantic settings from env vars agents/ 9 LangGraph security agents core/ Gateway, Registry, Orchestrator, Memory, Policy, Audit frontend/ Next.js 14 app integrations/ Scanner + cloud + SCM connectors worker/ Celery tasks + Kafka consumers infra/ terraform/aws/ Full AWS stack (EKS, RDS, Redis, Kafka, IAM) kubernetes/ K8s manifests + network policies docker/ Dockerfiles (api, worker, frontend) docs/ adr/ Architecture Decision Records runbooks/ Deployment, incident response, security hardening threat-model/ STRIDE analysis tests/ unit/agents/ Agent logic unit tests security/ API auth, injection, CORS security tests ``` ### 运行测试 ``` # 单元测试 pytest tests/unit/ -v --cov=app # 安全测试(需要运行 API) pytest tests/security/ -v ``` ### 添加新代理 1. 创建 `app/agents/your_agent/agent.py` — 继承 `BaseSecurityAgent` 2. 实现 `build_graph()` → 返回一个 `StateGraph` 3. 实现 `get_tools()` → 返回工具定义 4. 在 `app/core/orchestrator/orchestrator.py` 中注册 5. 在 `app/core/registry/registry.py` 中添加功能 6. 在 `app/api/routers/` 中添加路由 ## 安全 本平台本身基于安全设计原则构建: - **零信任**:默认拒绝的 NetworkPolicy,服务间采用 mTLS - **最小权限**:具有最小权限的 IRSA 角色,无通配符 IAM - **机密信息管理**:AWS Secrets Manager / HashiCorp Vault,静态存储时绝不存放在环境变量中 - **审计日志**:SHA-256 链式审计日志(防篡改,Kafka + Postgres) - **输入验证**:对所有用户输入进行提示词注入检测 - **容器加固**:非 root 用户运行、只读文件系统、无附加 capabilities - **供应链**:镜像签名 (Cosign)、SBOM 生成、CI 中集成 Trivy 有关完整的生产环境检查清单,请参阅 `docs/runbooks/security-hardening.md`。 **报告漏洞**:请通过电子邮件负责任地披露安全问题,而不是发布公开的 Issue。 ## 路线图 - [ ] SAML/OIDC SSO 集成 - [ ] 多租户隔离(按组织的 Postgres schemas) - [ ] 用于 Copilot 的 Slack 机器人集成 - [ ] Jira 双向同步 - [ ] 运行时安全 (eBPF / Falco 集成) - [ ] SBOM 生成与追踪 - [ ] CycloneDX / SPDX 导出 - [ ] SOC 2 合规性仪表板 - [ ] 自定义检测规则引擎 - [ ] 响应式移动端前端 ## 许可证 MIT
标签:AI安全, AI安全防护, AI流式助手, AV绕过, AWS安全, Chat Copilot, Chrome Headless, CISA项目, Claude Sonnet, DevSecOps, DLL 劫持, FastAPI, Kubernetes安全, LangGraph, Neo4j, Next.js 14, PR安全审查, PyRIT, Python, RAG投毒防御, SOAR, STRIDE分析, TypeScript, Web截图, 上游代理, 云基础设施安全, 代码审查, 多智能体系统, 大语言模型, 威胁建模, 子域名变形, 子域名突变, 安全副驾驶, 安全插件, 容器安全, 开源安全项目, 搜索引擎查询, 攻击路径分析, 无后门, 模块化设计, 测试用例, 漏洞分类, 网络安全, 自动化修复, 请求拦截, 逆向工具, 隐私保护, 零日漏洞检测