Skip to content

敏感库 & 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. 这个替换后的输出**才**返回给 AI

AI 永远只看到 [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 按钮:

  1. 二次确认弹窗
  2. AES-GCM 解密
  3. 弹窗显示明文 + 同时复制到剪贴板
  4. 10 秒后剪贴板自动清空
  5. 行为写审计 vault_revealed
  6. access_count++ + last_accessed_at 更新

Reveal 是高危操作

每次 Reveal 都会留审计。建议尽快用「转凭据」把真值搬到 服务凭据 库(结构化存储),而不是反复 Reveal。

一键转凭据

行内 转凭据 按钮(仅 credential / url_with_auth 类型):

  1. 弹窗:选目标服务器、URL / Host / Port / Username 字段映射
  2. 确认后 AES-GCM 解密 + 重加密入 installed_services
  3. 原敏感库条目状态变 已转凭据(明文 value_enc 清空,留 hash 审计)

之后这个凭据像 AI 装的一样在 服务凭据 页管理。

标记假阳性

如果脱敏规则误命中(例如把"我的密码本"几个字识别成密码):

  • 行内 标假阳性 → 状态变 已丢弃 + 加入"误报样本"
  • (未来)批量误报样本可反馈到规则优化

丢弃

行内 丢弃 按钮:

  • value_enc 立即清空
  • hash 保留审计
  • 状态变 已丢弃

批量操作

列表多选 + 顶部按钮:

  • 批量转凭据(同一服务器同一种类)
  • 批量丢弃
  • 批量删除

CSV 导出

工具栏 CSV 导出 按钮:

  • 导出元数据(种类 / 来源 / 规则 / 时间 / 状态)
  • 不导出 value_enc(避免误传明文)
  • 用于审计报表 / 合规

过期清理

每条敏感库记录可设 TTL:

  • 默认 30 天
  • Sweeper 每小时检查 expires_at
  • 到期 → value_enc 清空,状态 已过期,hash 留审计

设置 可改全局默认 TTL。

规则引擎

内置规则

Reeve 内置 20+ 条规则:

规则名命中
generic_password_linepassword\s*[=:]\s*\S+
mysql_root_passwordMySQL 配置文件里的 password
aws_access_keyAKIA[0-9A-Z]{16}
aws_secret_keybase64 长度 40+ 上下文
private_key_pem-----BEGIN .* PRIVATE KEY-----
ssh_authorized_keysssh-rsa AAAA…
bearer_tokenBearer\s+[A-Za-z0-9._-]+
api_key_assignapi[_-]?key\s*[=:]\s*\S+
url_with_authhttps?://\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 编辑。

规则测试器

工具栏 测试规则 按钮 → 弹窗:

  1. 粘贴一段文本
  2. 选择要测试的规则集
  3. 实时显示哪些行命中、命中哪条规则
  4. 用于:
    • 调试新写的规则
    • 验证旧规则在新场景下是否仍准确
    • 教学

8 个出口触发点

哪些 MCP 工具的输出走脱敏?

工具说明
ssh_exec单命令输出
ssh_exec_script多行脚本输出
ssh_exec_multi多机批量输出(每台都过)
sftp_read文件内容
sftp_list(不脱敏,目录列表无明显敏感性)
db_querySQL 结果集
tail_log日志行
redis_get / redis_scanRedis 值

人用通道(终端 / SFTP UI / SQL 工作台)不脱敏——是你自己看的。

与审计联动

每个敏感库条目都有对应的审计行:

  • 审计行有"跳转敏感库"按钮
  • 敏感库条目有"看审计上下文"按钮

形成完整的"AI 触发 → 自动脱敏 → 入库 → 人工处置"证据链。

安全特性

特性实现
明文加密AES-256-GCM;DEK 同凭据库
锁屏失效主密码锁定时无法 Reveal / 转凭据
剪贴板自清10 秒
审计完整每次 Reveal / 转凭据 / 丢弃都写
CSV 不出明文仅元数据,不含 value_enc
过期自动清sweeper 每小时跑

故障排查

症状排查
AI 看到 [REDACTED] 反复重试在 AI 提示词里告诉它"这是 Reeve 脱敏,不用再 cat 找密码"
Reveal 失败主密码可能锁了
规则没命中「测试规则」预演;调整正则
旧条目过期了想恢复不可恢复,需要重新跑命令

下一步

受控的远程运维助手 — 让 AI 安全地帮你管服务器