>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
Python

So maskieren Sie Passdaten und Kartennummern automatisch in Logs

Kürzlich untersuchten wir einen Incident in der Produktion, bei dem ein abgestürzter Service einen vollständigen JSON mit dem Request-Body des Benutzers in ELK abgelegt hat. Er enthielt eine Kreditkartennummer, eine Privatadresse und eine Telefonnummer. Alles zu Logging-Zwecken zu protokollieren ist gängige Praxis, aber wenn solche Dumps im Speicher landen, stellen Sicherheitsteams sehr unangenehme Fragen. Regex-Patterns für jede Kleinigkeit zu schreiben wird schnell mühsam. Sie funktionieren nicht bei komplexen Formaten, übersehen Namen und verwechseln zufällige Zahlenfolgen mit echten Identifikatoren.

Es gibt verschiedene Ansätze für dieses Problem. Eines der ausgereiftesten Open-Source-Tools ist Presidio, entwickelt von der Community unter der data-privacy-Stack-Organisation.

Was steckt dahinter und warum Sie es brauchen

Presidio hilft dabei, personenbezogene Daten (PII) in Texten, Tabellen und sogar Bildern zu finden und zu maskieren. Das Projekt wurde ursprünglich von Microsoft-Ingenieuren als Open-Source-Bibliothek erstellt und ist dann zu einer eigenen Organisation gewechselt, mit über 10.000 Sternen auf GitHub.

Die Kernidee ist einfach: Teilen Sie die Datenschutzaufgabe in zwei unabhängige Schritte auf – Analyse und Anonymisierung.

Statt eines monolithischen Skripts erhalten Sie zwei separate Module:

  1. presidio-analyzer – untersucht eingehenden Text, findet Entitäten wie Reisepassnummern, Telefonnummern, E-Mail-Adressen oder Namen und gibt die Koordinaten der Funde zusammen mit einem Konfidenzwert zurück.
  2. presidio-anonymizer – nimmt die Markierungen des Analyzers und wendet Transformationsregeln darauf an: Ersetzen durch Platzhalter, Verschlüsselung, Maskierung mit Sternchen oder einfaches Entfernen.

Diese Trennung ist praktisch, wenn Sie nur die Tatsache der Datenerkennung protokollieren möchten, ohne den Text selbst zu ändern, oder wenn Sie die Maskierungsmethode flexibel für verschiedene Feldtypen konfigurieren möchten.

So funktioniert die Entitätserkennung

Wenn Sie versucht haben, Text nur mit regulären Ausdrücken zu parsen, kennen Sie deren Hauptnachteil: Regex versteht keinen Kontext. Es findet eine Sequenz von 16 Ziffern, weiß aber nicht, ob es sich um eine Kartennummer oder eine Produkt-SKU in einem Lager handelt.

Presidio kombiniert mehrere Ansätze gleichzeitig:

  • Reguläre Ausdrücke und Prüfsummen (z.B. der Luhn-Algorithmus für Bankkartennummern oder IBAN-Validatoren).
  • Vortrainierte NLP-Modelle basierend auf spaCy oder Hugging Face Transformers für die Named Entity Recognition (NER) – Personen, Orte, Organisationen.
  • Kontextuelle Wortextraktion. Wenn einer Zahlenfolge Wörter wie „Telefon

Ähnliche Projekte