SuperAPI AI 工具集

database-sentinel

Database Sentinel 是一套面向 Supabase(兼容 MongoDB)开源数据库后端的只读安全审计工具集,以 Claude Skill、只读 MCP 服务器和 CLI 智能体三种形式提供。它能通过一句“audit my database”触发审计,检测行级安全(RLS)配置缺失、过于宽松的策略、暴露的密钥与高风险函数,并返回带评分的安全报告与可直接使用的修复 SQL。工具默认只读:仅访问系统目录,不读取任何表数据,不执行写、删、改操作;凭据仅在审计期间驻留内存,并在报告中脱敏。审计流程包括检测后端、扫描代码中暴露的凭据、内省 schema/策略/配置、匹配反模式目录、可选安全探测、评分报告与生成修复代码。CLI 默认审计为单次提示加匿名探测验证,成本约 $0.0007、耗时约 15 秒;--deep 模式使用工具调用智能体,精度相同但成本约 5 倍;--fix 仅打印所选发现的修复 SQL,绝不执行。MCP 服务器由用户自己的 LLM 做分析,因此免费。仓库还提供基准评测(10 个盲测锁定用例,3 次运行)与 GitHub Actions 持续监控模板。托管版本为 Locksoup,提供定时复查与告警。项目采用 MIT 许可,部分目录(agent、mcp_server、kb)为 AGPL-3.0。

访问官网

工具介绍

概述

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 审计流程

  1. 检测后端。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 安全审计、定时复查和告警)