Konsistensi Penganoniman: Preset untuk Audit GDPR Konsisten
Semasa menjalankan audit GDPR, organisasi anda mungkin perlu menganonimkan:
- 5,000 tiket sokongan pelanggan
- 2,000 email klien
- 500 dokumen kontrak
- 300 rekod pembayaran
Jika anda menganonimkan setiap dokumen secara bebas, ID pelanggan yang sama mungkin diubah dengan cara yang berbeza:
Dokumen A: "Pelanggan CUST_2024_5731 telah membatalkan" Dokumen B: "Pelanggan 5731 membuat keluhan"
Dengan penganoniman bebas:
- Dokumen A → "Pelanggan [CUSTOMER_1] telah membatalkan"
- Dokumen B → "Pelanggan [REDACTED] membuat keluhan" ← inconsistent
Untuk audit konsisten, gunakan preset pemetaan yang menurut semua dokumen untuk ID yang sama:
{
"CUSTOMER_5731": "[CUSTOMER_A]",
"EMPLOYEE_1234": "[EMPLOYEE_B]",
"ORDER_9876": "[ORDER_C]"
}
Pembinaan Preset Pemetaan Konsisten
Langkah 1: Kenal Pasti Semua Entiti di Semua Dokumen
from presidio_analyzer import AnalyzerEngine
analyzer = AnalyzerEngine()
entity_map = {}
for document in all_documents:
results = analyzer.analyze(
text=document["content"],
language="en",
entities=["PERSON", "CUSTOMER_ID", "EMPLOYEE_ID", ...]
)
for entity in results:
key = f"{entity.entity_type}_{entity.text}"
if key not in entity_map:
entity_map[key] = None # Akan ditetapkan di bawah
Langkah 2: Hasilkan Penggantian Unik untuk Setiap ID
import uuid
replacement_map = {}
for original_id in entity_map:
entity_type, value = original_id.split("_", 1)
# Buat penggantian yang koheren
if entity_type == "PERSON":
replacement = f"[PERSON_{len([k for k in replacement_map if k.startswith('PERSON')])+1}]"
elif entity_type == "CUSTOMER_ID":
replacement = f"[CUSTOMER_{uuid.uuid4().hex[:8]}]"
else:
replacement = f"[{entity_type}]"
replacement_map[original_id] = replacement
# Simpan preset untuk digunakan di semua dokumen
with open("anonymization_preset.json", "w") as f:
json.dump(replacement_map, f)
Langkah 3: Gunakan Preset pada Semua Dokumen
preset = json.load(open("anonymization_preset.json"))
anonymizer = AnonymizerEngine()
for document in all_documents:
results = analyzer.analyze(text=document["content"])
# Gunakan preset untuk menggantikan konsisten
anonymized = anonymizer.anonymize(
text=document["content"],
analyzer_results=results,
operators={
entity.entity_type: OperatorConfig(
"replace",
params={
"new_value": preset.get(
f"{entity.entity_type}_{entity.text}",
f"[{entity.entity_type}]"
)
}
)
for entity in results
}
)
document["anonymized"] = anonymized
Manfaat Preset untuk Audit
- Dapat dilacak: Auditor dapat mengikuti rantai kejadian untuk pelanggan tunggal
- Konsisten: ID yang sama muncul dalam bentuk yang sama di semua dokumen
- Dapat diulang: Preset yang sama diterapkan jika dokumen baru ditambahkan kemudian
- Terbukti: Preset ini boleh disimpan sebagai bukti penganoniman GDPR yang tahan terhadap cabaran
Kesimpulan: Preset penggantian memastikan penganoniman konsisten di semua dokumen untuk audit GDPR yang dapat dipertahankan.