工作原理
加密存放、按名引用、全程留痕
- 加密算法
- AES-256-GCM
- 密钥隔离
- 按租户
- 每套餐条目数
- 无上限
-
AES-256-GCM 静态加密,按租户
每个租户用自己独立的主密钥 —— Postgres 行、日志、审计记录里看不到一处明文。
-
按名引用,宏里随手用
在任何宏步骤、HTTP body、AI 工具参数里用 ${vault.MY_KEY},引擎运行时替换。
-
运行日志反向脱敏
运行审计扫一遍参数 blob,凡是命中明文的都替换回 ${vault.NAME} —— 日志写得再宽也不会泄密。
运行审计永远是干净的
反向脱敏意味着同一个密钥不管走 HTTP URL、body、params 还是 note,日志里看到的都是占位符。
# 在 Agentfy dashboard 存:
# SMS_DOMAIN_1 = https://sms.example.com
# SMS_API_KEY = sk-abc123...
# 然后在宏里:
http url="${vault.SMS_DOMAIN_1}/getNumber?key=${vault.SMS_API_KEY}" -> sms
extract sms.body jsonpath="$.phone" -> phone
# 运行历史显示:
# > http url="${vault.SMS_DOMAIN_1}/getNumber?key=${vault.SMS_API_KEY}" → sms
# 永远不会:
# > http url="https://sms.example.com/getNumber?key=sk-abc123..." → sms 把凭证管理这件事做对
AES-256-GCM 静态加密
每个租户用自己独立的主密钥加密。Postgres 行、日志、审计记录里通通看不到明文 —— 只有运行时受授权的处理器才能解。
模板插值
在任意宏步骤里用 ${vault.MY_KEY} 引用。引擎运行时替换成真值,写日志时再反向替换回占位符。
密钥 vs 常量两种类型
密钥(操作员能写不能读)和常量(有权限的操作员可以揭开看)。同一个 UI,可见性不同。
变更历史
每一次新增 / 修改 / 删除都留下审计 —— 谁、什么 IP、什么时间。能看到改了什么,但看不到值本身。
日志反向脱敏
运行审计会扫一遍整个参数 blob,凡是命中明文值的都替换回 ${vault.NAME} —— 哪怕日志写得太宽,底层值也不会漏出去。
租户级隔离
每个租户有自己的密钥命名空间,跨租户读取在物理上就不可能。平台管理员同样看不到别人租户的明文。