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 JohnsonNLP ベース
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 には、カスタムパターンが必要になる場合があります
  • 偽データへの置換では、元の形式が正確に維持されません

コメント