mcpField
D
data-anonymizer

data-anonymizer

github.com/dkyazzentwatwa安全12469 次安装29 周前更新
代码仓库

关于 data-anonymizer

data-anonymizer 用于检测并处理文本和结构化数据中的个人身份信息,提供多种替换策略、CSV 处理和可选的可逆令牌映射。

主要功能

  1. 01检测常见个人身份信息
  2. 02支持遮蔽、删除、哈希或虚假数据替换
  3. 03处理指定或自动识别的 CSV 列
  4. 04可选的可逆令牌映射
  5. 05自定义模式与审计报告

适用场景

  1. 01清除客服日志中的个人身份信息
  2. 02匿名化数据库导出数据以供分析
  3. 03根据生产环境 CSV 创建测试数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill data-anonymizer

安装后在 Claude Code 中输入/data-anonymizer确认已加载。

附带文件scripts/data_anonymizer.pyscripts/requirements.txt

详细介绍

数据匿名化工具

检测并屏蔽文本文件和结构化数据中的个人身份信息(PII)。支持多种屏蔽策略,并可大规模处理 CSV 文件。

快速开始

from scripts.data_anonymizer import DataAnonymizer

# Anonymize text
anonymizer = DataAnonymizer()
result = anonymizer.anonymize("Contact John Smith at [email protected] or 555-123-4567")
print(result)
# "Contact [NAME] at [EMAIL] or [PHONE]"

# Anonymize CSV
anonymizer.anonymize_csv("customers.csv", "customers_anon.csv")

功能

  • PII 检测:姓名、电子邮件、电话号码、SSN、地址、信用卡、日期
  • 多种策略:屏蔽、涂黑、哈希、替换为虚假数据
  • CSV 处理:匿名化指定列或自动检测
  • 可逆令牌:可选择启用映射以进行去匿名化
  • 自定义模式:添加自己的 PII 模式
  • 审计报告:列出所有检测到的 PII 及其位置

API 参考

初始化
anonymizer = DataAnonymizer(
    strategy="mask",      # mask, redact, hash, fake
    reversible=False      # Enable token mapping
)
文本匿名化
# Basic anonymization
result = anonymizer.anonymize(text)

# With specific PII types
result = anonymizer.anonymize(text, pii_types=["email", "phone"])

# Get detected PII report
result, report = anonymizer.anonymize(text, return_report=True)
屏蔽策略
text = "Email [email protected], call 555-1234"

# Mask (default) - replace with type labels
anonymizer.strategy = "mask"
# "Email [EMAIL], call [PHONE]"

# Redact - replace with asterisks
anonymizer.strategy = "redact"
# "Email ***************, call ********"

# Hash - replace with hash
anonymizer.strategy = "hash"
# "Email a1b2c3d4, call e5f6g7h8"

# Fake - replace with realistic fake data
anonymizer.strategy = "fake"
# "Email [email protected], call 555-9876"
CSV 处理
# Auto-detect PII columns
anonymizer.anonymize_csv("input.csv", "output.csv")

# Specify columns
anonymizer.anonymize_csv(
    "input.csv",
    "output.csv",
    columns=["name", "email", "phone"]
)

# Different strategies per column
anonymizer.anonymize_csv(
    "input.csv",
    "output.csv",
    column_strategies={
        "name": "fake",
        "email": "hash",
        "ssn": "redact"
    }
)
可逆匿名化
anonymizer = DataAnonymizer(reversible=True)

# Anonymize with token mapping
result = anonymizer.anonymize("John Smith: [email protected]")
mapping = anonymizer.get_mapping()

# Save mapping securely
anonymizer.save_mapping("mapping.json", encrypt=True, password="secret")

# Later, de-anonymize
anonymizer.load_mapping("mapping.json", password="secret")
original = anonymizer.deanonymize(result)
自定义模式
# Add custom PII pattern
anonymizer.add_pattern(
    name="employee_id",
    pattern=r"EMP-\d{6}",
    label="[EMPLOYEE_ID]"
)

CLI 用法

# Anonymize text file
python data_anonymizer.py --input document.txt --output document_anon.txt

# Anonymize CSV
python data_anonymizer.py --input customers.csv --output customers_anon.csv

# Specific strategy
python data_anonymizer.py --input data.csv --output anon.csv --strategy fake

# Generate audit report
python data_anonymizer.py --input document.txt --report audit.json

# Specific PII types only
python data_anonymizer.py --input doc.txt --types email phone ssn
CLI 参数
参数说明默认值
--input输入文件必填
--output输出文件必填
--strategy屏蔽策略mask
--types要检测的 PII 类型all
--columns要处理的 CSV 列auto
--report生成审计报告-
--reversible启用令牌映射False

支持的 PII 类型

类型示例模式
nameJohn Smith、Mary Johnson基于 NLP
email[email protected]正则表达式
phone555-123-4567、(555) 123-4567正则表达式
ssn123-45-6789正则表达式
credit_card4111-1111-1111-1111正则表达式 + Luhn
address123 Main St、City、ST 12345NLP + 正则表达式
date_of_birth01/15/1990、January 15, 1990正则表达式
ip_address192.168.1.1正则表达式

示例

匿名化客户支持日志
anonymizer = DataAnonymizer(strategy="mask")

log = """
Ticket #1234: Customer John Doe ([email protected]) called about
billing issue. SSN on file: 123-45-6789. Callback number: 555-867-5309.
Address: 123 Oak Street, Springfield, IL 62701.
"""

result = anonymizer.anonymize(log)
print(result)
# Ticket #1234: Customer [NAME] ([EMAIL]) called about
# billing issue. SSN on file: [SSN]. Callback number: [PHONE].
# Address: [ADDRESS].
数据库导出符合 GDPR 要求
anonymizer = DataAnonymizer(strategy="hash")

# Consistent hashing for joins
anonymizer.anonymize_csv(
    "users.csv",
    "users_anon.csv",
    columns=["email", "name", "phone"]
)

anonymizer.anonymize_csv(
    "orders.csv",
    "orders_anon.csv",
    columns=["customer_email"]  # Same hash as users.email
)
根据生产数据生成测试数据
anonymizer = DataAnonymizer(strategy="fake")

# Replace real PII with realistic fake data
anonymizer.anonymize_csv(
    "production_data.csv",
    "test_data.csv"
)

# Test data has same structure but fake PII

依赖项

pandas>=2.0.0
faker>=18.0.0

限制

  • 姓名检测可能会漏掉不常见的姓名
  • 地址检测对美国格式的支持效果最佳
  • 特定领域的 PII 可能需要自定义模式
  • 替换为虚假数据时不会保留原始格式

评论

支持 Markdown