密钥与敏感信息卫生

kp-024进阶15 分钟05-质量与安全

一句话定义

密钥卫生的三条防线:密钥不进提示词、AI 产出中只允许占位符、提交前自动扫描;配套泄露应急四步——作废、轮换、排查、复盘。

为什么重要

AI 工作流创造了三条新的泄露路径:你把密钥贴进对话或让 Agent 读取含密钥的文件(密钥离开本机进入服务端上下文);AI 把真实密钥「顺手」写进代码、测试或日志(它见过大量带真实密钥样式的训练数据,可能补全出「很像真的」字符串——甚至偶发补全出真实有效的旧密钥);含密钥的文件被 Agent 改动后随提交入库。密钥泄露的代价直接而巨大:云账单、数据外泄、供应链横向渗透。卫生纪律的成本极低,必须成为肌肉记忆。

前置知识

kp-021(审查清单第二层)、kp-018(Agent 对凭据文件的读取权限)。

核心概念

  • 防线一 · 不进上下文:密钥不贴进任何提示词;含密钥文件(.env 等)加入 Agent 拒读清单;调试报错先脱敏再投喂(kp-014 四件套要过一遍扫描)。
  • 防线二 · 产出占位符化:示例代码一律 <YOUR_API_KEY> 形式;规则文件写明「禁止在任何输出中出现真实密钥」;审查清单第二层固定检查。
  • 防线三 · 扫描兜底:pre-commit 钩子与 CI 跑密钥扫描工具(gitleaks/trufflehog 类),模式覆盖常见密钥格式;扫描是兜底不是第一道防线。
  • 应急四步:①立即作废泄露密钥(不等排查)②轮换所有相关凭据 ③排查泄露窗口(日志/会话历史/仓库历史)④复盘路径并补防线。

原理与机制

三道防线的排序遵循「泄露成本递增」:拦截在上下文之外成本为零;产出端占位符化把成本控制在审查阶段;扫描兜底捕获前两道漏网。应急流程把「作废」放在「排查」之前,因为排查需要时间而密钥每分钟都在风险中——先止血后侦查。另一个机制要点:模型可能生成出与真实密钥格式一致的字符串(训练数据中存在大量泄露密钥样例),「看起来是编的」不能作为安全判断,一切疑似真实凭据的字符串都按真实处理。

实例或案例

操作步骤(接入 AI 工作流时的密钥体检):

  1. 列出工作目录中的敏感文件(.env、凭证 JSON、kubeconfig),全部移出 Agent 可读范围或加入拒读。
  2. 检查规则文件:是否有「禁止输出真实密钥」「示例一律用占位符」两条。
  3. 安装 pre-commit 密钥扫描,跑一次全仓历史扫描,清理存量。
  4. 演练一次应急四步(在测试密钥上),确认每人知道第一步是「作废」。

排错清单(发现密钥已进入 AI 上下文或代码):

  1. 立即在服务商控制台作废该密钥——不是改代码,是先杀权限。
  2. 轮换:所有共用该密钥环境/服务的凭据全部换新。
  3. 排查窗口:会话是否上传过(看服务端数据政策)、仓库历史是否含它(git 历史要过滤重写或作废仓库)、日志与工单是否引用。
  4. 复盘:哪道防线失守?把对应规则升级(拒读清单、扫描模式、提示纪律)。
  5. 若 Agent 曾带密钥执行过网络请求 → 按已外发处理,扩大轮换范围。

公式或模型

本节不适用:安全无量化模型;「泄露密钥存活时间」应趋近于零,作废速度是唯一值得追踪的数字。

图示

生成侧防线                     提交侧防线           事故侧
密钥不进提示 ─▶ 产出占位符化 ─▶ pre-commit 扫描 ─▶ CI 扫描
(拒读清单)    (审查第二层)      (历史扫描)        │泄露
                                                    ▼
                                        作废 → 轮换 → 排查 → 复盘

直观类比

像家里钥匙管理:钥匙不给陌生人(不进提示)、备用钥匙只留假钥匙占位(占位符化)、出门前摸一遍口袋(扫描)——发现丢钥匙第一件事是换锁(作废),而不是回忆丢在哪。

常见误区

  • 「只是本地模型/本地会话,贴一下没关系」:上下文可能被记录用于改进服务;本地 Agent 还可能把密钥写进日志与文件。
  • 「AI 生成的那串是假的」:疑似真实的凭据一律按真实处理,先作废再说。
  • 扫描工具是唯一防线:它兜底捕获的是「格式可识别」的密钥,自定义格式的凭据只有前两道防线能拦。

与其他知识点的关系

kp-018 的凭据风险面是权限层实现;kp-014 投喂调试材料前的脱敏动作属于防线一。

自测题

要点:不进上下文、产出占位符化、扫描兜底;密钥每分钟都在风险中,先止血(作废)后侦查(排查)。

要点:模型可能补全出格式一致甚至真实有效的凭据;外观判断不可靠,作废成本低而泄露代价高。

  1. 三道防线是什么?为何作废排在排查之前?
  2. 为什么「疑似真实的字符串一律按真实处理」?

延伸阅读

本节不适用:具体扫描工具用法差异大,本节只固化跨工具的三防线与应急序列。

#密钥#泄露应急#敏感信息