Snowflake stored procedure
GDPR Profiler
Scannen Sie ein Snowflake-Schema automatisch auf personenbezogene Daten über konfigurierbare Regex-Regeln — ohne jede Tabelle manuell zu durchsuchen.
Ziel
Zu wissen, welche Spalten personenbezogene Daten enthalten, ist der erste Schritt zur DSGVO-Compliance. Der GDPR Profiler erledigt diese Arbeit automatisch: Er verbindet den Systemkatalog mit einer Tabelle von Regex-Regeln, entnimmt Stichproben von Spaltenwerten und schreibt seine Ergebnisse — einschließlich Konfidenz-Score und empfohlener Maßnahme — in einen Ergebnissatz.
Die Erkennungsregeln sind vollständig konfigurierbar über PII_REGEX_RULES. Das Hinzufügen neuer PII-Kategorien bedeutet das Einfügen einer Zeile, keine Codeänderung.
Erforderliche Tabellen
PII_REGEX_RULES
Konfigurationstabelle mit Erkennungsmustern. Fügen Sie Zeilen hinzu, um neue PII-Kategorien zu unterstützen, ohne die Prozedur zu ändern.
PII_SCAN_RESULTS
Ergebnistabelle. Jeder Scan-Lauf schreibt seine Ergebnisse hier mit scan_id und Zeitstempel.
Funktionsweise
Kandidaten ermitteln
Die Prozedur verbindet information_schema.columns mit PII_REGEX_RULES und filtert direkt nach Datentyp. Nicht relevante Spalten werden bereits in SQL herausgefiltert.
Werte sampeln
Für jede Kandidatenspalte wird eine Stichprobe entnommen und die Werte werden gegen das value_regex-Muster geprüft. Das Übereinstimmungsverhältnis wird mit MATCH_THRESHOLD verglichen.
Ergebnisse speichern
Name- und Wert-Konfidenz werden addiert (max. 1.0) und zusammen mit dem Erkennungsgrund und der empfohlenen Maßnahme in PII_SCAN_RESULTS gespeichert.
Parameter
| Parameter | Standard | Beschreibung |
|---|---|---|
| DATABASE_NAME | — | Erforderlich. Zu scannende Datenbank. |
| SCHEMA_NAME | — | Erforderlich. Zu scannendes Schema. |
| SAMPLE_ROWS | — | Erforderlich. Anzahl der pro Spalte entnommenen Stichprobenzeilen. |
| MATCH_THRESHOLD | 0.1 | Mindest-Verhältnis der übereinstimmenden Werte, um eine Spalte zu markieren (0–1). |
| UTILS_DATABASE | current database | Datenbank, in der PII_REGEX_RULES und PII_SCAN_RESULTS gespeichert sind. |
| UTILS_SCHEMA | current schema | Schema, in dem die Utility-Tabellen gespeichert sind. |
Verwendung
1. Basis-Scan
Scannen Sie ein ganzes Schema mit 1.000 Stichprobenzeilen pro Spalte:
CALL DATAMODDER_UTILS.PROFILE_PII(
'MY_DATABASE',
'MY_SCHEMA',
1000
);2. Empfindlichkeit anpassen
Senken Sie den Schwellenwert, um auch schwächere Signale zu erkennen (z. B. 5 % der Werte stimmen überein):
CALL DATAMODDER_UTILS.PROFILE_PII(
'MY_DATABASE',
'MY_SCHEMA',
5000,
0.05
);3. Separate Utility-Lokation
Befinden sich Ihre Utility-Tabellen in einer anderen Datenbank oder einem anderen Schema? Übergeben Sie diese explizit:
CALL DATAMODDER_UTILS.PROFILE_PII(
'MY_DATABASE',
'MY_SCHEMA',
1000,
0.1,
'UTILS_DB',
'UTILS_SCHEMA'
);4. Ergebnisse anzeigen
SELECT * FROM DATAMODDER_UTILS.PII_SCAN_RESULTS ORDER BY scanned_at DESC, confidence DESC;