# Privacy Audit

> 个人信息脱敏审查技能。当用户要求对技能、代码库、数据目录做发布前个人信息脱敏审查、隐私合规检查、敏感信息扫描、PII 检测、脱敏整改、发布前安全自查（脱敏审查 / 隐私审查 / 合规审查 / 敏感信息扫描 / 敏感字段检测 / 数据泄露排查 / PII scan / desensitization audit / privacy audit / 发布前审查 / 安全检查）时使用。仅做审查、分级与整改建议并产出报告，不做脱敏执行、不用于法律意见出具；高敏感场景建议人工复核。

- Skill: `johnsmithca-sta/privacy-audit` (Agent Skill, multi-file: 39 files)
- Install (CLI): `npx skillmds@latest add johnsmithca-sta/privacy-audit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/johnsmithca-sta/privacy-audit/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- License: MIT
- Author: johnsmithCA-sta (https://skillmd.com/u/johnsmithca-sta)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/johnsmithca-sta/privacy-audit

---


# 个人信息脱敏审查（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 / 敏感字段检测 / 个人信息扫描 / 数据泄露排查
- 扫描这个目录有没有个人信息 / 扫描这个技能有没有个人信息
- 身份证号扫描 / 检查代码里有没有手机号 / 代码里有没有身份证号 / 银行卡号泄露检查
- 仓库里有没有硬编码密钥 / 日志里有没有明文密码 / 上传文件有没有敏感信息
- 这个技能有没有泄露隐私 / 这个技能能不能发布 / 分享前要不要脱敏 / 数据集脱敏核查
- 脱敏整改建议 / 出一份合规审查报告 / 发布前安全检查 / 上架前合规审查

## 环境准备

```bash
# 依赖：Python 3.8+，纯标准库，无第三方依赖
export SKILL_DIR=~/.workbuddy/skills/privacy-audit   # 技能安装路径
export TARGET_DIR=/path/to/待审查目录                  # 待审查目录（代码/技能/数据）
export REPORT_DIR=/path/to/报告输出目录                # 建议在扫描目录之外，避免自我命中
```

## 执行流程

### 第一步：L1 自动扫描（先机器，后人工）

```bash
# 单目录扫描 + 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 对话场景——用户上传附件或粘贴文本即可审查，不要求目标在本地有目录。

```bash
# 单文件扫描（用户上传的附件，如 .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` 为执行依据，逐维度对照：

1. **识别与分类**：字段清单是否完整、敏感级别标注、组合重标识风险、未成年人特别标注
2. **脱敏方式与场景**：去标识化/匿名化选择是否与敏感度匹配（不可逆优先；可逆必须密钥管控）
3. **字段级脱敏**：逐字段核对存储/展示/传输/共享四环节（重点：身份证/银行卡必须加密存储；界面默认掩码；日志不得留明文）
4. **流程与检查清单**：33 项清单逐项勾选（A 前置识别 5 项 / B 存储 6 项 / C 展示 6 项 / D 日志 4 项 / E 共享 5 项 / F 测试 2 项 / G 技术保障 6 项）
5. **违规场景排查**：15 项高频违规场景逐项排查（明文存储、界面未掩码、超范围收集、自动勾选同意、强制人脸、日志明文、泄露未通知、开盒买卖、跨境未评估等）
6. **合规依据核验**：法规名称/文号/日期与国标编号以规范第六部分为准，不得改动；如需核对法条原文与现行时效性，走「第二步可选：法条实时核验」（无该能力时直接跳过，不影响本维度结论）

### 第二步可选：法条实时核验（可选增强，无此能力则跳过）

第六维度的法规索引是内置静态依据表；若运行环境提供北大法宝（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 消费

## 边界与安全（红线）

1. **不构成法律意见**：报告结论必须结合具体业务场景，高敏感场景建议人工复核 + 咨询合规律师
2. **报告输出到扫描目录之外**：避免审计报告被二次扫描命中，也避免报告落进待发布产物
3. **待审内容不出本地**：扫描与审查全程在本地完成，绝不上传待审内容；仅「法条实时核验」为可选外部调用，且只外发法规名称与条号
4. **二进制跳过**：.zip/.png/.pdf/.docx/.xlsx/.pyc 等不扫描内容（如需扫描先解压/转文本）
5. **禁止删除**：本技能只报告，不删除、不修改任何被审文件

## 结果解读与已知误报

| 现象 | 说明 | 处理 |
|---|---|---|
| 坐标常量、长小数、时间戳+序号等随机数字串被报为身份证 / 银行卡 / 统一社会信用代码 | 校验算法只保证"格式合法"，不保证"真实存在"，随机串天然有一定概率通过 | 人工确认为序号 / 时间戳 / 流水号后忽略；不为此放宽规则（宁可提示确认，不漏报） |
| 一处身份证号内部的数字又被报为手机号 / 银行卡 | 高优先级命中内部的子串 | 已内建区间去重，一般不重复报；若仍有，按同一处问题计 |
| 技能自审时规则库自身的定义文本被命中（如医院名规则里出现"人民医院"字样） | 规则定义本身就是敏感词样本 | 属正常现象，确认为规则定义后忽略 |

## 使用示例（对话模拟）

```
用户：帮我审查一下 ~/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 辅助生成，仅供参考，不构成正式法律意见，不能替代具有执业资格的律师。具体合规判断应结合业务场景咨询专业法律人员，并以最新生效法律法规为准。

