Spójność anonimizacji na dokumentach: zestawy reguł GDPR do inspekcji regulacyjnej
Problem
Twoja organizacja anonimizuje 1000 dokumentów. Ale:
- Dokument 1: SSN zastąpiony znakiem [SSN]
- Dokument 2: SSN zastąpiony znakiem ###-##-####
- Dokument 3: SSN usunięty całkowicie
Audytor RODO widzi brak spójności i twierdzi, że nie masz "odpowiednich procedur technicznych" (Art. 32).
Wymagania RODO Art. 32
RODO wymaga "odpowiednich technicznych i organizacyjnych środków":
- Pseudonymizacja: Konsekwentne zastępowanie danych
- Szyfrowanie: Chronienie danych w transporcie
- Integrity checks: Weryfikacja że dane nie zostały zmienione
Brak spójności anonimizacji narusza wszystkie trzy.
Zestawy reguł (Rule Presets)
Rozwiązanie: Definiowanie presetów anonimizacji, które każdy dokument przechodzi identycznie.
Preset 1 - Dane osobowe:
- Imiona i nazwiska → [PERSON_NAME]
- SSN → [SSN]
- Email → [EMAIL]
- Numer telefonu → [PHONE]
Preset 2 - Dane finansowe:
- Numer konta → [ACCOUNT]
- Numer karty kredytowej → [CARD]
- Kwota pieniędzy → [AMOUNT]
Preset 3 - Dane medyczne:
- Diagnoza → [DIAGNOSIS]
- Medicyna → [MEDICATION]
- Lekarz → [PHYSICIAN]
Implementacja
from presidio_anonymizer import AnonymizerEngine
from presidio_analyzer import AnalyzerEngine
class ConsistentAnonymizer:
def __init__(self, preset_name):
self.preset = self.load_preset(preset_name)
self.mapping = {} # Track replacements
def anonymize(self, text):
# Ensure same replacement for same original value
for original, placeholder in self.mapping.items():
text = text.replace(original, placeholder)
return text
def load_preset(self, name):
# Load preset rules from database
presets = {
'personal': ['NAME', 'SSN', 'EMAIL'],
'financial': ['ACCOUNT', 'CARD'],
'medical': ['DIAGNOSIS', 'MEDICATION']
}
return presets.get(name, [])
Audyt dokumentacji
Dla inspekcji RODO, musisz dostarczyć:
1. Policy documentation:
- "Kiedy anonimizujemy dane" (procedura)
- "Jakie dane anonimizujemy" (definicje)
- "Jak anonimizujemy" (presets)
2. Technical implementation:
- Kod / konfiguracja anonimizera
- Test coverage dla każdego presets
- Logs każdej anonimizacji
3. Audit logs:
- Kiedy anonimizowano dokument
- Jaki preset został użyty
- Czy operacja się udała
Częste błędy
Błąd 1: SSN "123-45-6789" zastąpiony "[SSN]", ale "123-45-6788" zastąpiony "XXX-XX-XXXX"
- Rozwiązanie: Wszystkie SSN muszą być zastąpione identycznie
Błąd 2: Email "john@company.com" zachowany, ale "jane@company.com" usunięty
- Rozwiązanie: Wszystkie emale muszą być traktowane jednakowo
Błąd 3: Pierwszy dokument zachowuje daty jako "01/01/2020", drugi jako "1/1/20"
- Rozwiązanie: Normalizuj format dat PRZED anonimizacją
Narzędzia
- Presidio (Microsoft): Pozwala na definicję custom presets
- AWS Macie: Automatyczne identyfikowanie danych + spójne maskowanie
- Google DLP API: Presets dla HIPAA, PCI-DSS, GDPR
Zaključak
RODO Art. 32 wymaga nie tylko anonimizacji, ale spójnej anonimizacji. Zestawy reguł (presets) są dowodem na "odpowiednie procedury techniczne". Brak spójności = brak conformance.