概述
Database Sentinel 提供针对数据库后端的安全审计能力。用一句话描述其体验:问一句“audit my database”,就能得到带评分的报告和精确的修复代码。它可作为 Claude Skill(支持 Supabase、MongoDB)、面向任意 AI 客户端的只读 MCP 服务器,或使用自己模型的 CLI 智能体(两者均支持 Supabase)。
三种使用形态
- Claude Skill:在 Claude Code 中加载 SKILL.md 即可。仅 SKILL.md(约 2K tokens)和 core/* 会预先加载,各后端的文件仅在检测到该后端时加载。
- 只读 MCP 服务器:适用于任何 MCP 客户端。提供四个只读 Supabase 工具、一个审计提示,以及作为资源的模式目录。由用户自己的 LLM 完成分析,因此免费。
- CLI 智能体(sentinel-audit):基于 LangGraph 流水线,可配合任意 OpenAI 兼容模型使用,如 OpenRouter、OpenAI 或本地 Ollama。
主要能力
- 发现 RLS 配置错误、暴露的密钥和高风险函数。
- 返回带评分的报告,并生成精确的修复 SQL。
- 只读优先:仅读取系统目录,MCP 服务器和智能体无法写入、删除或丢弃任何内容。
- 不读取用户的行数据:审计角色无权访问表数据;仓库扫描只报告文件与行号,绝不报告密钥值。
- 写入与网络探测需显式选择加入(仅 Skill 形态)。
- 验证步骤:以匿名(anon)身份探测,确认可被利用的发现。
- --fix 仅打印所选发现的修复 SQL,永不执行。
- 成本报告:每次审计的 token、美元花费和工具调用次数。
- 持续监控:提供 github-action-supabase.yml 和 github-action-mongodb.yml 模板,可在迁移、规则或 IaC 变更时、每周或手动运行,在 PR 上评论,并在发现严重问题时使构建失败。
使用方式
Claude Code 一次性安装审计技能与 MCP 服务器(需要 uv):Supabase 用户先创建只读登录(步骤 1),然后在 Claude Code 中运行 /plugin configure database-sentinel@database-sentinel,再提问“Audit my database”。其他 MCP 客户端及完整设置见 MCP 指南。仅使用技能时,Claude Code 会自动识别。CLI 智能体(Supabase,自带模型)可通过 pipx 安装:pipx install "database-sentinel[agent] @ git+…";MCP 服务器可通过 uvx --from git+… sentinel-mcp 安装。可用 sentinel-mcp --role-sql 打印只读角色设置 SQL。版本固定方式:在任意 uvx / pipx 命令中使用 git+https://github.com/Farenhytee/database-sentinel@v1.0.0。Claude Code 插件会自动固定版本。
CLI 默认审计为一次提示加匿名探测验证,约 $0.0007、约 15 秒每次。--deep 改用工具调用智能体,在本方基准上精度相同但成本约 5 倍。
Skill 审计流程
- 检测后端。2. 扫描代码中暴露的凭据。3. 内省 schema、策略和配置。4. 匹配反模式目录。5. 安全探测(选择加入)。6. 评分并报告。7. 生成修复代码。
安全细节
- Supabase 写入探测使用
Prefer: tx=rollback,因此不修改数据。 - MongoDB 写入探测在副本集上使用 session + abortTransaction();独立部署上使用金丝雀插入加删除(选择加入)。
- MongoBleed 网络探测需双重选择加入;部分监控工具会对 42 字节的探测包告警。
- 认证探测使用 .invalid 邮箱域名(RFC 6761)。
- 凭据仅在审计期间驻留内存,并在报告中脱敏。
- MCP 服务器具有五层独立的只读保护。
基准与评测
bench/cases/ 保存已标注的 Supabase schema,应用于本地 Supabase。evals/ 按精确率、召回率和 F1 对三个系统打分:R0(规则,无 LLM)、B0(单次提示)和 A(智能体)。测试集冻结且从不用于调参。测试集(10 个盲测锁定用例,deepseek-v4-flash,各运行 3 次):智能体 F1 0.782,单次提示 0.766,规则 0.559(v0.2.0 结果);v0.2.1 修复了崩溃与超时,智能体 F1 升至 0.831,单次提示升至 0.849,v0.2.0 仍作为盲测数字。A 与 B0 差异在噪声范围内。智能体更精确、在干净项目上误报更少,并以匿名身份验证发现,但成本约为 5 倍。MCP 流程也经过基准测试:模型通过 stdio 驱动真实服务器,测试 F1 0.865,精确率 0.905,关键召回率 1.0。
版本更新要点
- v1.0.1(2026-10-01):修复——没有 WITH CHECK 的 UPDATE 策略不再被报告为允许用户重新分配行所有权(Postgres 会复用 USING 作为检查)。新增开发用例 027。
- v1.0.0(2026-09-30):MCP 服务器发布。四个只读 Supabase 工具、一个审计提示和目录资源。已在托管 Supabase 上验证:会话池化器、带 BYPASSRLS 的只读角色、全部 20 个查询。Q1 现在检查 API 授权:RLS 关闭但 anon / authenticated 被撤销时不再报告为暴露。审计提示知道 SECURITY INVOKER 函数仅具有调用者权限。标准审计成为 CLI 默认。
- v0.2.1(2026-09-30):修复坏的工具参数不再终止审计;OpenRouter 调用路由到最快提供商;智能体最终发现步骤不再列出已驳回的候选。
- v0.2.0(2026-09-29):发布测试结果;新增 MCP 服务器、轻量智能体、基准与评测;修复六个 Supabase 审计查询(Q8 从未匹配、Q16 和 Q19 漏行、Q6/Q13/Q14 条件错误)。
可捕获的模式与研究来源
详细表格见附录 A。MongoBleed 探测(mongobleed-probe.md)是单包只读检测器,已在 mongo:7.0.20(易受攻击)和 7.0.28(已修补)上验证,仅在两次选择加入确认后运行。研究来源包括 CVE-2025-48757、Escape.tech、Veracode、CMU SusVibes、ModernPentest、Supabase Splinter lints、CVE-2025-14847 MongoBleed、Mongoose CVE-2024-53900 / CVE-2025-23061、CIS MongoDB 7 Benchmark 等。
适用场景
适用于使用 Supabase 或 MongoDB 的开发者、vibe-coding 项目作者,以及希望以低门槛、低成本方式持续检查数据库安全配置(RLS、策略、密钥暴露、高风险函数)并获取修复 SQL 的团队。也适合集成到 CI 中作为安全回归门禁(规则版免费)。
限制与说明
- 默认只读,不读取表数据;写入与网络探测仅在 Skill 形态下且需显式选择加入。
- 修复 SQL 永不自动执行,需用户自行应用。
- 部分后端支持情况:Supabase 支持 Skill、MCP 服务器和 CLI 智能体;MongoDB 在 Skill 形态下支持。
- 价格、收费与托管版 Locksoup 的具体定价暂未提供。
- 许可证:MIT;例外:database_sentinel/agent/、database_sentinel/mcp_server/ 和 database_sentinel/kb/ 为 AGPL-3.0,向 AGPL 目录贡献需要 CLA。
- 命名历史:Supabase Sentinel(v1)→ Database Sentinel(v3,多后端)。supabase-sentinel 名称仍可通过 compat/supabase-sentinel/ 使用。
相关链接
- 仓库:https://github.com/Farenhytee/database-sentinel
- MCP 服务器设置和使用指南见仓库内文档
- 托管版本:Locksoup(提供 Supabase 安全审计、定时复查和告警)