隐私护栏原理
检测时机、规则模型与数据安全
隐私护栏的目标:敏感信息不离开本机,同时不破坏客户端的正常使用(脱敏后响应还原,客户端无感知)。
检测时机与对象
- 检测发生在请求发往上游之前,作用于消息体中的每个字符串值(system、messages、tools 等逐值匹配,不做全文正则扫描整包 JSON);
- 命中的原值只保存在该请求的内存上下文中,不写入数据库;数据库与日志中只可能出现遮罩样本(如
john••••om)。
规则模型
一条规则 = 名称 + 正则表达式 + 动作。内置类别(API 密钥、AWS 密钥、JWT、私钥、邮箱、手机号、内网地址、银行卡号、证件号码、凭据 / 连接串)都是预置规则,可单独启停与改动作;自定义规则完全同构,支持从模板生成(IM Webhook、JDBC 连接串、密钥文件引用、员工工号、车牌号等)。
三种动作:
| 动作 | 请求 | 响应 |
|---|---|---|
| 仅警告 | 放行 | — |
| 拦截 | 拒绝(状态「已拦截」) | — |
| 脱敏 | 原值 → 占位符([EMAIL_1] …) | 占位符 → 原值,客户端无感知 |
响应还原在网关内完成,因此只有 Astra 进程见过原值。
试运行与灰度
- 只检测不处理(dry-run):记录命中并放行,用于上线前观察误报;
- 试用检测:控制台里粘贴文本实时验证当前策略;
- 按类别灰度:高置信(密钥、私钥)先「拦截」,低置信先「警告」。
与请求日志的关系
命中事件出现在两处:隐私护栏页的「拦截日志」,以及对应请求详情的「隐私护栏」区块(已拦截 / 试运行 / 已脱敏 N 处)。把「保存请求与响应内容」打开后,还能对比脱敏前后发给上游的具体内容。
Astra Gate