cerberussecurityai/cerberus

GitHub: cerberussecurityai/cerberus

Cerberus 是一套多 runtime 客户端埋点工具集,用于捕获 API 请求、MCP 工具调用和 LLM 调用流量并统一流式传输到安全监控后端。

Stars: 1 | Forks: 0

# Cerberus — 客户端埋点包 这些是你添加到应用程序中、或部署在其前方的库和网关策略,使得 request、MCP tool call 或 LLM call 变得可见。每个集成都针对不同的 runtime,并且它们都会生成相同的事件 schema,因此它们可以互换,并能在同一个部署中混合使用。 已知敏感键名下的值会在客户端进行脱敏,并且在配置了 secret key 时,source IP 会通过 HMAC 进行假名化处理,这两者都在任何数据传输之前完成。 ## 指南 关于这些包用途的背景信息,与你具体使用哪一个无关: - [**保护 MCP 服务器**](./docs/mcp-security.md):tool poisoning、转变为 tool call 的 prompt injection、过度的 agency 以及通过链式调用进行的数据泄露。为什么网络控制会漏掉它们、应该记录什么,以及它们如何映射到 OWASP。 ## 包 | 包 | 用途 | Runtime | 发行版 | |---|---|---|---| | [**cerberus-core**](./cerberus-core/README.md) | Python 集成使用的共享脱敏 + PII 哈希工具 (`SENSITIVE_KEYS`, `sanitize_dict()`, `hash_pii()`) | Python | PyPI | | [**cerberus-django**](./cerberus-django/README.md) | 捕获 HTTP request/response 元数据并通过 WebSocket 进行流式传输的 Django middleware — 只需在 `MIDDLEWARE` 中添加一行 | Python · Django | PyPI | | [**cerberus-mcp**](./cerberus-mcp/README.md) | 可直接替换的 `FastMCP`,用于埋点 MCP tool / resource / prompt 调用 | Python · MCP (FastMCP) | PyPI | | [**cerberus-flex-gateway**](./cerberus-flex-gateway/README.md) | 用于 MuleSoft Anypoint Flex Gateway 的自定义策略 — 无需更改应用代码即可捕获并转发 request 元数据 | Rust → WASM (`wasm32-wasip1`) | 预构建 bundle → 客户自己的 Anypoint Exchange ([INSTALL.md](./cerberus-flex-gateway/INSTALL.md)) | | [**cerberus-envoy-ai-gateway**](./cerberus-envoy-ai-gateway/README.md) | 用于 Envoy AI Gateway 的 OTLP trace bridge — 将网关的 LLM + MCP 遥测数据转换为 Cerberus 事件,只需几个 OTel 环境变量即可部署在网关旁边 | Python · OTLP/HTTP | PyPI / 容器镜像 | **共享测试夹具:** [**parity-fixtures**](./parity-fixtures/README.md) — 语言无关的 YAML 测试用例,用于保持 Python 和 Rust 的脱敏逻辑在字节层面完全一致。 ## 我需要哪一个? - **Django 应用** → [`cerberus-django`](./cerberus-django/README.md) (依赖于 `cerberus-core`) - **MCP 服务器** (FastMCP) → [`cerberus-mcp`](./cerberus-mcp/README.md) (依赖于 `cerberus-core`) - 位于 LLM 提供商 / MCP 服务器前方的 **Envoy AI Gateway** → [`cerberus-envoy-ai-gateway`](./cerberus-envoy-ai-gateway/README.md) (依赖于 `cerberus-core`) - **任何 API / 非 Python 技术栈 / 无需更改代码** → 将 [`cerberus-flex-gateway`](./cerberus-flex-gateway/README.md) 部署在你的服务前方 - **构建新的集成** → 复用 [`cerberus-core`](./cerberus-core/README.md) 的脱敏契约和共享的事件 schema ## 它们是如何协同工作的 - 所有集成都会生成**相同的事件 payload** (`CoreData` / `MCPEventData`),因此 Cerberus 后端 (`event_ingest`) 不需要针对每个客户端进行修改。 - 在任何数据离开客户端**之前**,通过 `cerberus-core` (Python) 或其在 Rust 网关中的移植等效项进行脱敏。脱敏操作将**键名**与 `SENSITIVE_KEYS` 进行匹配,因此它会捕获常见的可疑项,而不是检查具体的值。Source IP 的假名化使用 **HMAC-SHA256**,并且需要配置 secret key;如果没有配置,IP 将以明文形式发送。 - Flex Gateway 策略在 Rust 中重新实现了脱敏逻辑(跨语言之间没有共享的 crate)。**一致性由** [`parity-fixtures`](./parity-fixtures/README.md) **强制保证**:`cerberus-flex-gateway/tests/parity_runner.rs` 和 `cerberus-django/tests/test_parity.py` 使用相同的 YAML 用例,因此任何偏差都会导致 CI 失败。(`cerberus-envoy-ai-gateway` *直接导入* `cerberus-core`,因此不需要 parity runner。) - ⚠️ 如果你修改了 `cerberus-core` 中的 `SENSITIVE_KEYS`(或其他脱敏规则),请务必在**同一个 PR** 中更新相应的测试夹具。 ## 开发与发布 - Python 包使用 `uv build` 构建,并通过 [`./publish_package.sh`](./publish_package.sh) `` (例如 `./publish_package.sh cerberus-core`) 发布到 PyPI。 - [`cerberus-flex-gateway`](./cerberus-flex-gateway/README.md) 会编译为 WASM,并作为预构建的 bundle 分发,每个客户通过内置的 `install.sh` 将其发布到**他们自己的** Anypoint Exchange 中(参见 [INSTALL.md](./cerberus-flex-gateway/INSTALL.md))。维护者通过 `make bundle` 构建 bundle;CI 会将其附加到 `flex-gateway-v*` 的 GitHub Release 上。它也可以作为 `.wasm` 直接放入 Flex Gateway pod 中(Local 模式)。 - [`cerberus-envoy-ai-gateway`](./cerberus-envoy-ai-gateway/README.md) 还以容器镜像的形式提供 (`make image`,推送到你的 registry),并在其 `deploy/` 目录中提供了 Kubernetes manifests。 - 面向贡献者和 AI 助手的仓库范围指南(架构、命令、约定):[CLAUDE.md](./CLAUDE.md)。 ## License 参见 [LICENSE](./LICENSE)。
标签:AI安全, API监控, API集成, Chat Copilot, Django, DLL 劫持, 可观测性, 可视化界面, 大语言模型, 网关, 逆向工具