Community研究與資料分析github.com

johnsmithCA-sta/privacy-audit

PII 與 PIPL/GDPR 審計代理人技能:17 類敏感欄位 + 5 種憑證格式,抗誤報,CI 退出碼 · 個人資料脫敏審查

privacy-audit 是什麼?

這項技能(Privacy Audit)是一個專為 AI 代理人(如 Claude Code、Cursor)設計的在地化隱私合規審計工具,主要用於掃描本地技能包、程式碼庫或資料目錄,識別並報告個人識別資訊(PII)與硬編碼憑證。它支援 17 種敏感欄位(如身分證號、手機號、銀行卡號)和 5 種常見憑證格式(如 GitHub Token、OpenAI Key),並採用 MOD 11-2 和 Luhn 等校驗演算法來降低誤報率。技能提供結構化 JSON 與互動式 HTML 報告,並透過退出碼(0/1/2)與 CI/CD 流程整合,在發佈前充當合規閘門。它特別針對中國法規(如《個人資訊保護法》、GB/T 35273)進行設計,提供六維度的人工審查框架和標準化報告模板,確保代理人在部署前符合資料保護要求。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add johnsmithCA-sta/privacy-audit

Installed? Explore more 研究與資料分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

個人資料脫敏審查(privacy-audit)

用途

對本地技能包、程式碼庫、資料目錄執行個人資料脫敏合規審查,產出分級問題清單與標準審查報告。基於中國法域:《個人資訊保護法》(主席令第91號)、《資料安全法》、《網路安全法》(2025修正)、GB/T 35273-2020、GB/T 45574-2025(2025-11-01 實施)、GB/T 43697-2024、《個人資訊保護合規審計管理辦法》(2025-05-01 施行)等。審查從嚴:凡無明確依據允許的處理一律按「不得」執行。

適用場景:AI 技能/程式碼/文件發佈前安全檢查、資料集對外分享前脫敏核驗、日誌與配置洩漏排查、合規審計報告產出。 定位區分:本技能是「審查/審計」(發現 + 分級 + 整改建議 + 依據索引),不是「脫敏執行器」。需要直接遮罩/替換資料的場景請使用脫敏工具類技能;本技能負責在事前判定「該不該發、哪裡違規、依據哪條法規」。 商業化定位(v1.2.0):面向「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"

# v1.1.0 批次目錄掃描(多個目錄合併審計)+ 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 號 / 統一社會信用代碼(v1.1.0 新增)
  • 檢測 5 類硬編碼憑證:SkillHub key / GitHub token / OpenAI key / 騰訊雲 SecretId / COS 臨時憑證
  • 退出碼(可接入 CI 閘門):0=通過;1=高危命中(禁止發佈);2=中敏感命中(需人工確認)
  • --json:結構化報告(含 scanned_roots/summary/verdict/findings,CI 可消費);--html:自包含可視化報告(總覽卡片 + 分級分佈圖 + 按檔案分組命中清單,離線可看)
  • --strict:一般級別命中也判失敗;--quiet:僅輸出結果行

對話式掃描(v1.2.0 新增,適配扣子等對話場景,無需本機目錄):

# 單檔案掃描(使用者上傳的附件,如 .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. 合規依據核驗:法規名稱/文號/日期與國家標準編號以規範第六部分為準,不得改動

第三步:整改與驗證

  • 高風險(P0)必須修復:移除硬編碼憑證 → 環境變數/金鑰管理;明文敏感資料 → 加密儲存 + 遮罩展示
  • 修復後重跑 L1 掃描,確認退出碼降為 0(或僅剩低風險)
  • 中風險(P1)建議下輪迭代修復;低風險(P2)記錄後續最佳化

第四步:輸出標準報告

以 references/審查報告模板.md 為結構產生報告:審查對象與資料畫像 → 結果總覽 → 分級問題清單(P0/P1/P2)→ 合規項核驗 → 整改優先順序 → 檢查清單對照表 → 結論與免責宣告。

依賴清單

  • Python 3.8+(標準庫:argparse / json / os / re / sys)
  • 無第三方依賴;可選 --json 輸出結構化報告供 CI 消費

邊界與安全(紅線)

  1. 不構成法律意見:報告結論必須結合具體業務場景,高敏感場景建議人工複核 + 諮詢合規律師
  2. 報告輸出到掃描目錄之外:避免審計報告被二次掃描命中,也避免報告落進待發佈產物
  3. 全程本地:不呼叫任何雲端 API,不傳輸待審內容
  4. 二進位跳過:.zip/.png/.pdf/.docx/.xlsx/.pyc 等不掃描內容(如需掃描先解壓縮/轉文字)
  5. 禁止刪除:本技能只報告,不刪除、不修改任何被審檔案

踩坑內嵌(經驗教訓,勿重蹈)

