RVRNM/dataguard-fortress

GitHub: RVRNM/dataguard-fortress

DataGuard Fortress 是一款自托管隐私代理,在 AI agent 与外部 LLM 之间实时脱敏 PII、分类敏感度、限流并审计每个请求,保障数据合规与安全。

Stars: 1 | Forks: 0

# 🛡️ DataGuard Fortress **面向 AI agent 的自托管隐私代理 —— 实时 scrub PII、敏感度分类、按租户限流,并审计每一个请求。** [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue?logo=python&logoColor=white)](https://www.python.org/downloads/) [![License](https://img.shields.io/badge/license-Apache%202.0-green?logo=apache)](LICENSE) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/RVRNM/dataguard-fortress/actions/workflows/ci.yml) [![Tests](https://img.shields.io/badge/tests-99%20passing-brightgreen?logo=pytest)](tests/) [![Coverage](https://img.shields.io/badge/coverage-67%25-yellow?logo=codecov)](pyproject.toml) [![Docker](https://img.shields.io/badge/docker-ready-2496ED?logo=docker&logoColor=white)](docker-compose.yml) [![Release](https://img.shields.io/github/v/release/RVRNM/dataguard-fortress?logo=github)](https://github.com/RVRNM/dataguard-fortress/releases) [![GDPR](https://img.shields.io/badge/GDPR-compliant-6a0dad?logo=gdpr)](#gdpr--compliance) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen?logo=github)](/../../pulls)
## 📋 目录 - [面临的问题](#the-problem) - [功能](#features) - [架构](#architecture) - [快速开始](#quick-start) - [配置说明](#configuration) - [仪表盘](#dashboard) - [Scrub 范围](#what-gets-scrubbed) - [多租户](#multi-tenant) - [GDPR / 合规性](#gdpr--compliance) - [安全性](#security) - [CI/CD 流水线](#cicd-pipeline) - [路线图](#roadmap) - [贡献指南](#contributing) - [License](#license) ## 面临的问题 AI agent 通常会将用户数据发送给第三方模型提供商: - 电子邮件、SSN、信用卡 → 以明文形式发送至 OpenAI / Anthropic - 没有供合规审查人员查看的审计跟踪 - 没有针对每个租户的策略执行 - 失控 agent 导致的成本激增无法被及时检测 ## 功能 | 能力 | 作用 | |---|---| | 🔒 **PII Scrubbing** | 52 个内置 regex 预设 —— 电子邮件、SSN、信用卡、API key、加密货币地址、医疗 ID 等 | | 🏷️ **敏感度分类** | PUBLIC → INTERNAL → CONFIDENTIAL → RESTRICTED | | 🚦 **速率限制** | Token bucket + 滑动窗口,可按租户进行配置 | | 📝 **审计日志** | 仅限追加的 JSONL,具备 SHA-256 哈希链完整性 | | 🏢 **多租户** | 每个客户独立 YAML 配置,支持运行时热重载 | | 🔐 **Payload 加密** | 采用 AES-GCM 256 位加密保护静态数据 | | 📊 **实时仪表盘** | 基于 SSE 的实时指标和审计信息流 | ## 架构 ``` AI Agent ──► DataGuard Proxy (localhost:8080) ──► LLM Provider │ ├─ Tenant Resolution → per-tenant YAML policy ├─ Rate Limiting → token bucket + sliding window ├─ Sensitivity Class. → PUBLIC / INTERNAL / CONFIDENTIAL / RESTRICTED ├─ PII Scrubbing → 52 regex presets ├─ Audit Logger → JSONL append-only + hash chain └─ (opt) Encryption → AES-GCM for payloads at rest ``` **设计原则:** - **零出口** —— 所有数据处理均保留在你的基础设施内 - **可插拔后端** —— 速率限制支持 Redis 或内存模式 - **默认故障关闭** —— 发生错误时阻断请求,而不是导致泄露 - **无遥测** —— 代理本身不发起任何外部网络调用 ## 快速开始 ### 选项 1:AI Agent 技能(推荐) 将 DataGuard Fortress 作为 AI agent 的技能进行安装: ``` git clone https://github.com/RVRNM/dataguard-fortress.git cd dataguard-fortress # 为所有检测到的 agent 安装 node skills/dataguard-fortress/install.js --agent all # 或为特定的 agent 安装 node skills/dataguard-fortress/install.js --agent claude node skills/dataguard-fortress/install.js --agent hermes ``` **支持的 agent:** Claude Code, OpenAI Codex CLI, Cursor, Aider, Cline, Continue, OpenCode, Hermes Agent。 ### 选项 2:直接运行代理 ``` # 安装 pip install -e ".[dev]" # 启动 proxy dataguard --port 8080 # 配置你的 AI agent 以使用它 export HTTPS_PROXY=http://localhost:8080 # 验证 curl -x http://localhost:8080 http://httpbin.org/get ``` ### 选项 3:Docker ``` docker-compose up -d --build ``` ## 配置说明 DataGuard Fortress 通过 YAML 或环境变量进行配置。 ### 最小配置 ``` proxy: host: "127.0.0.1" port: 8080 scrubber: enabled: true fail_closed: true # block if scrubbing fails min_confidence: 0.5 # 0.0 = catch all, 1.0 = perfect only ratelimiter: enabled: true rate: 10.0 # tokens / second capacity: 50 # burst capacity per_minute: 600 # hard cap audit: enabled: true log_dir: ./logs tenants: tenants_dir: ./tenants hot_reload: true ``` ### 环境变量 | 变量 | 默认值 | 描述 | |---|---|---| | `DG_ENCRYPTION_KEY` | — | 用于 AES-GCM 加密的 256 位密钥 | | `DG_REDIS_URL` | — | Redis 连接 URL(可选,若不提供则默认使用内存) | | `DG_LOG_LEVEL` | `INFO` | 日志详细级别 | | `DG_CONFIG_PATH` | `./config.yaml` | 配置文件的路径 | ## 仪表盘 启动后访问 **`http://localhost:8080/`**: | 功能 | 描述 | |---|---| | 📊 **实时统计** | 请求/秒、检测到的 PII、阻断的请求 | | 🧪 **Scrub 测试场** | 实时测试自定义文本的 PII scrubbing | | 🔍 **预设浏览器** | 搜索和过滤全部 52 个 PII 预设 | | 📋 **审计信息流** | 基于 SSE 的实时事件流 | ## Scrub 范围 | 类别 | 示例 | 预设数量 | |---|---|---| | **个人** | 电子邮件、电话 (FR/US/国际)、SSN、护照、驾照 | 12 | | **金融** | 信用卡 (Visa/MC/Amex/Discover)、IBAN、SWIFT | 8 | | **API Keys** | OpenAI, Anthropic, AWS, GCP, GitHub, Stripe, Slack, Twilio | 16 | | **加密货币** | BTC 地址、ETH 地址 | 2 | | **医疗** | MRN、医疗保险 ID、NPI、处方、ICD 代码 | 5 | | **网络** | IPv4/IPv6、MAC 地址、带凭据的 URL | 4 | | **政府** | ITIN、EIN、英国 NINO | 3 | | **格式** | JWT、bearer token、SSH key、数据库 URL、VIN、IMEI | 7 | **总计:52 个预设** —— 全部在导入时预编译,开销 < 5 ms。 ## 多租户 每个租户都会获得独立的 YAML 配置,包含独立的速率限制、scrubber 设置和上游目标。 ``` # tenants/acme-corp.yaml tenant_id: acme-corp name: Acme Corporation rate_limit: rate: 20.0 capacity: 100 scrubber: extra_presets: - name: employee_id pattern: '\bEMP-[0-9]{6}\b' replacement: "[REDACTED]" ``` 配置文件支持在文件更改时热重载 —— 无需重启。 ## GDPR / 合规性 | 要求 | 实现方式 | |---|---| | **数据最小化** | PII 在离开您的网络前已被脱敏 | | **被遗忘权** | 按需删除租户配置及审计日志 | | **审计跟踪** | 仅限追加的 JSONL,具备 SHA-256 哈希链 | | **存储限制** | 可配置的日志轮转和压缩 | | **跨境传输** | 100% 保留在您的基础设施上,无数据外流 | | **机密性** | 静态 AES-GCM 加密(可选启用) | ## 安全性 - ✅ **源代码中 0 密钥** —— 经自动化扫描验证 - ✅ **99 个测试通过** —— 包括 lint、类型检查、安全扫描和集成测试 - ✅ **非 root 的 Docker 容器** —— 以非特权用户身份运行 - ✅ **零外部网络调用** —— 无遥测,无回传行为 - ✅ **故障关闭架构** —— 发生错误时阻断请求,而不是导致泄露 - ✅ **依赖项扫描** —— 每次提交都会运行 `pip-audit` ## CI/CD 流水线 | 阶段 | 状态 | 描述 | |---|---|---| | **Lint** | ✅ | `ruff check`, `ruff format`, `mypy` —— 强制执行代码质量检查 | | **Test** | ✅ | 跨 Python 3.11 · 3.12 · 3.13 运行 `pytest` 并报告覆盖率 | | **Security** | ✅ | `pip-audit` (依赖漏洞) + `bandit` (静态分析) | | **Build** | ✅ | `python -m build` —— 验证 wheel 打包完整性 | 所有阶段均会在每次向 `main` 分支推送代码和发起 pull request 时运行。 如果配置了 token,覆盖率报告将上传至 Codecov。 ## 路线图 | 版本 | 功能 | 状态 | |---|---|---| | v0.1 | 核心代理 + PII scrubbing | ✅ 已发布 | | v0.2 | 仪表盘 + 审计日志记录器 | ✅ 已发布 | | v0.3 | 速率限制 + 分类器 + 多租户 | ✅ 已发布 | | v0.4 | Orchestrator 集成 + 完整 API | ✅ 已发布 | | v0.5 | AES-GCM 加密层 | ✅ 已发布 | | v1.0 | 生产环境强化、性能基准测试 | 🔬 计划中 | ## License ``` Apache License, Version 2.0 — January 2004 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ```
**为 AI 主权和数据隐私而用 ❤️ 构建。** [报告 Bug](/../../issues) · [请求功能](/../../issues) · [安全策略](SECURITY.md) · [更新日志](CHANGELOG.md)
标签:AI网关, API代理, 搜索引擎查询, 数据脱敏, 网络安全, 请求拦截, 逆向工具, 隐私保护