深色模式
敏感库 & AI 出口脱敏
ssh_exec / sftp_read / db_query 等 8 个 MCP 工具的出口实时跑脱敏规则;命中即替换为 [REDACTED:xxx] 给 AI,明文 AES-GCM 加密入「敏感库」。你可以在 UI 里 Reveal、转正式凭据、丢弃、CSV 导出。
进入
主界面左侧导航 → 敏感库。
整个链路
1. AI 调用 ssh_exec("cat /etc/mysql/my.cnf")
↓
2. Reeve 后端:远端跑命令
↓
3. 拿到原始输出(含 "password=Sup3rS3cr3t!" 字样)
↓
4. 出口规则引擎:扫描每行
↓ 命中 password 规则
5. 明文 "Sup3rS3cr3t!" → AES-GCM 加密
↓
6. 入库 sensitive_vault 表,生成 vault_id
↓
7. 替换原文为 "[REDACTED:generic_password_line]"
↓
8. 这个替换后的输出**才**返回给 AIAI 永远只看到 [REDACTED:xxx],真值在你的本地敏感库里。
列表
每条记录:
| 字段 | 说明 |
|---|---|
| 种类 (Kind) | credential / token / private_key / url_with_auth / generic |
| 来源 (Source) | ssh_exec / sftp_read / db_query 等 |
| 服务器 | 关联的服务器别名 |
| 规则 | 命中的规则名(如 mysql_root_password) |
| 状态 (Status) | 待处理 / 已转凭据 / 已丢弃 / 已过期 |
| 创建时间 | |
| 过期时间 | TTL 后自动清空 value_enc |
| 访问次数 | Reveal 累计 |
过滤
工具栏:
- 关键字搜索
- 种类 / 来源 / 服务器 / 状态过滤
- 时间范围
Reveal(显示明文)
行内 Reveal 按钮:
- 二次确认弹窗
- AES-GCM 解密
- 弹窗显示明文 + 同时复制到剪贴板
- 10 秒后剪贴板自动清空
- 行为写审计
vault_revealed access_count+++last_accessed_at更新
Reveal 是高危操作
每次 Reveal 都会留审计。建议尽快用「转凭据」把真值搬到 服务凭据 库(结构化存储),而不是反复 Reveal。
一键转凭据
行内 转凭据 按钮(仅 credential / url_with_auth 类型):
- 弹窗:选目标服务器、URL / Host / Port / Username 字段映射
- 确认后 AES-GCM 解密 + 重加密入
installed_services表 - 原敏感库条目状态变
已转凭据(明文 value_enc 清空,留 hash 审计)
之后这个凭据像 AI 装的一样在 服务凭据 页管理。
标记假阳性
如果脱敏规则误命中(例如把"我的密码本"几个字识别成密码):
- 行内 标假阳性 → 状态变
已丢弃+ 加入"误报样本" - (未来)批量误报样本可反馈到规则优化
丢弃
行内 丢弃 按钮:
- value_enc 立即清空
- hash 保留审计
- 状态变
已丢弃
批量操作
列表多选 + 顶部按钮:
- 批量转凭据(同一服务器同一种类)
- 批量丢弃
- 批量删除
CSV 导出
工具栏 CSV 导出 按钮:
- 导出元数据(种类 / 来源 / 规则 / 时间 / 状态)
- 不导出 value_enc(避免误传明文)
- 用于审计报表 / 合规
过期清理
每条敏感库记录可设 TTL:
- 默认 30 天
- Sweeper 每小时检查
expires_at - 到期 → value_enc 清空,状态
已过期,hash 留审计
设置 可改全局默认 TTL。
规则引擎
内置规则
Reeve 内置 20+ 条规则:
| 规则名 | 命中 |
|---|---|
generic_password_line | password\s*[=:]\s*\S+ |
mysql_root_password | MySQL 配置文件里的 password |
aws_access_key | AKIA[0-9A-Z]{16} |
aws_secret_key | base64 长度 40+ 上下文 |
private_key_pem | -----BEGIN .* PRIVATE KEY----- |
ssh_authorized_keys | ssh-rsa AAAA… |
bearer_token | Bearer\s+[A-Za-z0-9._-]+ |
api_key_assign | api[_-]?key\s*[=:]\s*\S+ |
url_with_auth | https?://\S+:\S+@\S+ |
| ... |
用户级 YAML 扩展
<app data>/redaction.yaml:
yaml
rules:
- name: company_internal_token
pattern: 'CMP-[A-Z0-9]{32}'
kind: token
enabled: true
- name: prod_db_user
pattern: 'mysql.*-u\s+prod_admin'
kind: credential
enabled: true可在 UI 敏感库 页 → 工具栏 编辑规则 直接 GUI 编辑。
规则测试器
工具栏 测试规则 按钮 → 弹窗:
- 粘贴一段文本
- 选择要测试的规则集
- 实时显示哪些行命中、命中哪条规则
- 用于:
- 调试新写的规则
- 验证旧规则在新场景下是否仍准确
- 教学
8 个出口触发点
哪些 MCP 工具的输出走脱敏?
| 工具 | 说明 |
|---|---|
ssh_exec | 单命令输出 |
ssh_exec_script | 多行脚本输出 |
ssh_exec_multi | 多机批量输出(每台都过) |
sftp_read | 文件内容 |
sftp_list | (不脱敏,目录列表无明显敏感性) |
db_query | SQL 结果集 |
tail_log | 日志行 |
redis_get / redis_scan | Redis 值 |
人用通道(终端 / SFTP UI / SQL 工作台)不脱敏——是你自己看的。
与审计联动
每个敏感库条目都有对应的审计行:
- 审计行有"跳转敏感库"按钮
- 敏感库条目有"看审计上下文"按钮
形成完整的"AI 触发 → 自动脱敏 → 入库 → 人工处置"证据链。
安全特性
| 特性 | 实现 |
|---|---|
| 明文加密 | AES-256-GCM;DEK 同凭据库 |
| 锁屏失效 | 主密码锁定时无法 Reveal / 转凭据 |
| 剪贴板自清 | 10 秒 |
| 审计完整 | 每次 Reveal / 转凭据 / 丢弃都写 |
| CSV 不出明文 | 仅元数据,不含 value_enc |
| 过期自动清 | sweeper 每小时跑 |
故障排查
| 症状 | 排查 |
|---|---|
AI 看到 [REDACTED] 反复重试 | 在 AI 提示词里告诉它"这是 Reeve 脱敏,不用再 cat 找密码" |
| Reveal 失败 | 主密码可能锁了 |
| 规则没命中 | 「测试规则」预演;调整正则 |
| 旧条目过期了想恢复 | 不可恢复,需要重新跑命令 |