在 agent 结果路径上,FutrixData 会在结果行返回 MCP、Skill 或 CLI 调用方之前,将敏感结果值替换为密钥派生的加盐值的哈希字符串。替换采用基于本地密钥的确定性散列算法,密钥派生自存储在操作系统级密钥库中的本地密钥。确定性是关键所在:agent 即使看不到原始值,也仍然可以执行连接、分组与计数。
传统脱敏在数据存储前或在 UI 显示之前重写值。面向 AI agent 的 PII 脱敏把重写时机移到结果离开数据库的那一刻 — 即结果行从数据库流向 LLM 上下文之前。agent 仍然能拿到格式正确、连接键稳定、等值语义保留的行;它只是看到 masked:v1:8f3a1c9b72e04d11,而不是 alice@example.com。
这一点之所以重要,是因为一旦数据进入 agent 的上下文,它就可能流向外部模型、插件、日志系统、调试抓取与 token 转发服务 — 这些都是企业治理无法触及的位置。
FutrixData 内置一个L1~L5 敏感度分级模型,等级可配置,默认如下。
| 等级 | 含义 | 示例 |
|---|---|---|
| L1 公开 | 非敏感的业务数据 | id、status、created_at |
| L2 内部 | 内部标识与元数据 | user_id、session_id、request_id |
| L3 机密 | 间接的个人信息、行为、位置 | ip_address、user_agent、device_id |
| L4 敏感 | 直接的个人信息、财务、医疗 | email、phone、salary、date_of_birth |
| L5 关键 | 凭证、支付工具、高敏感 PII | password、credit_card、api_secret、home_address |
默认情况下,agent 可以明文获得 L1–L3,L4 与 L5 在到达 agent 前会被替换为稳定哈希。agent 可访问范围可编辑,例如你也可以将默认设置改为仅允许 agent 访问 L1–L2。
脱敏对每个值确定性地计算:
masked:v1: 前缀,将脱敏后的数据返回给 agent。同一安装内同一输入产生同一密钥,因此 agent 仍然可以做连接、分组、distinct 计数与等值判断 — 全程看不到原始值。映射在没有本地密钥时是单向的。确定性脱敏降低泄露面 — 它不是完整的匿名化。逆向请见 脱敏限制。
FutrixData 支持两种敏感度分级方式 — 两者写入同一分级存储。
GDPR 第 5 条第 1 款 (c) 项要求数据最小化 — 仅处理必要的内容。欧洲数据保护委员会已明确:当假名化数据仍可通过附加信息被关联回个人时,它仍然属于个人数据。PII 脱敏并不会"让合规消失";它降低泄露面,让结果离开数据库的环节更易于审计与治理。审计日志会记录每次查询中哪些列被脱敏,这就给安全团队提供了具体可证明的依据。
// 来自 PostgreSQL 的原始行
{ "id": 1042, "email": "alice@example.com", "phone": "+14155550123", "status": "active" }
// 交付给 agent 的行(默认 L1–L3 访问范围)
{ "id": 1042, "email": "masked:v1:8f3a1c9b72e04d11", "phone": "masked:v1:b219ac74e1d908f2", "status": "active" }{
"data_source": "prod-postgres",
"table": "users",
"fields": [
{ "name": "id", "type": "bigint" },
{ "name": "email", "type": "varchar(254)" },
{ "name": "phone", "type": "varchar(20)" },
{ "name": "status", "type": "varchar(16)" }
]
}L4(email、phone、salary、date_of_birth 等)与 L5(password、credit_card、api_secret、home_address)在到达 agent 前会被脱敏。L1–L3 以明文返回。可访问范围按 agent 可编辑。
没有本地密钥不可逆。脱敏是基于本地密钥的确定性 HMAC-SHA256;HMAC 密钥按(数据源、字段)派生自存储在操作系统级密钥库的本地密钥,永远不离开主机。同一安装内同一输入产生同一哈希值,但要逆向哈希值必须拥有本地密钥,而且 FutrixData 只取前 16 位哈希值,碰撞概率极低,基本不可逆。需要注意的一点是:低基数输入空间(布尔值、性别、按年的年龄、小型枚举)仍然易受枚举攻击 — 任何能通过网关提交已知输入的人,或持有本地密钥的人,都可以为这类字段构建查找表。Console(已授权人类)路径默认返回原始行;只有 agent 结果路径会被脱敏。请见 limitations — 确定性脱敏降低泄露面,并不能将数据集匿名化以供公开发布。
不会。同一输入产生同一脱敏输出,因此对脱敏列仍可进行连接、group by、count distinct 与等值判断。对脱敏字段会失去排序与子串操作 — 这些操作应在代理内部进行,而不是在 agent 侧。
可以。等级名称、描述、示例字段以及 agent 可访问的范围都可编辑。还可以新增按数据源或按表的覆盖 — 例如把 orders.notes 在生产中分为 L4,在 staging 副本中分为 L1。
一般情况下是的。欧洲数据保护委员会将仍可通过附加信息关联回个人的假名化数据视为个人数据。脱敏属于"减小泄露面",不是合规的万能开关 — 但它在 GDPR 第 32 条下属于可论证的技术措施。
逐行脱敏是每个敏感字段一次基于本地密钥的 HMAC — 对常见行尺寸耗时不到 1 毫秒。多数查询的主要开销来自数据库本身和 LLM 往返,而不是脱敏。
在 AI Chat / schema 知识 / 表关系梳理的辅助等路径上可能会 — 这与查询结果行是分开的路径。schema 元数据可能包含表名、列名、类型、索引与注释。结果脱敏并不会自动覆盖 schema 元数据,因为 schema 本身就是需要被AI理解的结构,而不是数据。桌面应用为每个数据源都暴露了 schema 向 LLM 发送的开关,且每次发送都会被记录以便审计。如果 schema 本身蕴含商业机密(KYC 表、监管代码、内部产品名),请关闭对应数据源的开关。完整数据路径图请见 trust。
不会 — 这是设计如此。Console 是已授权人类查询的路径。键盘前的工程师就是检查者。脱敏作用于 agent 结果路径(MCP、Skill、agent CLI)。如果不想让某用户看到原始值,请在数据源本身做访问控制,而不是在 Console 端控制。
免费桌面应用支持 macOS、Windows、Linux。生产环境部署可选自托管 Enterprise Edition。