Terug naar Utils

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

1

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.

2

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.

3

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

ParameterStandaardBeschrijving
DATABASE_NAMEVerplicht. Database die gescand wordt.
SCHEMA_NAMEVerplicht. Schema dat gescand wordt.
SAMPLE_ROWSVerplicht. Aantal rijen dat per kolom wordt gesampeld.
MATCH_THRESHOLD0.1Minimale ratio van matchende waarden om een kolom te markeren (0–1).
UTILS_DATABASEcurrent databaseDatabase waar PII_REGEX_RULES en PII_SCAN_RESULTS staan.
UTILS_SCHEMAcurrent schemaSchema 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;