个人信息脱敏审查(privacy-audit)
用途
对本地技能包、代码库、数据目录执行个人信息脱敏合规审查,产出分级问题清单与标准审查报告。基于中国法域:《个人信息保护法》(主席令第91号)、《数据安全法》、《网络安全法》(2025修正)、GB/T 35273-2020、GB/T 45574-2025(2025-11-01 实施)、GB/T 43697-2024、《个人信息保护合规审计管理办法》(2025-05-01 施行)等。审查从严:凡无明确依据允许的处理一律按"不得"执行。
适用场景:AI 技能/代码/文档发布前安全检查、数据集对外分享前脱敏核验、日志与配置泄露排查、合规审计报告产出;支持对话式平台使用(用户上传附件/粘贴文本即可扫描,无需本地目录)。
定位区分:本技能是"审查/审计"(发现 + 分级 + 整改建议 + 依据索引),不是"脱敏执行器"。需要直接掩码/替换数据的场景请使用脱敏工具类技能;本技能负责在事前判定"该不该发、哪里违规、依据哪条法规"。
触发词
- 脱敏审查 / 隐私审查 / 隐私合规检查 / 合规审查 / 隐私保护审计 / privacy audit / desensitization audit
- 敏感信息扫描 / PII 扫描 / PII scan / 敏感字段检测 / 个人信息扫描 / 数据泄露排查
- 扫描这个目录有没有个人信息 / 扫描这个技能有没有个人信息
- 身份证号扫描 / 检查代码里有没有手机号 / 代码里有没有身份证号 / 银行卡号泄露检查
- 仓库里有没有硬编码密钥 / 日志里有没有明文密码 / 上传文件有没有敏感信息
- 这个技能有没有泄露隐私 / 这个技能能不能发布 / 分享前要不要脱敏 / 数据集脱敏核查
- 脱敏整改建议 / 出一份合规审查报告 / 发布前安全检查 / 上架前合规审查
环境准备
# 依赖:Python 3.8+,纯标准库,无第三方依赖
export SKILL_DIR=~/.workbuddy/skills/privacy-audit # 技能安装路径
export TARGET_DIR=/path/to/待审查目录 # 待审查目录(代码/技能/数据)
export REPORT_DIR=/path/to/报告输出目录 # 建议在扫描目录之外,避免自我命中
执行流程
第一步:L1 自动扫描(先机器,后人工)
# 单目录扫描 + JSON 报告
python3 "$SKILL_DIR/scripts/privacy_audit.py" "$TARGET_DIR" \
--rules "$SKILL_DIR/scripts/字段检测正则库.json" \
--json "$REPORT_DIR/audit_result.json"
# 批量目录扫描(多个目录合并审计)+ HTML 可视化报告
python3 "$SKILL_DIR/scripts/privacy_audit.py" "$TARGET_DIR_A" "$TARGET_DIR_B" \
--rules "$SKILL_DIR/scripts/字段检测正则库.json" \
--json "$REPORT_DIR/audit_result.json" \
--html "$REPORT_DIR/audit_result.html"
- 扫描 17 类敏感字段:身份证号 / 手机号 / 银行卡号 / 邮箱 / IP / 精确地址 / 精确定位坐标 / 医师署名 / 医院机构名 / 密码明文 / 医疗健康信息 / 未成年人信息 / 车牌号 / 护照号 / 微信号 / QQ 号 / 统一社会信用代码
- 检测 5 类硬编码凭证:SkillHub key / GitHub token / OpenAI key / 腾讯云 SecretId / COS 临时凭证
- 退出码(可接入 CI 门禁):
0=通过;1=高危命中(禁止发布);2=中敏感命中(需人工确认) --json:结构化报告(含 scanned_roots/summary/verdict/findings,CI 可消费);--html:自包含可视化报告(总览卡片 + 分级分布图 + 按文件分组命中清单,离线可看)--strict:一般级别命中也判失败;--quiet:仅输出结果行
对话式扫描(无需本地目录):适用于任意 Agent 对话场景——用户上传附件或粘贴文本即可审查,不要求目标在本地有目录。
# 单文件扫描(用户上传的附件,如 .py/.md/.json/.txt 等文本文件)
python3 "$SKILL_DIR/scripts/privacy_audit.py" --file /path/to/uploaded.py \
--rules "$SKILL_DIR/scripts/字段检测正则库.json" \
--json "$REPORT_DIR/audit_result.json"
# 文本内容扫描(用户粘贴的代码/文本片段)
python3 "$SKILL_DIR/scripts/privacy_audit.py" --text "待审文本内容" \
--rules "$SKILL_DIR/scripts/字段检测正则库.json"
# 标准输入扫描(管道传入)
echo "待审文本" | python3 "$SKILL_DIR/scripts/privacy_audit.py" --stdin \
--rules "$SKILL_DIR/scripts/字段检测正则库.json"
第二步:L2 完整审查(六维度人工对照)
以 references/个人信息脱敏审查规范.md 为执行依据,逐维度对照:
- 识别与分类:字段清单是否完整、敏感级别标注、组合重标识风险、未成年人特别标注
- 脱敏方式与场景:去标识化/匿名化选择是否与敏感度匹配(不可逆优先;可逆必须密钥管控)
- 字段级脱敏:逐字段核对存储/展示/传输/共享四环节(重点:身份证/银行卡必须加密存储;界面默认掩码;日志不得留明文)
- 流程与检查清单:33 项清单逐项勾选(A 前置识别 5 项 / B 存储 6 项 / C 展示 6 项 / D 日志 4 项 / E 共享 5 项 / F 测试 2 项 / G 技术保障 6 项)
- 违规场景排查:15 项高频违规场景逐项排查(明文存储、界面未掩码、超范围收集、自动勾选同意、强制人脸、日志明文、泄露未通知、开盒买卖、跨境未评估等)
- 合规依据核验:法规名称/文号/日期与国标编号以规范第六部分为准,不得改动;如需核对法条原文与现行时效性,走「第二步可选:法条实时核验」(无该能力时直接跳过,不影响本维度结论)
第二步可选:法条实时核验(可选增强,无此能力则跳过)
第六维度的法规索引是内置静态依据表;若运行环境提供北大法宝(pkulaw)法律检索能力,可在出报告前把"依据"升级为可溯源的实时核验结果。这是增强项,不是必选项——无连接器时按静态表出报告,结论依然成立,仅在报告脚注标注"依据未经实时核验"。
| 核验动作 | 工具 | 调用要点 |
|---|---|---|
| 取法条原文 | get_article |
入参 title(法规全称)+ number(中文条号,如"第五十一条");返回原文 + 时效性 + url,url 可直接写进报告做溯源 |
| 查时效与文号 | get_law_list |
入参 title 关键词 + timeliness(数组);返回字段名与入参不同名(TimelinessDic / EffectivenessDic),勿按入参名取值 |
调用注意:
get_law_list的效力位阶入参可能不过滤,结果需按标题与效力位阶字段二次筛选。get_article粒度只到"条","条第 x 项"须取回整条后人工定位。- 修订法须查带"(2025修正)"这类后缀的条目,否则会命中已被修改的旧版。
边界:核验只外发法规名称与条号,不含任何待审内容。
第三步:整改与验证
- 高风险(P0)必须修复:移除硬编码凭证 → 环境变量/密钥管理;明文敏感数据 → 加密存储 + 掩码展示
- 修复后重跑 L1 扫描,确认退出码降为 0(或仅剩低风险)
- 中风险(P1)建议下轮迭代修复;低风险(P2)记录后续优化
第四步:输出标准报告
以 references/审查报告模板.md 为结构生成报告:审查对象与数据画像 → 结果总览 → 分级问题清单(P0/P1/P2)→ 合规项核验 → 整改优先级 → 检查清单对照表 → 结论与免责声明。
依赖清单
- Python 3.8+(标准库:argparse / json / os / re / sys)
- 无第三方依赖;可选
--json输出结构化报告供 CI 消费
边界与安全(红线)
- 不构成法律意见:报告结论必须结合具体业务场景,高敏感场景建议人工复核 + 咨询合规律师
- 报告输出到扫描目录之外:避免审计报告被二次扫描命中,也避免报告落进待发布产物
- 待审内容不出本地:扫描与审查全程在本地完成,绝不上传待审内容;仅「法条实时核验」为可选外部调用,且只外发法规名称与条号
- 二进制跳过:.zip/.png/.pdf/.docx/.xlsx/.pyc 等不扫描内容(如需扫描先解压/转文本)
- 禁止删除:本技能只报告,不删除、不修改任何被审文件
结果解读与已知误报
| 现象 | 说明 | 处理 |
|---|---|---|
| 坐标常量、长小数、时间戳+序号等随机数字串被报为身份证 / 银行卡 / 统一社会信用代码 | 校验算法只保证"格式合法",不保证"真实存在",随机串天然有一定概率通过 | 人工确认为序号 / 时间戳 / 流水号后忽略;不为此放宽规则(宁可提示确认,不漏报) |
| 一处身份证号内部的数字又被报为手机号 / 银行卡 | 高优先级命中内部的子串 | 已内建区间去重,一般不重复报;若仍有,按同一处问题计 |
| 技能自审时规则库自身的定义文本被命中(如医院名规则里出现"人民医院"字样) | 规则定义本身就是敏感词样本 | 属正常现象,确认为规则定义后忽略 |
使用示例(对话模拟)
用户:帮我审查一下 ~/projects/skill-demo 这个目录,能不能发布?
Agent:
1. 运行 L1 扫描:
python3 ~/.workbuddy/skills/privacy-audit/scripts/privacy_audit.py ~/projects/skill-demo \
--rules ~/.workbuddy/skills/privacy-audit/scripts/字段检测正则库.json --json ~/reports/demo_audit.json
2. 退出码 1 → 命中 2 处高危(GitHub token 硬编码 + 身份证明文)→ 判定禁止发布
3. 对照《审查规范》做 L2 六维度核对:存储未加密、展示未掩码、日志含明文…
4. 输出分级问题清单(H-1 硬编码 token / H-2 身份证明文存储 / M-1 日志明文…)
5. 整改建议 + 标准报告 → 用户修复后重跑 L1 → 退出码 0 → 允许发布
参考文档
references/个人信息脱敏审查规范.md:完整六维度规范(L1/L2 分层、33 项清单、15 项违规场景、18 部法规 + 6 项国标索引、6.5 法条实时核验记录、附录工具说明)——审查执行的唯一事实依据references/个人信息脱敏审查要点.md:六维度要点(法规背景与判断维度详解;来源档位 官方 = 法律法规与国标,社区共识 = 公开执法/司法典型案例与行业实务)references/审查报告模板.md:L2 标准报告结构模板references/Changelog.md:完整版本历史(1.0.0 起)evals/:可执行评测用例集(10 条扫描用例 + 触发词意图集),可用于验证扫描能力是否符合预期
Changelog
完整版本史见
references/Changelog.md,下表为最近三版摘要。
| 日期 | 版本 | 变更类型 | 变更内容 |
|---|---|---|---|
| 2026-09-09 | 1.4.0 | 新增 | 合规依据新增可选的法条原文实时核验(原文 + 时效性 + 溯源 URL);《网络安全法》(2025修正) 文号补正为主席令第61号 |
| 2026-09-06 | 1.3.1 | 优化 | 新增站内分类标签,功能无变化 |
| 2026-08-29 | 1.3.0 | 优化 | 触发词扩至 30 条,覆盖更多口语问法;新增可执行评测用例集 |
(1.1.0 及更早条目见 references/Changelog.md)
免责声明
本技能由 AI 辅助生成,仅供参考,不构成正式法律意见,不能替代具有执业资格的律师。具体合规判断应结合业务场景咨询专业法律人员,并以最新生效法律法规为准。