Veto 对比 QueryShield

QueryShield 作为安全 SQL 代理位于 AI 智能体与数据库之间:通过 Claude 将自然语言转为 SQL、AST 级校验(仅限 SELECT,不允许 DDL/DML)、按智能体的行级安全,以及审计日志。Veto 不做转换也不执行——它对智能体已经产出的 SQL 返回确定性裁定。

一览

QueryShieldVeto
架构代理——智能体与 QueryShield 通信,由它与 Postgres 通信边车门禁——智能体调用 analyze_sql,然后自行执行 SQL
自然语言 → SQL是(Claude)否——审查原样写好的 SQL/迁移
允许的操作按策略仅限 SELECT;在 AST 处拦截 DDL/DML分析所有 Postgres 语句;破坏性语句 → block
行级安全按智能体强制执行 RLS非代理——使用 Postgres RLS + Veto 裁定层
接触你的数据库是——执行通过校验的查询从不——仅在临时 Postgres 上做 EXPLAIN
核心中含 LLM是——用于自然语言转换否——仅确定性规则

何时适合 QueryShield

你希望智能体用自然语言提问并获得只读答案,由代理强制执行仅限 SELECT 的访问和租户隔离。执行与审计都在代理内部发生。

何时适合 Veto

你的智能体已经在编写 SQL 或迁移(包括你打算允许的写入),而你需要一道确定性的预检——"这条 DELETE 安全吗?"——而无需把所有流量都路由到代理。Veto 属于护栏品类,而非数据库访问层

不同的品类

QueryShield 与 Veto 并非直接替代关系。QueryShield 控制智能体如何访问数据。Veto 判定某条具体语句是否应当执行。当智能体确有需要运行迁移时,只读代理帮不上忙——Veto 仍会标记一个无防护的 TRUNCATE

通过 MCP 连接 所有对比