codethor0/boundary-layer
GitHub: codethor0/boundary-layer
BoundaryLayer是一个本地防御性AI基础设施安全实验室,用于模拟和强化AI系统安全。
Stars: 0 | Forks: 0
# 边界层
有关完整的图表集(包括每个实验室的流程和CI验证的13个图表),请参阅[docs/DIAGRAMS.md](docs/DIAGRAMS.md)。服务端口、指标和实验室行为在[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)中记录。
## 包含的实验室
| 实验室 | 端点 | 风险 |
|-----|----------|------|
| 工具路由器注入 | `POST /labs/tool-router/run` | 检索中毒路由到破坏性工具 |
| Redis状态篡改 | `POST /labs/redis/run` | 未签名的会话blob允许提权 |
| 平面认证/授权 | `POST /labs/authz/run` | 广泛的令牌访问受限工具 |
| 文件上传注入 | `POST /labs/file-upload/run` | 不安全的提取与沙盒提取 |
| 提示治理 | `POST /labs/governance/run` | 不完整删除导致下游记录孤儿 |
| PostgreSQL写入风暴 | `POST /labs/postgres-write-storm/run` | 逃逸的提示记录饱和PostgreSQL写入器 |
| 断路器 | `POST /labs/circuit-breaker/run` | 没有背压的无界推理工作 |
| SSE耗尽 | `POST /labs/sse-exhaustion/run` | 无界SSE流耗尽工作单元和内存 |
| 提示缓存隔离 | `POST /labs/prompt-cache-isolation/run` | 共享提示前缀缓存键跨租户泄漏 |
示例:
```
curl -sf -X POST http://localhost:8000/labs/redis/run \
-H "Content-Type: application/json" \
-d '{"mode":"hardened"}'
```
## 实时基础设施组件
| 服务 | 端口 | 角色 |
|---------|------|------|
| API | 8000 | FastAPI实验室编排器和`/metrics`导出器 |
| 模拟LLM | 8080 | 确定性模型模拟器(演示/扩展;实验室默认不调用它) |
| Redis | 6379 | Redis和提示缓存实验室的实时会话和缓存目标 |
| PostgreSQL | 5432 | 治理和写入风暴后端 |
| Prometheus | 9090 | 抓取指标,评估警报规则 |
| Alertmanager | 9093 | 将触发警报路由到本地Webhook |
| 警报Webhook | 8081 | 存储Alertmanager有效载荷以进行验证 |
将`.env.example`复制到`.env`以进行本地覆盖。永远不要提交`.env`。
## 可观察性和警报
API在`GET /metrics`处公开Prometheus指标。实验室运行增加`boundary_layer_lab_runs_total`和特定模式的计数器。Prometheus在`detections/prometheus/alerts.yml`(包括工具注入、Redis篡改、授权拒绝、治理、写入风暴、断路器、SSE、提示缓存和文件上传警报)中评估规则,并将触发警报发送到Alertmanager。Alertmanager路由到`http://localhost:8081/alerts`处的本地Webhook。
```
curl -sf http://localhost:8000/metrics | head -40
curl -sf http://localhost:8081/alerts
```
有关实验室到警报映射,请参阅[docs/CONTROLS_MAP.md](docs/CONTROLS_MAP.md)。指标目录:[docs/METRICS.md](docs/METRICS.md)。指南:[docs/OBSERVABILITY_WALKTHROUGH.md](docs/OBSERVABILITY_WALKTHROUGH.md)。
## 端到端验证
| 目标 | 目的 |
|--------|---------|
| `make smoke` | 快速检查(约30秒):健康、实验室列表、指标、Redis配对 |
| `make demo` | 指导演示:Redis、提示缓存、断路器警报轮询 |
| `make validate-alerts` | 扩展警报传递:六个确定性的警报 |
| `make validate-restore-fresh-volume` | 新卷Postgres备份/恢复证明(重置本地Compose卷) |
|make capture-demo` | 生成净化后的`docs/assets/demo-transcript.txt` |
| `make validate` | 完整本地门(测试、lint、所有实验室、指标、警报传递,包括通过`validate-alerts`的六个警报) |
| `make validate-prod` | 类似生产环境的本地验证配置文件 |
权威的本地门是`make validate`(186个测试、lint、所有实验室、指标、警报传递,包括通过`validate-alerts`的六个警报)。
## 视觉身份
标志资产位于[assets/logo/](assets/logo/README.md)。选定的标志是从[Concept A](assets/logo/CONCEPT_REVIEW.md)派生出的层状管道堆栈。包括SVG标志、文字标志、浅色和深色标志以及社交预览卡片。
## 仓库卫生
有意排除Git中的生成报告、命令转储、本地捆绑包、编辑器文件和构建提示。它们可能存在于本地或审查捆绑包(`make bundle`)中,但不是公共仓库的一部分。
## 命令
| 目标 | 描述 |
|--------|-------------|
| `make setup` | 创建虚拟环境并安装依赖项 |
| `make up` | 构建并启动Docker Compose服务 |
| `make down` | 停止Docker Compose服务 |
| `make smoke` | 快速检查(需要堆栈启动) |
| `make demo` | 带有警报轮询的指导演示(需要堆栈启动) |
| `make test` | 运行pytest(186个测试) |
| `make lint` | 运行ruff lint和格式检查 |
| `make validate-alerts` | 扩展警报传递(6个确定性的警报) |
| `make validate-restore-fresh-volume` | 新卷Postgres证明(重置本地Compose卷) |
| `make capture-demo` | 生成净化后的演示转储 |
| `make validate` | 完整验证管道 |
| `make validate-e2e` | 完整测试 + lint + prod + 本地验证 |
| `make validate-prod` | 类似生产环境的本地验证配置文件 |
| `make backup` | 将Postgres备份到`backups/postgres/` |
| `make bundle` | 在`~/Downloads/`中创建本地审查ZIP |
| `make clean` | 停止服务并删除生成的缓存 |
| `make help` | 列出Makefile目标 |
## 持续集成
GitHub Actions在每次推送到`main`时运行:`make test`、`make lint`、仓库卫生检查、秘密扫描和标志SVG验证。工作流程:[.github/workflows/ci.yml](.github/workflows/ci.yml)。
完整的Docker堆栈验证仍然可在本地和通过手动[Docker Validate](.github/workflows/docker-validate.yml)工作流程中可用。
## 它是为谁而存在的
-
系统架构
``` flowchart LR User[User / curl] --> API[BoundaryLayer API :8000] API --> Labs[Lab Modules] API --> MockLLM[Mock LLM :8080] API --> Redis[(Redis :6379)] API --> Postgres[(PostgreSQL :5432)] API --> Metrics[/GET /metrics/] Prometheus[Prometheus :9090] -->|scrape 15s| API Prometheus -->|firing alerts| AM[Alertmanager :9093] AM -->|POST /alerts| Hook[Alert Webhook :8081] GH[GitHub Actions CI] -->|tests lint hygiene| Repo[boundary-layer repo] ``` 注意:模拟LLM出现在拓扑中用于演示和未来的扩展。实验室运行器在进程内执行,并在启用实时模式时使用Redis/PostgreSQL;在正常实验室运行期间,它们不会调用mock-llm。Docker Compose运行时拓扑
``` flowchart TB subgraph Host[Docker Compose Network] API[api :8000] Mock[mock-llm :8080] Redis[(redis :6379)] PG[(postgres :5432)] Prom[prometheus :9090] AM[alertmanager :9093] Hook[alert-webhook host 8081 to 8080] end API --> Mock API --> Redis API --> PG Prom -->|scrape api:8000| API Prom --> AM AM --> Hook ``` 注意:`API --> Mock`显示了可选的模拟LLM伴随服务。正常实验室执行保持在API容器内进行。实验室执行流程
``` sequenceDiagram participant User participant API as BoundaryLayer API participant Lab as Lab Module participant Metrics as Metrics Registry participant Infra as Redis or PostgreSQL User->>API: POST /labs/{lab}/run API->>API: Validate mode and fields API->>Lab: Execute vulnerable or hardened path Lab->>Infra: Live or fallback interaction Lab->>Metrics: Record counters and gauges Lab-->>API: Structured result dict API->>API: Strip internal metric keys API-->>User: lab mode blocked risk control events summary ```可观察性和警报管道
``` flowchart LR API[API /metrics] -->|scrape| Prom[Prometheus] Prom --> Rules[alerts.yml rules] Rules -->|firing| AM[Alertmanager] AM --> Hook[Local webhook :8081] Validate[make validate] -->|trigger circuit breaker| API Validate -->|poll GET /alerts| Hook ```信任边界模型
``` flowchart TB subgraph Untrusted[Untrusted Inputs] Req[Lab requests] Retrieved[Retrieved content] FileMeta[Synthetic file metadata] Prefix[Synthetic prompt prefix] Work[Work units and streams] end subgraph Controls[Boundary Controls] Val[Request validation] Policy[Mode policy] Wrap[Untrusted wrapping] NS[Tenant namespacing] Budget[Write and stream budgets] CB[Circuit breaker] end subgraph State[State and Telemetry] Redis[(Redis)] PG[(PostgreSQL)] M[Prometheus metrics] end subgraph Detect[Detection] Rules[Alert rules] AM[Alertmanager] Hook[Local webhook] end Req --> Val Retrieved --> Wrap FileMeta --> Val Prefix --> NS Work --> Budget Work --> CB Val --> Policy Policy --> Redis Policy --> PG Policy --> M M --> Rules --> AM --> Hook ```标签:AI安全, AI构建者, AI系统加固, Alertmanager, Chat Copilot, DevSecOps, Docker, GitHub Advanced Security, PB级数据处理, Python, XML 请求, 上游代理, 代码审查, 反取证, 安全加固, 安全合规, 安全培训, 安全开发, 安全架构, 安全测试, 安全社区, 安全策略, 安全评估, 安全运维, 安全防御评估, 平台工程师, 开源, 提示词设计, 攻击性安全, 教育工具, 无后门, 模拟实验室, 红队平台, 网络代理, 自定义请求头, 请求拦截, 边界层, 逆向工具