NimanthaSupun/WithOps

GitHub: NimanthaSupun/WithOps

一款企业级 AI 驱动的 DevSecOps 平台,整合威胁建模、CI/CD 治理审计和代码安全分析,帮助团队在 GitHub 组织中实现安全左移与持续合规。

Stars: 0 | Forks: 0

# WithOps DevSecOps 平台 **代码之后的一切** — 为现代开发团队提供的智能 AI 驱动的安全自动化。 WithOps 是一个企业级 DevSecOps 平台,可跨 GitHub 组织自动化安全分析、威胁建模、CI/CD 治理和工作区智能。基于生产就绪的架构、全面的监控和事件驱动的微服务构建。 ## 目录 - [概述](#overview) - [架构](#architecture) - [技术栈](#technology-stack) - [核心功能](#key-features) - [前置条件](#prerequisites) - [快速开始](#quick-start) - [部署](#deployment) - [本地开发](#local-development) - [Docker Compose (生产环境)](#docker-compose-production) - [Kubernetes](#kubernetes) - [配置](#configuration) - [微服务](#microservices) - [监控与可观测性](#monitoring--observability) - [开发](#development) - [贡献](#contributing) ## 概述 WithOps 为 DevOps 和安全团队提供跨其 GitHub 组织的可行情报。该平台将 AI 驱动的分析、自动化威胁建模、CI/CD 治理审计和实时协作功能集成到一个统一的仪表板中。 ### 目标用户 - **DevOps 工程师** — 自动化安全合规和 CI/CD 治理 - **架构工程师** — 评估 DevSecOps 成熟度并确定需要改进的领域 - **安全团队** — 检测威胁、漏洞和错误配置 - **开发负责人** — 确保代码质量和安全最佳实践 ### 核心能力 - **威胁建模画布** — AI 驱动的 DFD 分析,支持 STRIDE/LINDDUN/CIA 威胁检测 - **工作区智能** — OWASP DSOMM 成熟度框架评估 (L0-L4) - **Action 审计** — GitHub Actions 治理与自动升级 PR - **AI 驱动的代码分析** — 漏洞检测和安全建议 - **实时监控** — 基于 WebSocket 的事件源,带有即时通知 - **协作会话** — 基于 Liveblocks 的多用户威胁建模 ## 架构 WithOps 采用分布式微服务架构,具有事件驱动通信、集中式 API 网关路由和全面的可观测性。 ### 系统架构 ``` ┌────────────────────────────────────────────────────────────────┐ │ Clients (Frontend) │ │ SvelteKit + Auth0 (5173) │ └──────────────────────────────────────────────────────────────┬─┘ │ ┌─────────────────────────────┐ │ Kong API Gateway (9000) │ │ • Route requests │ │ • CORS handling │ │ • Rate limiting │ └──────────────┬──────────────┘ │ ┌──────────────────────────────┼──────────────────────────────┐ │ │ │ ┌────▼────────┐ ┌────────▼────────┐ ┌─────────▼────────┐ │ Microservices│ │ Events Hub │ │ External Services │ │ (8 total) │ │ (WebSocket) │ │ │ │ │◄───────────┤ • Event Bus │ │ • GitHub API │ │ • AI Service │ Events │ • Broadcasts │ │ • Auth0 JWT │ │ • GitHub Svc │ │ • Broadcasting │ │ • Claude/Ollama │ │ • Threat Mdl │ │ │ │ • Groq/GPT-4 │ │ • Workspace │ └─────────────────┘ └──────────────────┘ │ • Collab │ ▲ │ • Workflow │ │ │ • RAG │ ┌────────┴────────┐ │ • Pipeline │ │ Redis Pub/Sub │ └──────────────┘ │ (Event Channel) │ │ └──────────────────┘ │ ┌────┴────────────────────────────────────┐ │ │ ┌───▼──────┐ ┌────────────┐ ┌──▼─────────┐ │ PostgreSQL│ │ Redis Cache│ │ Qdrant VDB │ │(Supabase) │ │ (16379) │ │ (Embeddings) │ • Users │ │ │ │ │ │ • Orgs │ │ • Sessions │ │ • Knowledge│ │ • Models │ │ • Workflows│ │ • Vectors │ │ • Scans │ │ • Settings │ └────────────┘ └───────────┘ └────────────┘ ┌───────────────────────────────────────────────┐ │ Monitoring & Observability Stack │ │ • Prometheus (metrics) • Grafana (dashboards) │ │ • Jaeger (tracing) • OpenTelemetry │ └───────────────────────────────────────────────┘ ``` ### 通信流 1. **REST API 调用** — 前端 → Kong 网关 → 微服务 2. **异步事件** — 微服务 → Redis 发布/订阅 → 事件中心 → WebSocket → 前端 3. **数据库** — 所有服务使用共享的 PostgreSQL (Supabase) 进行持久化 4. **缓存** — Redis 层用于性能优化和速率限制 5. **监控** — OpenTelemetry/Prometheus 指标发送到 Grafana,链路追踪发送到 Jaeger ## 技术栈 ### 前端 | 组件 | 技术 | | ------------ | ------------------- | | 框架 | SvelteKit (Vite) | | 样式 | Tailwind CSS | | 可视化 | Three.js, D3.js | | 实时协作 | Liveblocks | | 认证 | Auth0 (JWT) | | 测试 | Vitest + Playwright | | Node 版本 | 20.x LTS | **Package.json 依赖:** - `@auth0/auth0-spa-js` — Auth0 集成 - `@liveblocks/react` — 协作功能 - `d3`, `three` — 数据可视化 - `svelte`, `vite` — 构建工具 ### 后端与微服务 | 组件 | 技术 | | -------- | ------------------------------------------ | | 框架 | FastAPI (Python 3.11+) | | Web 服务器 | Uvicorn (async ASGI) | | 异步 | asyncio, asyncpg, aiohttp | | 数据库 | PostgreSQL (via Supabase) | | ORM | SQLAlchemy 2.0 | | 缓存 | Redis (async) | | AI 模型 | Claude 3 Opus, GPT-4, Groq Llama 3, Ollama | | 向量数据库 | Qdrant (embeddings/RAG) | | 监控 | Prometheus, OpenTelemetry | | 任务队列 | 后台工作器 | **主要依赖:** - `fastapi==0.104.1`, `uvicorn[standard]` - `sqlalchemy==2.0.23`, `asyncpg==0.29.0` - `redis[asyncio]==5.0.1` - `httpx[http2]==0.25.0` — GitHub API 调用 - `python-jose[cryptography]` — JWT 验证 - `opentelemetry-*` — 分布式链路追踪 - `prometheus-client` — 指标导出 ### 基础设施 | 组件 | 角色 | | ---------- | ------------------------------------- | | Kong | API 网关,路由,CORS | | Redis | 缓存,发布/订阅事件总线 (端口 16379) | | PostgreSQL | 数据持久化 (Supabase 托管) | | Ollama | 本地 LLM 推理 (端口 11434) | | Qdrant | 向量数据库 (端口 6333-6334) | | Prometheus | 指标收集 (端口 9091) | | Grafana | 指标仪表板 (端口 3001) | | Jaeger | 分布式链路追踪 (端口 16686) | | Docker | 容器化 | | Kubernetes | 编排 (生产环境) | ### DevOps 与 CI/CD | 工具 | 用途 | | ------------------------- | ---------------------------------- | | Docker | 所有服务的容器镜像 | | Docker Compose | 本地开发编排 | | Kubernetes | 生产环境编排 (1.24+) | | GitHub Actions | CI/CD 流水线 (测试、构建、扫描) | | GitHub Container Registry | Docker 镜像仓库 | | Gitleaks | CI 中的密钥扫描 | | Ruff | Python 代码检查 (所有服务) | | Prometheus | 指标抓取 | | OpenTelemetry | 遥测标准 | | OTLP | 将链路追踪导出至 Jaeger | ## 核心功能 ### 1. 威胁建模画布 实时协作设计数据流图 (DFD) 并结合 AI 驱动的威胁分析。 - **可视化设计** — 绘制 DFD 组件(过程、数据存储、外部实体、信任边界) - **AI 分析** — 使用 STRIDE、LINDDUN 或 CIA 框架进行自动威胁检测 - **实时协作** — 多用户在同一模型上带光标跟踪进行协作 - **导出** — 将威胁模型保存为 JSON 或图表 - **审计追踪** — 用于合规性的会话记录 **端点:** `POST /api/threat-modeling/models` ### 2. 工作区智能仪表板 使用 OWASP DSOMM 框架评估整个组织的 DevSecOps 成熟度。 - **成熟度评分** — 5 个维度(构建、实现、测试、信息收集、文化)的 0-100 分制 - **工具检测** — 识别 CodeQL、SonarQube、Dependabot、Gitleaks、SAST/DAST 工具 - **实践评估** — 检测安全实践(密钥扫描、依赖检查、SAST) - **AI 聊天** — 询问分数为何偏低并获取改进建议 - **基准测试** — 与行业标准进行比较 **端点:** `POST /api/workspace-intelligence/analyze` ### 3. Action 审计 (GitHub Actions 治理) 审计跨仓库的所有 GitHub Actions 并自动升级过时的版本。 - **抓取工作流** — 扫描组织范围内的 `.github/workflows/*.yml` 文件 - **版本跟踪** — 列出所有带有版本的 actions(例如,`actions/checkout@v2.4.1`) - **状态分类** — 最新、过时、建议升级、需要重大升级 - **通过 PR 自动修复** — 生成 PR 以将 actions 升级到最新版本 - **审计报告** — 跟踪哪些 actions 需要关注 **端点:** `GET /api/workflows/analyze`, `POST /api/workflows/security/create-upgrade-prs` ### 4. AI 驱动的代码分析 分析仓库中的漏洞和安全配置错误。 - **漏洞检测** — 识别常见的 OWASP Top 10、密钥、不安全的依赖项 - **PR 描述生成** — 自动生成以安全为中心的 PR 描述 - **建议** — 基于代码模式的最佳实践 - **模型选择** — Claude 3 Opus、GPT-4、Groq Llama 3 或 Ollama - **缓存** — 通过 Redis 进行性能优化 **端点:** `POST /api/ai/analyze`, `POST /api/ai/chat` ### 5. 实时监控 带有即时威胁、扫描和活动通知的实时事件源。 - **WebSocket 事件** — 推送式更新(非轮询) - **事件类型** — `threat.analysis.completed`、`threat_detected`、`pr_created`、`scan_complete` - **多用户** — 所有连接的客户端即时接收更新 - **活动流** — 按组织的活动跟踪 **端点:** `WebSocket /ws/events/{user_id}` ### 6. 协作威胁会话 多名团队成员同时处理威胁模型。 - **光标跟踪** — 实时查看其他用户的光标位置 - **形状编辑** — 带冲突解决机制的协作式 DFD 创建 - **评论** — 针对特定威胁的嵌套讨论 - **缓解措施** — 分配和跟踪缓解任务 - **历史记录** — 维护用于审计合规性的会话记录 **技术:** Liveblocks 实时协作 ## 前置条件 ### 系统要求 - **操作系统** — Windows 10+、macOS 10.15+ 或 Linux (Ubuntu 18.04+) - **Docker** — 20.10+ (包含 Docker Compose 2.0+) - **Kubernetes** — 1.24+ (用于生产环境部署) - **内存** — 8GB 最小(推荐 16GB) - **磁盘** — 20GB 可用空间 ### 所需账户和凭证 1. **GitHub** - GitHub App (或 OAuth 应用程序) - 用于安装该应用的组织访问权限 - GitHub Container Registry (GHCR) 访问权限 2. **Auth0** - Auth0 账户 - 已配置的 API 和 SPA 应用程序 - 域名、Client ID、Client Secret 3. **LLM 服务** (至少一项) - **Anthropic** — Claude 3 API 密钥 (推荐) - **OpenAI** — GPT-4 API 密钥 (可选) - **Groq** — Groq API 密钥 (可选) - **Ollama** — 本地推理 (包含在 docker-compose 中) 4. **云数据库** (生产环境推荐) - **Supabase** — PostgreSQL + 认证服务 - 或者:自托管 PostgreSQL ### 环境配置 在部署之前创建 `.env` 文件: ``` # backend/.env (本地开发) GITHUB_APP_ID=YOUR_GITHUB_APP_ID GITHUB_APP_CLIENT_ID=YOUR_CLIENT_ID GITHUB_APP_CLIENT_SECRET=YOUR_CLIENT_SECRET GITHUB_PRIVATE_KEY_PATH=/app/config/keys/withops-devsecops-platform-local.2026-01-22.private-key.pem AUTH0_DOMAIN=your-tenant.us.auth0.com AUTH0_API_AUDIENCE=https://api.withops.com SUPABASE_URL=https://YOUR-PROJECT.supabase.co SUPABASE_ANON_KEY=eyJhbGc... SUPABASE_SERVICE_ROLE_KEY=eyJhbGc... REDIS_URL=redis://localhost:16379 OLLAMA_URL=http://localhost:11434 QDRANT_URL=http://localhost:6333 FRONTEND_URL=http://localhost:5173 ENVIRONMENT=local ``` 有关完整的配置详细信息,请参阅 `/doc/CONFIGURATION-STATUS.md` 和 `/k8s/SECRETS_MANAGEMENT.md`。 ## 快速开始 ### 选项 A: Docker Compose (推荐用于开发) 在大约 30 秒内启动所有本地服务栈: ``` # 克隆并导航至项目 cd d:\project\dev-testing\DevSecOps # 启动所有服务 (Kong, Redis, Ollama, 通过 Supabase 的 PostgreSQL, 所有 microservices) docker-compose up --build # 前端访问地址: http://localhost:5173 # Kong Gateway 地址: http://localhost:9000 # Prometheus 地址: http://localhost:9091 # Grafana 地址: http://localhost:3001 # Jaeger 地址: http://localhost:16686 ``` ### 选项 B: 手动微服务 (带热重载的开发) 单独启动后端服务以加快迭代速度: ``` # 1. 启动 infrastructure 服务 docker-compose up -d kong redis ollama # 2. 启动 Python backend (需要 Python 3.11+) cd backend pip install -r requirements.txt uvicorn main:app --host 0.0.0.0 --port 8000 --reload # 3. 启动 microservices (在独立的终端中) cd services/ai-service uvicorn main:app --host 0.0.0.0 --port 8001 --reload cd services/github-service uvicorn main:app --host 0.0.0.0 --port 8002 --reload # 4. 启动 frontend (在另一个终端中) cd frontend npm install npm run dev # Vite dev server with hot-reload ``` ### 选项 C: Kubernetes (生产环境) 部署到 Kubernetes 集群: ``` # 1. 构建 production 镜像 .\k8s\BUILD-PRODUCTION-IMAGES.ps1 # 2. 创建 namespace 和 secrets kubectl create namespace withops kubectl create secret generic app-secrets -n withops \ --from-literal=SUPABASE_ANON_KEY='YOUR_KEY' \ --from-literal=ANTHROPIC_API_KEY='sk-ant-YOUR_KEY' # 3. 部署 manifests kubectl apply -f k8s/namespace.yaml kubectl apply -f k8s/ # 4. 验证部署 kubectl get pods -n withops kubectl logs -n withops -f deployment/backend # 5. 通过 port-forward 访问 (或配置 Ingress) kubectl port-forward -n withops svc/kong 8000:8000 ``` ## 部署 ### 本地开发 **文件:** `docker-compose.yml` 使用本地环境变量启动所有服务: ``` docker-compose up --build docker-compose down -v # Clean up volumes docker-compose logs -f # View logs ``` **环境:** 使用 `backend/.env` 和 `services/github-service/.env` **端口:** - 前端: 5173 - Kong 网关: 9000 - 微服务: 8001-8009 - Redis: 16379 - Ollama: 11434 - Qdrant: 6333, 6334 - Prometheus: 9091 - Grafana: 3001 - Jaeger: 16686 ### Docker Compose (生产环境) **文件:**带有 `--env-file` 标志的 `docker-compose.yml` 使用生产环境变量进行部署: ``` # 方法 1: 使用 .env.production (推荐) docker-compose --env-file backend/.env.production up -d --build # 方法 2: 临时复制 production 配置 Copy-Item backend\.env.production backend\.env -Force docker-compose up -d --build ``` **环境:** 使用 `backend/.env.production` 和 `services/github-service/.env.production` **与本地环境的主要区别:** - 生产环境 Auth0 凭证 - 生产环境 GitHub App 配置 - 生产环境 Supabase 数据库 - 生产环境 URL (app.withops.com, api.withops.com) - 启用 HTTPS (通过反向代理/负载均衡器) ### Kubernetes (生产级别) **文件:** `k8s/*.yaml` 清单 具有适当扩展、健康检查和可观测性的 Kubernetes 部署。 #### 前置条件 ``` kubectl cluster-info kubectl get nodes ``` #### 部署步骤 ``` # 1. 创建 namespace kubectl create namespace withops # 2. 创建 secrets (部署前的关键步骤) kubectl create secret generic app-secrets -n withops \ --from-literal=SUPABASE_ANON_KEY='YOUR_KEY' \ --from-literal=SUPABASE_SERVICE_ROLE_KEY='YOUR_KEY' \ --from-literal=SUPABASE_DATABASE_URL='postgresql://...' \ --from-literal=ANTHROPIC_API_KEY='sk-ant-...' \ --from-literal=GITHUB_APP_ID='YOUR_ID' \ --from-literal=GITHUB_APP_CLIENT_SECRET='YOUR_SECRET' # 3. 验证 secrets kubectl get secrets -n withops # 4. 部署服务 kubectl apply -f k8s/namespace.yaml kubectl apply -f k8s/redis.yaml kubectl apply -f k8s/kong-gateway.yaml kubectl apply -f k8s/backend-events-hub.yaml kubectl apply -f k8s/github-service.yaml kubectl apply -f k8s/ai-service.yaml # ... 部署其余服务 # 5. 验证部署 kubectl get pods -n withops kubectl get svc -n withops # 6. 检查日志 kubectl logs -n withops -f deployment/backend # 7. 访问应用 # 为 app.withops.com 配置 DNS → 负载均衡器 IP # 或使用 port-forward 进行测试: kubectl port-forward -n withops svc/kong 8000:8000 ``` #### Kubernetes 功能 - **Deployments** — 每个服务一个 Deployment,带有用于扩展的 replicaset - **Services** — ClusterIP 用于服务间通信,NodePort/LoadBalancer 用于外部访问 - **ConfigMaps** — Kong 路由规则,Prometheus 抓取配置 - **Secrets** — 用于凭证的加密 secret 管理 - **RBAC** — 用于 pod 权限的基于角色的访问控制 - **Probes** — 用于健康监控的存活和就绪探针 - **资源限制** — 每个服务的 CPU 和内存请求/限制 - **StatefulSets** — Redis,PostgreSQL 持久化 (如果不使用托管服务) **参见:** `/k8s/PRODUCTION-DEPLOYMENT.md` 和 `/k8s/SECRETS_MANAGEMENT.md` 以获取详细的 K8s 部署指南。 ## 配置 ### 环境变量 #### 核心配置 | 变量 | 用途 | 本地 | 生产环境 | | --------------- | ---------------- | ---------------------- | ------------------------- | | `ENVIRONMENT` | 部署环境 | `local` | `production` | | `FRONTEND_URL` | 前端源 | `http://localhost:5173` | `https://app.withops.com` | | `BACKEND_URL` | 后端 API | `http://localhost:8000` | `https://api.withops.com` | | `CORS_ORIGINS` | 允许的 CORS 源 | `http://localhost:5173` | `https://app.withops.com` | #### 数据库 | 变量 | 用途 | | --------------------------- | -------------------------- | | `SUPABASE_URL` | Supabase 项目 URL | | `SUPABASE_ANON_KEY` | 公共匿名密钥 (前端) | | `SUPABASE_SERVICE_ROLE_KEY` | 服务角色密钥 (后端) | | `DATABASE_URL` | PostgreSQL 连接字符串 | | `DATABASE_ENCRYPTION_KEY` | 字段级加密 (base64) | #### GitHub 集成 | 变量 | 用途 | | ---------------------------- | ------------------------------------- | | `GITHUB_APP_ID` | GitHub App ID (来自应用设置) | | `GITHUB_APP_CLIENT_ID` | GitHub App Client ID | | `GITHUB_APP_CLIENT_SECRET` | GitHub App Client Secret (机密) | | `GITHUB_PRIVATE_KEY_PATH` | 私钥 PEM 文件路径 | | `GITHUB_OAUTH_CLIENT_ID` | OAuth 应用 Client ID (用于发现) | | `GITHUB_OAUTH_CLIENT_SECRET` | OAuth 应用 Client Secret | #### 身份验证 (Auth0) | 变量 | 用途 | | ------------------- | ----------------------------- | | `AUTH0_DOMAIN` | Auth0 租户域名 | | `AUTH0_API_AUDIENCE` | Auth0 API 标识符 | | `AUTH0_CLIENT_ID` | Auth0 应用程序 Client ID | | `AUTH0_CLIENT_SECRET` | Auth0 应用程序 Client Secret | | `JWT_SECRET_KEY` | 备用 JWT 密钥 (可选) | #### AI/LLM 服务 | 变量 | 用途 | | ----------------- | --------------------------- | | `ANTHROPIC_API_KEY` | Claude API 密钥 | | `OPENAI_API_KEY` | OpenAI GPT-4 密钥 (可选) | | `GROQ_API_KEY` | Groq Llama 3 密钥 (可选) | | `OLLAMA_URL` | 本地 Ollama 端点 | | `QDRANT_URL` | Qdrant 向量数据库 URL | #### 基础设施 | 变量 | 用途 | | ---------------- | ---------------------------------------------- | | `REDIS_URL` | Redis 连接字符串 | | `REDIS_PASSWORD` | Redis 认证密码 (如果启用) | | `ENABLE_METRICS` | 启用 Prometheus 指标导出 | | `ENABLE_TRACING` | 启用 OpenTelemetry 链路追踪 | | `OTLP_ENDPOINT` | Jaeger OTLP HTTP 端点 | | `LOG_LEVEL` | 日志详细程度 (DEBUG, INFO, WARNING, ERROR) | ### 文件位置 ``` backend/ ├── .env # Local dev configuration ├── .env.production # Production configuration ├── config/ │ └── keys/ │ ├── withops-devsecops-platform-local.2026-01-22.private-key.pem │ └── withops-devsecops-platform-production.private-key.pem services/github-service/ ├── .env # Local dev ├── .env.production # Production frontend/ ├── .env # Vite environment ├── vite.config.js # Build configuration └── src/lib/config.js # Runtime config utilities infra/ ├── kong/kong.yml # API Gateway routing ├── monitoring/ │ ├── prometheus.yml # Metrics scrape config │ └── grafana/dashboards/ # Grafana dashboard definitions └── ollama/ └── init-models.sh # Ollama model initialization k8s/ ├── namespace.yaml # Kubernetes namespace ├── redis.yaml # Redis deployment ├── kong-gateway.yaml # Kong deployment ├── backend-events-hub.yaml # Backend deployment ├── secrets.yaml # Secret template └── *.yaml # Other microservice deployments ``` ### 动态 URL 配置 平台支持基于环境的动态 URL: **前端 Vite 构建:** ``` // Build-time variables (vite.config.js) VITE_API_BASE_URL=http://localhost:8000 VITE_WS_BASE_URL=http://localhost:9100 VITE_AUTH0_DOMAIN=dev-sabxychpf6paj41u.us.auth0.com VITE_AUTH0_CLIENT_ID=YOUR_CLIENT_ID VITE_AUTH0_CALLBACK_URL=http://localhost:5173/callback ``` **后端运行时:** ``` # 运行时配置 (backend/core/config.py) FRONTEND_URL = os.getenv('FRONTEND_URL', 'http://localhost:5173') GITHUB_SERVICE_URL = os.getenv('GITHUB_SERVICE_URL', 'http://localhost:8002') CORS_ORIGINS = os.getenv('CORS_ORIGINS', 'http://localhost:5173').split(',') ``` ## 微服务 WithOps 由 9 个以上的独立微服务组成,每个微服务都有特定的领域职责: ### 1. 后端事件中心 (端口 8000) **用途:** 中央 WebSocket 管理器和实时事件协调器 **主要功能:** - WebSocket 连接管理 - Redis 发布/订阅订阅 - 向连接的客户端广播事件 - 用于多用户会话的基于频道的路由 **事件类型:** - `threat.analysis.completed` — 威胁分析已完成 - `threat_detected` — 识别出新威胁 - `pr_created` — 自动创建 Pull Request - `scan_complete` — 安全扫描已完成 - `github.refresh` — GitHub 数据已刷新 **端点:** - `WebSocket /ws/events/{user_id}` — 实时事件流 - `GET /api/health` — 健康检查 **监控:** 端口 9100 上的 Prometheus ### 2. AI 服务 (端口 8001) **用途:** AI 驱动的代码分析和安全建议 **主要功能:** - 代码漏洞分析 - 安全最佳实践建议 - 集成 Claude 3 Opus、GPT-4、Groq Llama 3、Ollama - 用于异步威胁分析的后台工作器 - 使用 Redis 进行响应缓存 **端点:** - `POST /api/ai/analyze` — 分析代码的安全问题 - `POST /api/ai/chat` — 交互式 AI 助手 - `GET /api/ai/suggestions` — 安全建议 - `POST /api/ai/analyze-async` — 带有事件回调的异步分析 **技术:** FastAPI,httpx (异步 HTTP),Redis 缓存 **监控:** 端口 9101 上的 Prometheus **模型:** ``` # 模型选择优先级 1. Claude 3 Opus (via Anthropic API) — Primary 2. Groq Llama 3 (via Groq API) — Fallback 3. GPT-4 (via OpenAI API) — Alternative 4. Ollama (Local) — Offline capability ``` ### 3. GitHub 服务 (端口 8002) **用途:** 用于仓库管理和工作流自动化的 GitHub 集成 **主要功能:** - GitHub App 和 OAuth 集成 - 组织和仓库发现 - 工作流文件解析和验证 - 带有智能缓存的仓库树管理 - GitHub Actions 版本跟踪和审计 - 自动创建用于 action 升级的 PR **端点:** - `GET /api/github/organizations` — 列出用户的组织 - `GET /api/github/repositories` — 仓库列表 - `GET /api/github/workspace/{org}` — 工作区分析 - `GET /api/github/workflows` — 工作流列表 - `POST /api/github/create-pr` — 创建用于升级的 PR - `GET /api/github/actions-audit` — action 版本审计 **技术:** FastAPI,带有连接池的 httpx,GitHub App 认证 **缓存策略:** Redis,对于工作区/工作流数据有 1-2 小时的 TTL **速率限制:** 通过 Redis 的令牌桶 **监控:** 端口 9102 上的 Prometheus ### 4. 威胁建模服务 (端口 8003) **用途:** STRIDE/LINDDUN/CIA 安全威胁分析引擎 **主要功能:** - 从 DFD 自动生成威胁 - STRIDE 方法论(默认) - LINDDUN 方法论(侧重隐私) - CIA 框架(机密性/完整性/可用性) - OWASP Top 10 映射 - MITRE ATT&CK 框架集成 - 威胁严重性评分 **端点:** - `POST /api/v1/models` — 创建威胁模型 - `GET /api/v1/models/{id}` — 获取模型 - `POST /api/v1/models/{id}/analyze` — 生成威胁 - `POST /api/v1/models/{id}/comprehensive-analysis` — 深度分析 - `GET /api/v1/models/{id}/threats` — 列出已识别的威胁 **技术:** FastAPI,威胁分析算法,知识库 **监控:** 端口 9103 上的 Prometheus ### 5. 工作区智能服务 (端口 8004) **用途:** 组织范围的 DevSecOps 成熟度评估 **主要功能:** - OWASP DSOMM 框架评估 - 5 个维度分析:构建、实现、测试、信息收集、文化 - 成熟度级别:L0-L4 (无 → 基础 → 高级 → 成熟 → 优化) - 安全工具检测 (CodeQL、SonarQube、Dependabot、Gitleaks 等) - AI 聊天用于获取见解和建议 - 实践检测:SAST、SCA、DAST、密钥扫描 - 与行业标准的基准对比 **端点:** - `POST /api/workspace-intelligence/analyze` — 分析工作区 - `GET /api/workspace-intelligence/{org_id}/assessment` — 获取评估结果 - `POST /api/workspace-intelligence/{org_id}/chat` — AI 聊天获取见解 - `GET /api/workspace-intelligence/{org_id}/practices` — 列出已检测到的实践 **技术:** FastAPI,成熟度评估算法,知识库 **监控:** 端口 9104 上的 Prometheus ### 6. 协作服务 (端口 8105) **用途:** 团队协作和工作区共享 **主要功能:** - 组织成员管理 - 协作邀请和权限 - 活动跟踪 - 工作区共享和访问控制 - 协作者的实时通知 **端点:** - `GET /api/collaboration/teams` — 列出团队 - `POST /api/collaboration/share` — 共享工作区 - `GET /api/collaboration/{org_id}/members` — 列出成员 - `POST /api/collaboration/invite` — 发送邀请 **技术:** FastAPI,PostgreSQL 关系 **监控:** 端口 9105 上的 Prometheus ### 7. 工作流编排服务 (端口 8007) **用途:** CI/CD 工作流管理和安全扫描编排 **主要功能:** - GitHub Actions 版本管理 - 工作流分析和审计 - 自动创建 action 升级 PR - 安全扫描编排 - 工作流健康检查 **端点:** - `GET /api/workflows/analyze` — 分析工作流 - `POST /api/workflows/scan` — 扫描问题 - `POST /api/workflows/security/create-upgrade-prs` — 创建升级 PR - `GET /api/workflows/{org}/actions-audit` — action 版本审计 **技术:** FastAPI,GitHub API 集成 **监控:** 端口 9107 上的 Prometheus ### 8. AI RAG 服务 (端口 8008) **用途:** 带有检索增强生成的对话式 AI **主要功能:** - 关于 DevSecOps 最佳实践的自然语言查询 - 基于知识库的上下文感知响应 - 自动文档索引和嵌入 - 带有记忆的多轮对话 - 来自 Qdrant 向量存储的知识库 **端点:** - `POST /api/conversations/start` — 开始对话 - `POST /api/conversations/{id}/message` — 发送消息 - `GET /api/conversations/{id}` — 获取对话 - `POST /api/rag/index` — 索引文档 - `POST /api/rag/query` — 查询知识库 **技术:** FastAPI,Qdrant,Ollama embeddings,Redis会话管理 **监控:** 端口 9108 上的 Prometheus ### 9. 流水线预测服务 (端口 8009) **用途:** 基于机器学习的 CI/CD 故障预测和异常检测 **主要功能:** - 历史流水线数据分析 - 工作流的故障预测 - 流水线模式中的异常检测 - 性能趋势分析 - 改进建议 **端点:** - `POST /api/pipeline-prediction/analyze` — 预测故障 - `GET /api/pipeline-prediction/{org_id}/trends` — 流水线趋势 - `POST /api/pipeline-prediction/train` — 训练模型 **技术:** FastAPI,机器学习模型 (scikit-learn 或 TensorFlow) **监控:** 端口 9109 上的 Prometheus ### 服务通信 **REST API:** - 前端 ↔ Kong 网关 ↔ 微服务 - 服务间通过 Kong 调用以保持一致性 **异步事件:** - 微服务发布到 Redis 频道 - 事件中心订阅并通过 WebSocket 广播 - 示例:AI 服务发布 `threat.analysis.completed` → 事件中心 → 前端 **身份验证:** - 所有服务上的 Auth0 JWT 验证中间件 - 在 `core/auth.py` 中进行集中式 JWT 验证 - 服务间调用使用内部 token ## 监控与可观测性 WithOps 包含生产级别的监控、可观测性和分布式链路追踪。 ### 指标 **收集:** Prometheus 在端口 9091 抓取指标 **服务指标:** ``` http_requests_total{service="backend", endpoint="/api/threat-modeling", status="200"} http_request_duration_seconds{service="github-service", endpoint="/api/github/organizations"} websocket_connections_active{service="events-hub", user_count=42} redis_commands_total{service="cache", command="get", status="hit"} database_queries_total{service="backend", query_type="select"} ai_analysis_duration_seconds{service="ai-service", model="claude-3-opus"} ``` **保留:** 15 天 (可在 `infra/monitoring/prometheus.yml` 中配置) ### 仪表板 **访问:** http://localhost:3001 (默认 admin/admin) **预建仪表板:** 1. **系统概览** — 请求率、延迟、错误、正常运行时间 2. **服务健康** — 每个服务的指标和可用性 3. **数据库性能** — 查询计数、连接池、最慢的查询 4. **缓存效率** — 命中率、驱逐、内存使用 5. **AI 服务分析** — 模型使用情况、分析持续时间、成功率 6. **GitHub 集成** — API 速率限制、工作流分析、PR 创建率 **参见:** `infra/monitoring/grafana/dashboards/` 目录 ### 分布式链路追踪 **访问:** http://localhost:16686 **链路追踪:** OpenTelemetry 通过 OTLP HTTP 导出到 Jaeger **遥测:** - FastAPI 中间件 - 数据库查询 - Redis 操作 - HTTP 客户端调用 - WebSocket 连接 **链路追踪流示例:** ``` HTTP POST /api/threat-modeling/analyze ├── [FastAPI] Request received │ └── [Auth] JWT validation ├── [Service] Threat analysis logic │ ├── [Database] Query threat model │ ├── [AI Service] Call Claude API │ └── [Redis] Cache result ├── [EventBus] Publish analysis.completed │ └── [Jaeger] Export span └── HTTP 200 OK ``` **查看链路追踪:** 带有时间线、span 详情、日志和错误消息的 Jaeger UI ### 结构化日志 **格式:** JSON (用于 ELK Stack 或 Loki 集成) ``` { "timestamp": "2026-01-15T10:23:45.123Z", "level": "INFO", "service": "github-service", "request_id": "abc-123-def", "user_id": "user_12345", "message": "Fetched 42 repositories for organization github", "duration_ms": 234, "status": "success" } ``` **日志级别:** DEBUG, INFO, WARNING, ERROR, CRITICAL **参见:** `backend/core/logging_config.py` ### 健康检查 **存活探针** — 服务正在运行 ``` GET /api/health GET /api/health/live ``` **就绪探针** — 服务已准备好接受流量 ``` GET /api/health/ready ``` **完整健康检查** — 所有依赖项 ``` GET /api/health/full # 检查项: database, redis, 外部 APIs ``` ## 开发 ### 本地开发设置 #### 前置条件 - Python 3.11+ - Node.js 20.x LTS - Docker 和 Docker Compose - Git #### 初始设置 ``` # 克隆仓库 git clone https://github.com/your-org/withops.git cd withops # 复制环境文件 cp backend/.env.example backend/.env cp services/github-service/.env.example services/github-service/.env cp frontend/.env.example frontend/.env # 启动 infrastructure docker-compose up -d kong redis ollama ``` #### 后端开发 ``` # 导航至 backend cd backend # 创建虚拟环境 python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # 安装依赖 pip install -r requirements.txt # 使用 auto-reload 运行 uvicorn main:app --host 0.0.0.0 --port 8000 --reload # 运行测试 pytest # 使用 Ruff 进行 Lint ruff check . ``` #### 前端开发 ``` # 导航至 frontend cd frontend # 安装依赖 npm install # 启动带 hot-reload 的开发服务器 npm run dev # 打开 http://localhost:5173 # 为 production 构建 npm run build # 预览 production 构建 npm run preview # 运行测试 npm test # Lint & 格式化 npm run lint npm run format ``` #### 添加新的微服务 ``` # 1. 创建服务目录 mkdir -p services/my-service cd services/my-service # 2. 复制模板结构 # 从现有服务复制 main.py, requirements.txt, Dockerfile # 3. 使用 FastAPI 应用创建 main.py # app = FastAPI() # @app.get("/health") # async def health(): return {"status": "ok"} # 4. 添加到 docker-compose.yml # my-service: # build: ./services/my-service # ports: # - "8010:8000" # 5. 添加 Kong 路由 (infra/kong/kong.yml) # 6. 添加 Kubernetes deployment (k8s/my-service.yaml) ``` ### 项目结构 ``` withops/ ├── backend/ # Events Hub + core utilities │ ├── main.py # WebSocket server & event coordinator │ ├── core/ # Shared utilities │ │ ├── event_bus.py # Redis pub/sub manager │ │ ├── websocket_manager.py # WebSocket connections │ │ ├── auth.py # JWT validation │ │ ├── github_client.py # GitHub integration │ │ └── ai_helper.py # AI model selection │ ├── database/ # ORM models & queries │ ├── config/keys/ # GitHub App private keys │ └── requirements.txt │ ├── services/ # 9+ microservices │ ├── ai-service/ │ │ ├── main.py # FastAPI app │ │ ├── api/ # Route handlers │ │ ├── core/ # Service logic │ │ └── Dockerfile │ ├── github-service/ # GitHub integration │ ├── threat-modeling-service/ │ ├── workspace-intelligence-service/ │ ├── ai-rag-service/ │ ├── collaboration-service/ │ ├── workflow-orchestration-service/ │ ├── auth-service/ │ └── pipeline-prediction-service/ │ ├── frontend/ # SvelteKit application │ ├── src/ │ │ ├── routes/ # Pages (SvelteKit routing) │ │ │ ├── dashboard/ │ │ │ ├── github/ │ │ │ └── [org]/ # Dynamic routes │ │ ├── lib/ # Shared components & utilities │ │ │ ├── auth.js # Auth0 setup │ │ │ ├── api/ # API client functions │ │ │ └── stores/ # Svelte stores (state management) │ │ └── app.html # Root template │ ├── package.json │ └── Dockerfile │ ├── infra/ # Infrastructure configs │ ├── kong/ │ │ └── kong.yml # API Gateway routing rules │ ├── monitoring/ │ │ ├── prometheus.yml # Metrics scrape config │ │ └── grafana/ │ │ └── dashboards/ # Dashboard JSON definitions │ └── ollama/ │ └── init-models.sh # Model initialization │ ├── k8s/ # Kubernetes manifests │ ├── namespace.yaml │ ├── redis.yaml │ ├── kong-gateway.yaml │ ├── backend-events-hub.yaml │ ├── *-service.yaml # Microservice deployments │ ├── monitoring.yaml # Prometheus & Grafana │ ├── secrets.yaml # Secret template │ ├── PRODUCTION-DEPLOYMENT.md │ └── SECRETS_MANAGEMENT.md │ ├── doc/ # Documentation │ ├── MICROSERVICES-ARCHITECTURE.md │ ├── CONFIGURATION-STATUS.md │ ├── DEPLOYMENT-CHECKLIST.txt │ ├── QUICK-START-CHECKLIST.md │ └── TEST-VALIDATION-GUIDE.md │ ├── .github/ │ └── workflows/ │ └── ci-cd.yml # GitHub Actions pipeline │ ├── docker-compose.yml # Local development ├── docker-compose.prod.yml # Production overrides ├── ruff.toml # Python linting config └── README.md # This file ``` ### 代码规范 **Python (后端与服务)** - 带有类型提示的 Python 3.11+ - PEP 8 风格指南 (由 Ruff 强制执行) - 针对受 I/O 限制的操作使用 Async/await - 使用 SQLAlchemy 进行 ORM 查询 - 使用 FastAPI 处理 HTTP 端点 **配置:** ``` # ruff.toml (项目根目录) [tool.ruff] line-length = 100 target-version = "py311" select = ["E", "F", "W", "I", "N", "UP"] # Error, Flake8, Warning, Import, Naming, Upgrade ignore = ["E501"] # Line too long (handled by formatter) ``` **JavaScript/SvelteKit (前端)** - 开启严格模式的 Node.js 20+ - ES6+ 模块 - Prettier 格式化 - ESLint 保证代码质量 - Vitest 用于单元测试 **配置:** ``` // eslint.config.js export default [ { languageOptions: { globals: { browser: true, node: true } }, rules: { "no-unused-vars": "error" }, }, ]; ``` ### 测试 **后端** ``` # 单元测试 pytest # 包含覆盖率 pytest --cov=services/ai-service tests/ # 特定测试 pytest tests/test_ai_analysis.py::test_threat_detection ``` **前端** ``` # 单元测试 (Vitest) npm test # Watch 模式 npm test -- --watch # 包含覆盖率 npm test -- --coverage # 浏览器测试 (Playwright) npm test -- --browser ``` **集成测试** ``` # 启动 full stack docker-compose up -d # 运行 integration 测试套件 ./test-validation.ps1 -Mode full -Org test-org # 清理 docker-compose down ``` ### CI/CD 流水线 **GitHub Actions:** `.github/workflows/ci-cd.yml` **阶段:** 1. **密钥扫描** (Gitleaks) - 扫描完整的 git 历史以查找泄露的凭证 - 如果检测到密钥则构建失败 2. **前端 CI** (Node 20) - 安装依赖 (`npm ci`) - 使用 Prettier + ESLint 进行代码检查 - 运行 Vitest 单元测试 - 安装 Playwright 浏览器 3. **后端 CI** (Python 3.11) - 并行矩阵中的 10 个服务 - 安装依赖 - 使用 Ruff 进行代码检查 - (可选:单元测试) 4. **构建与推送** (Docker) - 需要所有 CI 阶段通过 - 使用矩阵构建所有镜像 - 使用 `sha-` 和 `latest` 打标签 - 推送到 GitHub Container Registry (GHCR) **矩阵服务:** ``` - backend - ai-service - ai-rag-service - auth-service - collaboration-service - github-service - threat-modeling-service - workflow-orchestration-service - workspace-intelligence-service - pipeline-prediction-service ``` **成功后:** - 镜像推送到 `ghcr.io/your-org/withops/{service}:latest` - 镜像准备好进行 Kubernetes 部署 ## 贡献 ### 在您开始之前 1. 阅读 [doc/MICROSERVICES-ARCHITECTURE.md](doc/MICROSERVICES-ARCHITECTURE.md) 2. 了解事件驱动架构 3. 审查现有的服务模式 4. 查看未解决的问题以了解已知限制 ### 工作流 1. **创建分支** git checkout -b feature/new-feature 2. **遵循代码规范进行更改** - 提交前进行检查:`ruff check .` (后端),`npm run lint` (前端) - 为新逻辑编写测试 - 更新文档 3. **使用清晰的消息提交** git commit -m "feat: Add threat severity scoring" 4. **推送并创建 Pull Request** git push origin feature/new-feature 5. **运行 CI/CD 流水线** - 密钥扫描 - 代码检查与测试 - Docker 构建 - 镜像推送到 GHCR 6. **代码审查** — 团队审查并批准 7. **合并** — 将提交压缩到 main 分支 ### 添加新的 API 端点 **后端示例:** ``` # services/ai-service/api/v1/ai.py from fastapi import APIRouter, Depends from core.auth import verify_token router = APIRouter(prefix="/api/ai", tags=["ai"]) @router.post("/analyze-code") async def analyze_code( code: str, user_id: str = Depends(verify_token), db: AsyncSession = Depends(get_db) ): """Analyze code for vulnerabilities.""" # Implementation return {"vulnerabilities": [...]} ``` **前端示例:** ``` ``` ### 添加新的微服务 1. 复制服务模板目录 2. 使用 FastAPI 应用更新 `main.py` 3. 添加 `Dockerfile` 4. 添加到 `docker-compose.yml` 5. 在 `infra/kong/kong.yml` 中添加 Kong 路由 6. 在 `k8s/` 中添加 Kubernetes 清单 7. 在 `.github/workflows/ci-cd.yml` 中添加到 GitHub Actions 矩阵 8. 在 [doc/MICROSERVICES-ARCHITECTURE.md](doc/MICROSERVICES-ARCHITECTURE.md) 中记录端点 ## 故障排除 ### 服务无法启动 ``` # 检查日志 docker-compose logs -f # 验证网络连通性 docker network ls docker network inspect withops_default # 从头开始重启 docker-compose down -v docker-compose up --build ``` ### 数据库连接问题 ``` # 检查 Supabase 凭证 echo $SUPABASE_URL echo $SUPABASE_ANON_KEY # 测试连接 psql $DATABASE_URL -c "SELECT 1" # 从容器中检查 PostgreSQL docker-compose exec backend psql $DATABASE_URL -c "SELECT 1" ``` ### Redis 连接问题 ``` # 检查 Redis 是否正在运行 docker-compose ps redis # 测试 Redis 连接 docker-compose exec redis redis-cli ping # 应返回 "PONG" # 检查 Redis URL echo $REDIS_URL ``` ### Auth0 配置 1. 前往 https://manage.auth0.com 2. 应用程序 → 您的应用 → 设置 3. 添加到 **Allowed Callback URLs**: - `http://localhost:5173/callback` (开发环境) - `https://app.withops.com/callback` (生产环境) 4. 点击 **Save Changes** ### GitHub App 配置 1. 前往 https://github.com/settings/apps 2. 编辑您的 GitHub App 3. 更新 **Webhook URL** 和 **Callback URL** 4. 如有需要,重新生成 **Client Secret** 5. 如果已过期,下载新的 **Private Key** ### 密钥扫描失败 ``` # 检查硬编码的 secrets git log -S "sk-ant" --oneline git log -p -S "YOUR_SECRET" # 在本地使用 gitleaks gitleaks detect --source . --verbose ``` ## 支持与资源 ### 文档 - [微服务架构](doc/MICROSERVICES-ARCHITECTURE.md) — 服务规范 - [Kubernetes 部署](k8s/PRODUCTION-DEPLOYMENT.md) — K8s 设置指南 - [密钥管理](k8s/SECRETS_MANAGEMENT.md) — 密钥最佳实践 - [配置状态](doc/CONFIGURATION-STATUS.md) — 环境设置状态 - [部署检查清单](doc/DEPLOYMENT-CHECKLIST.txt) — 生产环境部署步骤 ### 外部参考 - [FastAPI 文档](https://fastapi.tiangolo.com/) - [SvelteKit 指南](https://kit.svelte.dev/) - [Kong API 网关](https://konghq.com/kong/) - [PostgreSQL / Supabase](https://supabase.com/docs) - [Kubernetes 文档](https://kubernetes.io/docs/) - [Prometheus 监控](https://prometheus.io/docs/) - [OpenTelemetry](https://opentelemetry.io/) ### 获取帮助 1. 查看 `/doc` 目录中的文档 2. 查看现有的 GitHub issues 3. 查阅 `.github/workflows/ci-cd.yml` 获取 CI/CD 示例 4. 在 `/services` 中查看服务示例以了解模式 ## 许可证 本项目是专有软件。禁止未经授权的使用、分发或修改。 ## 版本 **WithOps DevSecOps 平台 v2.0** - **发布日期:** 2026 年 1 月 - **状态:** 生产就绪 - **Python 版本:** 3.11+ - **Node 版本:** 20.x LTS - **Kubernetes:** 1.24+ ## 总结 WithOps 是一个专为企业设计的综合性、生产就绪的 DevSecOps 平台。凭借 9 个以上的微服务、企业级监控、Kubernetes 支持和 AI 驱动的安全分析,它为团队提供了用于 DevSecOps 成熟度评估、威胁建模和 CI/CD 治理的智能自动化。 基于行业标准技术(FastAPI、SvelteKit、PostgreSQL、Redis、Kubernetes)构建,该平台可扩展以支持大型组织,同时保持安全性、可观测性和易于部署。 **核心优势:** - ✅ 事件驱动的微服务架构 - ✅ 全面的监控和可观测性 - ✅ 生产就绪的 Kubernetes 部署 - ✅ AI 驱动的安全建议 - ✅ 实时协作功能 - ✅ 企业级身份验证 (Auth0) - ✅ 多种 LLM 集成 - ✅ 自动化的 CI/CD 治理
标签:AI代码分析, API集成, ASN信息, CIA模型, CI/CD安全, CI/CD治理, CISA项目, DevOps工具, DevSecOps, Docker Compose, GitHub集成, LINDDUN模型, Llama, OWASP DSOMM, STRIDE模型, StruQ, 上游代理, 事件驱动架构, 人工智能, 企业级平台, 协作平台, 可观测性, 威胁建模, 子域名突变, 安全合规, 微服务架构, 搜索引擎查询, 测试用例, 用户代理, 用户模式Hook绕过, 研发安全, 网络代理, 自定义请求头, 请求拦截, 逆向工具