flyhighbarney/cloak
GitHub: flyhighbarney/cloak
一款本地优先的AI安全代理网关,在请求发送至OpenAI或Anthropic之前对PII和密钥进行拦截与脱敏。
Stars: 0 | Forks: 0
# cloakline
**在使用 AI 的同时,避免暴露您公司的隐私信息。**
一款本地优先的 AI 安全网关。支持直接替换 OpenAI / Anthropic。在 PII、密钥和 API key 离开您的网络之前对其进行脱敏。拦截 prompt injection。记录每一个请求。不会有任何数据外传。
## 60 秒安装
**最快方式 —— 无需 clone,无需 Go,只需一条命令:**
```
npx cloakline install
```
适用于 Windows 和 macOS。从 GitHub Releases 下载平台原生二进制文件到 `%LOCALAPPDATA%\cloakline\` (Windows) 或 `~/.cloakline/` (macOS),然后运行平台引导安装程序。在不安装任何内容的情况下也很有用:
```
npx cloakline scan file.py # offline DLP scan
npx cloakline tail # live terminal dashboard
npx cloakline dashboard # open admin UI in browser
```
**源码编译路径(面向开发者):**
```
git clone https://github.com/flyhighbarney/cloakline.git
cd cloakline
```
然后,在 **Windows CMD** 上:
```
install
```
在 **PowerShell** 上:
```
.\scripts\bootstrap.ps1
```
在 **macOS** 上:
```
./scripts/bootstrap.sh
```
每个脚本都会编译这两个二进制文件,信任本地 CA,将 cloakline 注册为开机自启,添加 hosts 文件条目,并在宣布成功之前验证 daemon 是否正在监听。Windows 使用 `:443` 上的计划任务;macOS 使用 `:8443` 上的 LaunchAgent 并通过 `pf` 重定向,以便 `:443` 流量仍能通过非特权端口。要求 PATH 中存在 Go 1.22+。完整的操作指南和手动步骤请参见 [docs/GUIDE.md](docs/GUIDE.md)。
**或者 —— 无需 daemon,只需离线扫描文件:**
```
cloak scan contract.docx
```
**或者 —— 将任何 OpenAI/Anthropic SDK 指向共享的团队网关:**
```
export OPENAI_BASE_URL=https://gateway.your-company.com/v1
export OPENAI_API_KEY=sk-gw-your-team-key
```
这就是产品的全部功能。
## 适用人群
### 👩💻 开发者
您已经在使用 Cursor / Claude Code / Copilot。这增加了一个安全层,可以在密钥和 PII *到达*模型*之前*捕获它们 —— 而无需改变您的工作流程。独立的 `cloak scan` 为您提供了一个可以针对任何文件运行的预检。
### 🧑💼 CTO / 工程主管
固定的每月成本。没有您无法设置上限的按请求定价。Admin dashboard 准确显示了被拦截的内容。使用包含的 Docker Compose 配方,5 分钟内即可在您的 VPC 中完成自托管。
### 🛡️ 安全主管
基于 Apache 2.0 协议的开源项目。阅读[威胁模型](docs/threat-model.md)。完全在您的 VPC 中运行。真实的云 API key 永远不会出现在日志或指标中。每个 DLP 决策都是确定且可审计的。对我们不发送任何遥测数据。
## 核心功能
| 功能 | 含义 | 所在位置 |
|---|---|---|
| **兼容 OpenAI + Anthropic** | 任何 SDK 都可以通过更改 base-URL 来使用。Cursor、Claude Code、Continue、自定义脚本 —— 全部支持。 | [`internal/transport/http/`](internal/transport/http/) |
| **具备 4 种操作模式的 DLP** | 根据发现类型执行 Allow / Warn / Redact(通过可逆 token 化)/ Block。 | [`internal/stage/dlptier1/`](internal/stage/dlptier1/) |
| **Prompt injection 防御** | 12 项精选规则与加权评分。无 ML 依赖。误报率 < 1%。 | [`internal/stage/injection/`](internal/stage/injection/) |
| **强化 SSRF 防护的出站请求** | 拦截 `169.254.169.254`(云元数据)、RFC1918、DNS rebinding、跨主机重定向。 | [`internal/httpclient/`](internal/httpclient/) |
| **可逆 token 化** | 在上游调用之前将敏感文本替换为假名,然后在响应时恢复。模型仍然会将客户端的真实名称返回给您。 | [`internal/vault/session/`](internal/vault/session/) |
| **Admin dashboard** | 服务端渲染,零 JS,通过 basic-auth 限制访问。实时查看拦截、脱敏和警告。 | [`internal/adminui/`](internal/adminui/) |
| **审计追踪** | 内存环形缓冲区(1000 条记录)。从不包含明文内容 —— 仅包含发现类型和规则 ID。 | [`internal/audit/`](internal/audit/) |
| **结构化日志** | 仅限 JSON。默认对匹配 `(?i)(key\|token\|secret\|cookie\|auth)` 的所有标头进行脱敏。 | [`internal/obs/log/`](internal/obs/log/) |
## 横向对比
| | **cloakline** | LiteLLM | Portkey | Direct-to-OpenAI |
|---|---|---|---|---|
| 部署方式 | 单一 Go 二进制文件 + Caddy | 需要 Postgres + Redis | SaaS(或繁重的自托管) | N/A |
| DLP | ✅ 4 种操作模式,可逆 token | 第三方 sidecar | 仅限正则表达式 | ❌ |
| Prompt injection 防御 | ✅ 基于规则 + 评分 | ❌ 自带 webhook | 外部合作伙伴(付费) | ❌ |
| 出站请求 SSRF 加固 | ✅ 内置 | ❌ | N/A (SaaS) | N/A |
| OpenAI + Anthropic 入口 | ✅ 两者均原生支持 | ✅ 两者均支持 | ✅ 两者均支持 | 单一提供商 |
| 流式传输 (SSE) | ✅ | ✅ | ✅ | ✅ |
| Admin dashboard | ✅ 服务端渲染,零 JS | 需要独立的 UI | ✅ (云端) | ❌ |
| 在您的 VPC 中运行 | ✅ | ✅ | 仅限企业版 | N/A |
| 定价 | 免费(开源),SaaS 版本为固定费率 | 免费 → 每年 3 万美元 (企业版) | 基于日志(每 10 万次 9 美元) | 按 token 计费 |
| 向供应商发送遥测数据 | **无** | 无 (OSS) / 企业版功能会上报 | 是 | N/A |
| 设置时间 | 5 分钟 | 1–2 小时 | 15 分钟 (云端) | 0 分钟 |
## 快速开始
### 供开发者在本地试用
```
git clone https://github.com/flyhighbarney/cloakline.git
cd cloakline
export OPENAI_API_KEY=sk-your-real-openai-key
go run ./cmd/cloakline --config ./configs
```
现在将任何 OpenAI SDK 指向 `http://localhost:4000/v1`,并使用 [`configs/principals.yaml`](configs/principals.yaml) 中的开发虚拟密钥 `sk-gw-dev-alpha-000000000000`。
### 供团队部署到生产环境
请参见 [`deploy/README.md`](deploy/README.md)。一台 VPS,一条命令,通过 Let's Encrypt 实现 HTTPS,在迎来第一位客户之前的总成本为每月 1–6 美元。
### 供只需要 CLI 的开发者使用
```
go install cloakline/cmd/policyctl@latest
cloak scan file.py
```
或者使用本地编译版本:
```
make build-policyctl
./bin/cloak scan file.py
```
## 命令行工具 (`cloak`)
两种模式:**standalone**(离线工作)和 **client**(与运行中的网关通信)。
```
cloak scan file.py # offline: find PII/secrets in a file
cat contract.txt | cloak scan - # offline: scan stdin
cloak scan --json file.py # offline: JSON output for tooling
cloak login https://gateway.example.com # save credentials
cloak doctor # validate config + probe gateway
cloak chat "summarize this contract" # send a prompt through the gateway
```
`scan` 运行与网关相同的 DLP 模式。您可以在 pre-commit 钩子、CI 中使用它,或者就在您将代码片段粘贴到 ChatGPT 之前使用它。
## 架构
三个平面:
1. **传输平面 (Transport plane)** —— 目前支持 HTTP + SSE;MCP 和 WebSocket 将作为 [tripwires](docs/tripwires.md) 落地。
2. **策略引擎核心 (Policy engine core)** —— DAG 调度器、CEL 策略、session vault、规范化请求/响应类型。
3. **上游平面 (Upstream plane)** —— 目前支持 OpenAI 和 Anthropic;Ollama、Bedrock、Gemini 是适配器形态的 tripwires。
每个请求的流转:transport → 规范化模型 → DAG(normalize → extract → 并行执行 DLP + injection → 重组)→ router(`RouteSnapshot` 的纯函数)→ upstream → 返回时去匿名化。
完整细节请参见 [`docs/architecture.md`](docs/architecture.md)。每个设计决策背后的理由在 [`docs/mission.md`](docs/mission.md) 中。
## 我们刻意没有构建的内容
每个推迟的功能都记录在 [`docs/tripwires.md`](docs/tripwires.md) 中,并附带了将迫使我们构建它的具体信号。重点内容:
- **无云控制平面。** 无需在我们的网站上创建任何账号。
- **无数据库。** 所有状态都在内存中。重启 = 全新状态。
- **无 Web 管理编辑器。** 配置存在于 YAML 中。编辑、重启、完成。
- **无 SSO / SAML。** 推迟到有企业客户提出需求时再做。
- **无多节点 HA。** 对于 10–100 名开发者的团队,一台 VPS 足矣。
这是一种刻意的架构约束。当您的规模超出其承载能力时,[`docs/tripwires.md`](docs/tripwires.md) 会准确告诉您该构建什么。
## 已实现 vs. 规划中
**已发布且可正常使用:**
- OpenAI + Anthropic 入口和上游( unary + SSE 流式传输)
- 具有操作模式的 DLP(allow / warn / redact / block)
- 基于规则的 prompt injection 防御
- 带有状态机的 session vault
- CEL 路由策略
- 强化 SSRF 防护的出站客户端
- 脱敏的结构化日志
- 具有固定词汇表的 Prometheus 指标
- 只读的 admin dashboard
- Docker Compose + Caddy 部署配方
- `cloak` CLI(scan、chat、doctor、login)
**规划中(每一项在 [docs/tripwires.md](docs/tripwires.md) 中都有对应的 tripwire):**
- 通过 Anthropic BYOK 支持 Anthropic Claude Code / Cursor —— 可通过 T-ANTHRO 实现
- Ollama / vLLM 本地模型路由 —— T-OLLAMA
- Bedrock、Gemini 上游 —— T-BEDROCK、T-GEMINI
- 视觉/OCR DLP —— T-DLP-VISION
- ONNX prompt-injection 分类器 —— T-GUARD-INJECT
- MCP 传输 —— T-MCP
- WebSocket(实时)传输 —— T-REALTIME
- 用于合规性的哈希链审计日志 —— T-AUDIT-CHAIN
- SSO / SIEM 集成 —— T-SSO / T-SIEM
## 文档
- [`docs/mission.md`](docs/mission.md) —— 为什么会存在这个项目,以及它刻意不做什么。
- [`docs/architecture.md`](docs/architecture.md) —— 三个平面、DAG 调度器、snapshot 路由。
- [`docs/threat-model.md`](docs/threat-model.md) —— 在您购买或自托管任何人的任何产品之前,请阅读此文。
- [`docs/product-checklist.md`](docs/product-checklist.md) —— 针对 MVP、安全、测试、托卡的客观通过条件。
- [`docs/interface-contracts.md`](docs/interface-contracts.md) —— 代码库核心的 Go 接口。
- [`docs/tripwires.md`](docs/tripwires.md) —— 我们尚未构建的每一项功能,以及将迫使我们构建它的信号。
- [`docs/slos.md`](docs/slos.md) —— 每个 payload 类别的延迟和可靠性 SLO。
- [`docs/telemetry.md`](docs/telemetry.md) —— Metric-name 词汇表。
- [`docs/data-flow.md`](docs/data-flow.md) —— transport × modality × mode × upstream 的支持矩阵。
- [`docs/policy-language.md`](docs/policy-language.md) —— CEL 策略环境参考。
- [`docs/versioning.md`](docs/versioning.md) —— 组件 API 和配置 schema 的版本控制规则。
## 许可证
Apache 2.0。使用它,fork 它,基于它销售服务。请参见 [`LICENSE`](LICENSE) *(在公开项目前添加)*。
## 联系方式
在此 repo 中开启一个 issue。对于任何安全敏感的问题,请写信至 `SECURITY.md` 中的地址 *(在公开项目前添加)*。
标签:AI网关, API代理, EVTX分析, Go, Ruby工具, 提示词注入防御, 日志审计, 版权保护, 网络安全, 隐私保护