AngelP17/Cellguard

GitHub: AngelP17/Cellguard

CellGuard 是一个可靠性控制平台,用于策略代码释放门、错误预算、混沌工作流和审计事件响应。

Stars: 1 | Forks: 0

# CellGuard [![CI Gate Proof](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/27dcc83571174708.svg)](https://github.com/AngelP17/Cellguard/actions/workflows/gate-proof.yml) **CellGuard 将 xyOps 从自动化平台转变为受管可靠性系统。** 在旗舰模式下,CellGuard 在 **xyOps** 上运行,它是您用于作业、工作流、监控、警报和自动化的本地执行层。xyOps 执行并观察。CellGuard 决定什么安全,强制执行策略,触发修复,并证明每个操作。 它们共同构成一个完整、零成本、自托管的可靠性操作系统。 CellGuard 评估实时 SLO 和工作流证据,使用 `HTTP 423 Locked` 阻止风险部署,协调自主可靠性代理(budget_guard、healing、incident_response、chaos_orchestrator),并记录每个特权操作在不可变跨系统审计跟踪中。 ``` flowchart LR U["Operator or CI"] --> API["CellGuard API"] API --> BG["Release Gate"] API --> CH["Chaos Service"] API --> EV["Budget Evaluator"] CH --> RD["Redis / Infra Target"] EV --> DB["Postgres"] AG["Agent Scheduler"] --> SQ["Sidekiq"] SQ --> AGT["Agents"] AGT --> API UI["Dashboard + WebSocket Activity"] --> API ``` ## 旗舰演示(闭环治理) ``` ALLOW_DEMO_ENDPOINTS=true CLASSIFIER_STUB=true bin/run-all ``` 然后: ``` # 全天游戏日:xyOps 降级,CellGuard 上下文,423 锁定,修复,重新开放,审计 make gameday ``` 仪表板和操作层面板显示完整的工作循环: ``` flowchart LR A["xyOps runs workflow"] --> B["Latency and error degradation"] B --> C["Alert, job context, and snapshot emitted"] C --> D["CellGuard ingests operational evidence"] D --> E["SLO evaluation with xyOps penalty"] E --> F["Release gate locks: HTTP 423"] F --> G["Incident created with evidence links"] G --> H["Healing agent requests remediation"] H --> I["xyOps remediation completes"] I --> J["CellGuard re-evaluates healthy signal"] J --> K["Release gate reopens: HTTP 200"] K --> L["Audit trail links decision, incident, and remediation"] ``` 在 打开仪表板,查看操作层、丰富的门证据和跨系统证明。 ## UI 入口 | 路径 | 目的 | |------|---------| | `/` | 带有实时门快照的着陆页 | | `/dashboard` | 命令仪表板 | | `/incidents` | 事件分诊工作区 | | `/runbooks/:slug` | 运行手册查看器 | ## 截图 下面的截图使用一种命令系统语言:相同的深色控制平面调色板、翡翠治理强调色、红色锁定状态、单色证据、紧凑的面板和基于 DB 的 xyOps 证明。这套集合故意很小,以便 README 显示一个连贯的产品,而不是一个无关状态的画廊。 ### 着陆:产品证明 实时可靠性操作系统信号在页面上方:门状态、燃烧、预算、xyOps 层、活动代理和审计。 ![Landing desktop](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4bfa4e587f174718.png) ### 仪表板:开放门 一个命令驾驶舱,其中包含发布门、层证据、代理状态和审计上下文在一个视图中。 **再生:** 在 UI 变更后运行 `npm run screenshot:open`、`npm run screenshot:locked`、`npm run screenshots`,以及 `make go-ui-smoke`。`screenshot:open` 拥有 `dashboard-open.png` 和 `dashboard-mobile.png`;`screenshot:locked` 拥有 `dashboard-locked.png`;`screenshots` 拥有着陆和事件。始终在提交前检查新的 PNG 文件。有关前端完成标准,请参阅 AGENTS.md。 ## 架构(CellGuard 管理 xyOps) ``` flowchart TB subgraph UI["CellGuard UI (Hotwire)"] direction TB D["Dashboard, Release Gate with xyOps evidence, Agents"] I["Incidents with xyOps panel, Audit cross-system"] end subgraph CP["CellGuard Control Plane"] direction TB SLO["SLO & Error Budget Engine (workflow-aware)"] GE["Gate Engine (xyops signals accelerate burn/lock)"] AE["Agent Engine (healing triggers xyops remediation safely)"] AD["xyOps Adapter (client, ingestor, remediation_runner)"] end subgraph XY["xyOps Execution Fabric"] WF["Jobs, Workflows, Monitoring, Alerts, Snapshots"] NOTE["(simulated in demo via Xyops::Simulator; real self-hosted in prod)"] end UI --> CP CP --> XY style UI fill:#0f172a,stroke:#64748b,color:#e2e8f0 style CP fill:#1e2937,stroke:#64748b,color:#e2e8f0 style XY fill:#0f172a,stroke:#64748b,color:#e2e8f0 ``` **责任划分** | 层 | CellGuard 拥有 | xyOps 拥有 | |--------------------------|-----------------------------------------------------|-------------------------------------------------| | 可靠性智能 | SLOs、错误预算、发布门、锁定决策 | 运营上下文(作业、工作流、警报) | | 安全策略 | 门规则、代理护栏、完整审计跟踪 | 工作流执行约束 | | 事件响应 | 状态、严重性、运行手册、审计链接 | 作业历史、服务器快照、警报上下文 | | 自动化 | budget_guard、healing、incident_response、chaos | 跨系统工作流、计划自动化 | | 证明 | “为什么门会锁定?” | “什么在运行,在哪里,有什么变化?” | **CellGuard 管理 xyOps。** xyOps 运行工作。CellGuard 使自动化安全、SLO 感知、可审计和影响发布。 ## 功能证明 此 README 反映了一个经过验证的本地系统,而不是静态的模拟。证明路径如下: ``` flowchart LR T["Rails, Go classifier, and Go runner tests"] --> S["Local stack boot"] S --> G["make gameday"] G --> L["Gate opens, locks at 423, then reopens"] L --> U["UI smoke and screenshot regeneration"] U --> R["README screenshots refreshed from generated artifacts"] ``` ## 本地开发 ### 预先条件 - Ruby `3.3.0` - Bundler `2.5.x` - PostgreSQL `16` - Redis(本地或容器) ### 一键启动 ``` ALLOW_DEMO_ENDPOINTS=true CLASSIFIER_STUB=true bin/run-all ``` 这启动了 Rails 网络加 Sidekiq 工作员加调度器,并使用进程内 Ruby 分类器存根。 ### 三终端模式 终端 1(Web): ``` bin/dev ``` 终端 2(工作员): ``` bundle exec sidekiq -C config/sidekiq.yml ``` 终端 3(Go 分类器在 :8081): ``` make go-classifier-run ``` ### 重置演示状态 ``` make reset-demo make enable-chaos-orchestrator # optional, default disabled for safety ``` ## 生产 Docker 部署 应用程序包含一个生产就绪的 Dockerfile。有关完整说明,请参阅 [docs/DEPLOYMENT.md](./docs/DEPLOYMENT.md)。 最小示例: ``` docker build -t cellguard-web . docker run -d --name cellguard-web -p 3000:3000 \ -e DATABASE_URL=postgres://cellguard:secret@db:5432/cellguard_production \ -e REDIS_URL=redis://redis:6379/0 \ -e SECRET_KEY_BASE=$(openssl rand -hex 64) \ -e CELLGUARD_TOKEN=$(openssl rand -hex 32) \ -e CLASSIFIER_URL=http://classifier:8081 \ cellguard-web ``` 必需环境变量:`DATABASE_URL`、`REDIS_URL`、`SECRET_KEY_BASE`、`CELLGUARD_TOKEN`、`CLASSIFIER_URL`。 可选:`ALLOW_DEMO_ENDPOINTS`(开发/演示仅限)、`GIT_SHA`(审计跟踪)、代理切换。 ## 验证 ### 测试 ``` bundle exec rails test # Rails test suite make go-classifier-test # Go classifier tests make go-agent-runner-test # Go agent-runner tests ``` ### 游戏日证明 ``` make gameday ``` 此确定性脚本证明了策略执行:门开始打开,注入故障,评估运行,门锁定到 423,恢复它。 ### UI 证据 ``` make go-ui-smoke ``` 渲染仪表板并保存 `tmp/ui-dashboard.png`。 ### 健康检查 ``` curl -s http://localhost:3000/api/healthz # liveness curl -s http://localhost:3000/api/readyz # readiness (DB + Redis + Sidekiq + classifier) curl -s http://localhost:3000/api/status # detailed status with version ``` ## API 参考 ### 公共(无需令牌) | 端点 | 目的 | |----------|---------| | `GET /api/healthz` | 活跃性探测 | | `GET /api/readyz` | 准备就绪探测 | | `GET /api/status` | 详细状态与版本 | | `GET /api/release-gate/check` | CI 门检查(200 打开 / 423 锁定) | | `GET /api/agents/status` | 代理启用和执行计数 | | `GET /api/agents/activity?limit=20` | 最近代理执行源 | ### 特权(生产中需要 `X-CELLGUARD-TOKEN`) | 端点 | 目的 | |----------|---------| | `POST /api/release-gate/override` | 审计手动覆盖 | | `POST /api/evaluate` | 触发预算评估 + 分类 | | `POST /api/ingest/job-stat` | 摄入运营指标 | | `POST /api/inject-failures` | 演示:模拟故障(仅限演示模式) | | `POST /api/chaos/partition` | 注入网络分区(仅限演示模式) | | `POST /api/chaos/heal` | 从混沌中恢复(仅限演示模式) | | `GET /api/audit-logs` | 读取审计跟踪 | | `POST /api/incidents/:id/acknowledge` | 承认事件 | | `POST /api/incidents/:id/resolve` | 解决事件 | | `POST /api/incidents/:id/escalate` | 升级事件 | | `POST /api/incidents/:id/note` | 向事件添加注释 | | `POST /api/agents/run-all` | 运行所有启用的代理(默认异步) | | `POST /api/agents/:name/run` | 运行特定代理 | | `POST /api/agents/:name/toggle` | 启用/禁用代理 | ## 安全性与治理 - 所有门覆盖、混沌操作、代理切换和事件生命周期变更都写入 `audit_logs`,包括操作者、方法、路径、IP 和时间戳。 - 特权端点需要 `X-CELLGUARD-TOKEN`(开发/演示除外)。 - 混沌端点需要 `ALLOW_DEMO_ENDPOINTS=true` 或开发模式。 - 自主代理具有安全护栏(营业时间、预算检查、事件意识)。 - 生产模式下,API 端点不会泄露原始异常消息。 - 有关完整安全模型和不变合同,请参阅 [AGENTS.md](./AGENTS.md)。 ## 文档 - [AGENTS.md](./AGENTS.md) - 架构、命令、安全模型、完成标准 - [docs/AGENTS.md](./docs/AGENTS.md) - 代理运行时合同 - [docs/DEPLOYMENT.md](./docs/DEPLOYMENT.md) - 生产 Docker 部署 - [docs/runbooks/](./docs/runbooks/) - 运营运行手册(游戏日等) ## 故障排除 ### `bundle exec rails test` 失败,出现 `ActiveRecord::NoEnvironmentInSchemaError` 首先运行迁移: ``` bundle exec rails db:setup ``` ### 在 `make gameday` 后门保持打开 检查分类器响应: ``` curl -s -X POST http://localhost:3000/api/evaluate \ -H "Content-Type: application/json" \ -d '{"shard":"shard-default","window_minutes":60}' ``` 如果 `is_violation` 为 `false`,注入的错误率低于 SLO 阈值。在注入调用中增加 `error_rate`。 ### Sidekiq 调度器未运行 验证调度器已注册: ``` bundle exec sidekiq -C config/sidekiq.yml ``` 检查 `config/sidekiq.yml` 中的 `scheduler` 块。默认情况下,调度器每 60 秒运行一次。 ### 特权端点返回 401 设置令牌: ``` export CELLGUARD_TOKEN=your-secret-token curl -X POST http://localhost:3000/api/release-gate/override \ -H "X-CELLGUARD-TOKEN: $CELLGUARD_TOKEN" \ -H "Content-Type: application/json" \ -d '{"shard":"shard-default","actor":"you","justification":"reason"}' ``` ## 许可证 MIT
标签:NIDS, PostgreSQL, Redis, Sidekiq, SLO监控, WebSocket, 仪表盘, 依赖分析, 分布式系统, 可靠性控制, 响应大小分析, 审计追踪, 容器化, 工作流管理, 开源框架, 执行环境, 持续部署, 持续集成, 搜索引擎查询, 操作面板, 故障响应, 日志审计, 服务网格, 治理框架, 测试用例, 混沌工程, 监控告警, 策略即代码, 系统稳定性, 聊天机器人安全, 自动化平台, 自动化运维, 自我修复, 请求拦截, 风险预算