Zum Inhalt

Daten-De-Identifizierung

De-Identifizierung ist der Oberbegriff dafür, den direkten Personenbezug von Daten zu verringern und nur den Nutzen zu erhalten, den ein Test tatsächlich benötigt. Maskierung, Generalisierung und Pseudonymisierung sind Techniken auf dem Weg zu diesem Ergebnis; sie sind keine austauschbaren rechtlichen Garantien.

  • Maskierung entfernt sichtbare Zeichen, zum Beispiel mit Mask oder MiddleMask.
  • Generalisierung reduziert die Genauigkeit, zum Beispiel indem nur das Präfix einer Postleitzahl erhalten bleibt.
  • Pseudonymisierung ersetzt einen Wert durch ein stabiles Token. Der aktuelle Hash-Converter ist für denselben Wert, Feldpfad und <setup rngSeed> stabil; ein anderer Feldpfad erhält einen getrennten Tokenraum.
  • Anonymisierung beschreibt den resultierenden Datensatz nur dann, wenn eine Re-Identifizierung vernünftigerweise nicht mehr möglich ist. Ein einzelner Converter kann diese Eigenschaft nicht belegen.

Bevorzuge synthetische Generierung, wenn keine produktionsabgeleiteten Werte benötigt werden. Muss ein Test Quellstruktur oder ausgewählte Beziehungen erhalten, definiere zuerst den notwendigen Nutzen und lege nicht mehr Informationen offen, als dieser Zweck erfordert.

Vollständiges CSV-Beispiel

Die Quelle enthält bewusst eine wiederholte Kunden-ID. Der Descriptor belegt vier verschiedene Transformationen, ohne echte personenbezogene Daten zu verwenden.

data/customers.ent.csv
1
2
3
4
customer_id|full_name|email|postal_code
C-100|Alice Doe|[email protected]|10115
C-100|Alice Doe|[email protected]|10115
C-200|Bob Roe|[email protected]|20095
de-identification.xml
1
2
3
4
5
6
7
8
9
<setup rngSeed="20260730" numProcess="1">
    <generate name="customers" count="3" source="data/customers.ent.csv"
              distribution="ordered" target="CSV">
        <key name="customer_id" script="root.customer_id" converter="Hash('sha256', 'hex')"/>
        <key name="full_name" script="root.full_name" converter="Mask"/>
        <key name="email" script="root.email" converter="MiddleMask(2, 4)"/>
        <key name="postal_code" script="root.postal_code" converter="CutLength(3)"/>
    </generate>
</setup>

Die Endung .ent.csv deklariert eine entity-förmige CSV-Quelle. target="CSV" erzeugt in der Platform ein herunterladbares Ergebnisartefakt; verwende den registrierten LogExporter nur für begrenzte Diagnoseausgaben anstelle eines Artefakts.

Das Ergebnis hat folgende beobachtbare Eigenschaften:

  • beide Vorkommen von C-100 erhalten innerhalb von customer_id dasselbe Pseudonym, C-200 dagegen ein anderes;
  • Namen behalten nur ihre Länge;
  • E-Mail-Werte behalten zwei führende und vier abschließende Zeichen;
  • Postleitzahlen behalten nur die ersten drei Zeichen.

rngSeed ist der zentrale Schlüsselbesitzer für seeded Hashing auf Ausführungsebene. Bei einer Rotation ändern sich die Pseudonyme. Die aktuelle Implementierung isoliert Hashes anhand des Statement-Pfads. Dieses Beispiel belegt daher Verknüpfbarkeit nur innerhalb des Feldes customer_id; automatische Joins zwischen unabhängigen Feldern oder Modellen werden nicht zugesichert. Ein Hash ohne Seed bleibt deterministisch, verliert aber die schlüsselbasierte Trennung und eignet sich bei Werten mit geringer Entropie nicht als Schutzaussage.

Das Schutzziel auswählen

Prüfe den vollständigen Datensatz und das Bedrohungsmodell, nicht nur den gewählten Converter. Direkte Identifikatoren, seltene Kombinationen, Freitext, Zeitstempel und externe Verknüpfbarkeit können eine Person weiterhin identifizieren, nachdem einzelne Felder transformiert wurden. Erhalte eine Beziehung nur dann, wenn der Test sie ausdrücklich benötigt, und rotiere oder trenne Tokendomänen, wenn das nicht der Fall ist.

Ablauf in der gehosteten Platform

Die Database View der Platform kann aus Datenbankmetadaten einen ersten De-Identifizierungs-Descriptor erzeugen. Siehe De-Identifizierungsablauf in der Platform; das resultierende XML unterliegt weiterhin dem hier beschriebenen Core-Vertrag.

Zugehöriger Vertrag