dbt macro
Masking
Bescherm persoonsgegevens in Snowflake automatisch op kolomniveau, zonder de brondata te wijzigen.
Doel
Tag-based masking is de Snowflake-native manier om persoonsgegevens te beschermen conform de AVG/GDPR. Kolommen die een PII-tag hebben gekregen worden automatisch gemaskeerd bij queries van rollen zonder toegang. De onderliggende data blijft ongewijzigd; alleen de weergave verschilt per rol.
Wat je kunt verwachten
De setup maakt zes tag-types aan in het datamodder schema, elk met een bijpassend maskeringsbeleid. Standaard ziet alleen SYSADMIN de werkelijke waarden; dit is configureerbaar.
| Tag | Voorbeeld | Gemaskeerd |
|---|---|---|
| pii_name | Jan de Vries | *** ******* |
| pii_email | jan@example.com | *****@*****.*** |
| pii_phone | +31612345678 | +*********** |
| pii_address | Hoofdstraat 1 | ***** * |
| pii_date | 1985-04-12 | ****-**-** |
| pii | Vrije tekst | ***** |
Gebruik
1. Eenmalige setup uitvoeren
Voer eerst setup.sql uit als accountadmin, daarna create_masking_setup:
{{ create_masking_setup() }}De macro is idempotent (veilig om meerdere keren uit te voeren, gebruikt IF NOT EXISTS).
2. Tag toepassen op een kolom
Gebruik apply_masking_tag om een tag aan een kolom te hangen:
{{ apply_masking_tag(
database = 'MIJN_DB',
schema = 'MIJN_SCHEMA',
table = 'KLANTEN',
column = 'EMAIL',
tag = 'pii_email'
) }}3. Toegangsrol aanpassen (optioneel)
Stel in welke rol ongemaskeerde data mag zien via de projectvariabelen:
vars:
masking_config:
unmasked_role: SYSADMIN # standaard