dbt macro
Masking
Schützen Sie personenbezogene Daten in Snowflake automatisch auf Spaltenebene, ohne die Quelldaten zu ändern.
Ziel
Tag-basiertes Masking ist die Snowflake-native Methode zum Schutz personenbezogener Daten gemäß DSGVO. Spalten mit einem PII-Tag werden bei Abfragen von Rollen ohne Zugang automatisch maskiert. Die zugrunde liegenden Daten bleiben unverändert; nur die Anzeige unterscheidet sich je nach Rolle.
Was Sie erwarten können
Das Setup erstellt sechs Tag-Typen im datamodder Schema, jeder mit einer passenden Maskierungsrichtlinie. Standardmäßig sieht nur SYSADMIN die echten Werte; dies ist konfigurierbar.
| Tag | Beispiel | Maskiert |
|---|---|---|
| pii_name | Max Mustermann | *** ******* |
| pii_email | max@example.com | *****@*****.*** |
| pii_phone | +49151234567 | +*********** |
| pii_address | Hauptstraße 1 | ***** * |
| pii_date | 1985-04-12 | ****-**-** |
| pii | Freier Text | ***** |
Verwendung
1. Einmalige Einrichtung ausführen
Führen Sie zuerst setup.sql als accountadmin aus, dann create_masking_setup:
{{ create_masking_setup() }}Das Makro ist idempotent (sicher, mehrmals auszuführen, verwendet IF NOT EXISTS).
2. Tag auf eine Spalte anwenden
Verwenden Sie apply_masking_tag um einen Tag an eine Spalte zu hängen:
{{ apply_masking_tag(
database = 'MY_DB',
schema = 'MY_SCHEMA',
table = 'CUSTOMERS',
column = 'EMAIL',
tag = 'pii_email'
) }}3. Zugriffsrolle anpassen (optional)
Legen Sie fest, welche Rolle unmaskierte Daten sehen darf, über Projektvariablen:
vars:
masking_config:
unmasked_role: SYSADMIN