坑根因方案(已內建於腳本)
座標常數/隨機長數字串被誤報為身分證/銀行卡純正則只匹配「形狀」不校驗「合法性」身分證 MOD 11-2 校驗碼驗證、銀行卡 Luhn 校驗,校驗不過即誤報跳過
身分證內部數字被手機號/銀行卡正則二次命中正則優先級衝突區間去重:命中區間完全落在更高優先級命中內 → 跳過(如 110101 開頭 6 位不會誤報手機號)
長數字串(如 0.00669342162296594323 座標常數)子字串命中手機號手機號正則無邊界手機號正則加前後數字邊界 (?<![0-9])…(?![0-9])
審計報告寫進掃描目錄被二次命中報告本身含「命中範例」報告輸出到掃描目錄之外(--json 指向外部目錄)
Windows 下中文檔案編碼亂碼檔案可能是 GBK 而非 UTF-8read_text 先試 UTF-8,失敗按可列印字元比例兜底解碼
node_modules/.git 等大目錄拖慢掃描無過濾全掃內建 SKIP_DIRS(.git/pycache/node_modules/.venv/dist/build 等)
正則庫 JSON 新增欄位後腳本行為不一致正則庫與腳本分離導致失同步正則庫 JSON 是唯一事實源,腳本動態載入;新增欄位類型先改 JSON 再跑腳本
正則庫 JSON 中的 pattern 定義文字被自身命中(如「人民醫院」字樣出現在醫院名正則裡)規則定義本身就是敏感詞樣本屬正常現象,自審出現該命中時人工確認為 pattern 定義後忽略即可(保守方向,寧可 REVIEW 不漏報)
「北京市A12345」地名+數字被誤報車牌號車牌正則無邊界,子字串「京A12345」命中車牌正則加前後漢字/字母數字邊界 (?<!…)(?<![一-龥])…(?![…]),結構校驗器(省+字母+長度7/8)雙保險
隨機 18 位數字串有約 1/31 機率通過統一社會信用代碼 GB 32100 校驗模 31 校驗對隨機串天然放行機率USCC 定位「中敏感」(REVIEW 需人工確認)而非高敏感,正是為此留的兜底;負控制測試用真實非法末位
測試樣本標籤自命中(如「偽微信號: xxx」被微信號正則命中)標籤本身含觸發前綴+合法格式屬正確行為(真實場景「微信號: xxx」就該命中);測試樣本設計時避免在標籤中重現觸發前綴
evals/ 用例含虛構敏感樣本導致 preflight --strict 報 phone/email 告警測試用例必須有真實形態的樣本才能測出檢測能力,而發佈門禁的敏感掃描不區分真假發佈自檢時用 --waive phone --waive email --reason "evals 用例含虛構測試樣本,非真實個人資訊" 豁免並落盤留痕;.preflight-waiver.json 發佈前刪除;樣本檔案首行統一標註「虛構測試資料」
隨機 18 位數字串(如時間戳+序號)約 1/11 機率通過身分證 MOD 11-2 校驗被誤報校驗碼只保證合法性不保證真實性,隨機串天然有放行機率屬已知侷限:人工確認為序號/時間戳/流水號後忽略;不要為此放寬正則(寧可 REVIEW 不漏報)

使用範例(對話模擬)

使用者:幫我審查一下 ~/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 項國標索引、附錄工具說明)——審查執行的唯一事實依據
  • references/個人資料脫敏審查要點.md:六維度要點(法規背景與判斷維度詳解;來源檔位 官方 = 法律法規與國標,社群共識 = 公開執法/司法典型案例與行業實務)
  • references/審查報告模板.md:L2 標準報告結構模板
  • references/Changelog.md:版本史唯一事實源(1.0.0 → 當前版本的完整變更記錄與版本口徑說明)
  • evals/:迴歸評測集(10 條可執行用例 + trigger_eval.json 觸發詞意圖集),改動本技能後跑一次驗證沒把既有能力改壞,跑法見 evals/README.md

版本與事實源

  • 當前版本號以 SKILL.md frontmatter 的 version 為準;發佈 tag、README 版本摘要、references/Changelog.md 的當前版本條目全部與之對齊。
  • 歷史變更以 references/Changelog.md 為唯一事實源。SKILL.md 與 README 裡的 Changelog 都只是最近兩版的摘要 + 指向該檔案的連結,不要在各處各記一套完整版本史——三處全量並列必然漂移。
  • 正文裡的 v1.1.0 新增 / v1.2.0 新增 是功能歸屬標註:標註該功能首次出現在哪個版本,屬歷史記錄,不隨當前版本號改動(當前版本已是 1.3.0,標註仍保留原樣)。
  • scripts/欄位檢測正則庫.json 裡的 "version": "1.1.0" 是規則庫版本:獨立於技能版本,只在欄位類型/正則/校驗器實際變更時才遞增。1.2.0 只改了掃描入口(--file/--text/--stdin)未改規則,故規則庫仍為 1.1.0 —— 這是正確狀態,不是筆誤,不要「順手對齊」。

Changelog

完整版本史見 references/Changelog.md(唯一事實源),下表為最近兩版摘要。

| 日期 | 版本 | 變更類型 | 變更內容 | 來源 | |---|---|---|---| | 2026-09-06 | 1.3.1 | 最佳化 | 新增站內標籤(隱私保護/脫敏/PII/個人資訊保護等 6 項),功能無變化 | SkillHub 端最佳化 | | 2026-08-29 | 1.3.0 | 最佳化 | 觸發詞覆蓋率 58% → 100%(新增 evals/trigger_eval.json 意圖集 16 條 + 觸發詞簇擴至 30 條);description 由 444 字元收斂至 238 字元,細節下沉正文;新增 evals/ 可執行評測用例集 10 條(--run --aggregate 均分 1.00);新增 references/Changelog.md;確立版本與版本史兩處事實源口徑 | 體檢報告整改 | | 2026-08-19 | 1.2.0 | 新增 | 腳本新增 --text/--stdin/--file 單檔案/文字掃描入口(適配扣子對話式輸入,無需本地目錄);定位收斂為「發佈前合規閘門」;新增商業化定位說明 | 扣子上架改造 |

(1.1.0 及更早條目見 references/Changelog.md)

免責宣告

本技能由 AI 輔助生成,僅供參考,不構成正式法律意見,不能替代具有執業資格的律師。具體合規判斷應結合業務場景諮詢專業法律人員,並以最新生效法律法規為準。

相關技能