Snowflake stored procedure
GDPR Profiler
Scan automatisch een Snowflake-schema op persoonsgegevens via configureerbare regex-regels — zonder handmatig elke tabel door te spitten.
Doel
Weten welke kolommen persoonsgegevens bevatten is de eerste stap voor AVG-compliance. De GDPR Profiler doet dit werk automatisch: hij koppelt de systeemcatalogus aan een tabel met regex-regels, sampelt kolomwaarden en schrijft zijn bevindingen — inclusief betrouwbaarheidsscore en aanbevolen actie — weg naar een resultatenset.
De detectieregels zijn volledig configureerbaar via PII_REGEX_RULES. Nieuwe PII-categorieën toevoegen betekent een rij invoegen, geen code aanpassen.
Vereiste tabellen
PII_REGEX_RULES
Configuratietabel met detectiepatronen. Voeg rijen toe om nieuwe PII-categorieën te ondersteunen zonder de procedure aan te passen.
PII_SCAN_RESULTS
Resultatentabel. Elke scanrun schrijft zijn bevindingen hier naar toe, voorzien van scan_id en timestamp.
Werkwijze
Kandidaten bepalen
De procedure cross-joint information_schema.columns met PII_REGEX_RULES en filtert direct op datatype. Zo vallen niet-relevante kolommen al in SQL weg.
Waarden sampelen
Voor elke kandidaatkolom wordt een steekproef getrokken en de waarden worden gecontroleerd tegen het value_regex-patroon. De matchratio wordt vergeleken met MATCH_THRESHOLD.
Bevindingen opslaan
Naam- en waarde-confidence worden opgeteld (max. 1.0) en samen met de detectiereden en het aanbevolen actie ingevoerd in PII_SCAN_RESULTS.
Parameters
| Parameter | Standaard | Beschrijving |
|---|---|---|
| DATABASE_NAME | — | Verplicht. Database die gescand wordt. |
| SCHEMA_NAME | — | Verplicht. Schema dat gescand wordt. |
| SAMPLE_ROWS | — | Verplicht. Aantal rijen dat per kolom wordt gesampeld. |
| MATCH_THRESHOLD | 0.1 | Minimale ratio van matchende waarden om een kolom te markeren (0–1). |
| UTILS_DATABASE | current database | Database waar PII_REGEX_RULES en PII_SCAN_RESULTS staan. |
| UTILS_SCHEMA | current schema | Schema waar de utility-tabellen staan. |
Gebruik
1. Basis scan
Scan een heel schema met 1.000 steekproefrijen per kolom:
CALL DATAMODDER_UTILS.PROFILE_PII(
'MY_DATABASE',
'MY_SCHEMA',
1000
);2. Gevoeligheid aanpassen
Verlaag de drempel om ook zwakkere signalen te detecteren (bijv. 5% van de waarden matcht):
CALL DATAMODDER_UTILS.PROFILE_PII(
'MY_DATABASE',
'MY_SCHEMA',
5000,
0.05
);3. Aparte utility-locatie
Staan je utility-tabellen in een andere database of schema? Geef die expliciet mee:
CALL DATAMODDER_UTILS.PROFILE_PII(
'MY_DATABASE',
'MY_SCHEMA',
1000,
0.1,
'UTILS_DB',
'UTILS_SCHEMA'
);4. Resultaten bekijken
SELECT * FROM DATAMODDER_UTILS.PII_SCAN_RESULTS ORDER BY scanned_at DESC, confidence DESC;