Terug naar Utils

Stored Procedure

Anonymizer

Anonimiseer persoonsgegevens in Snowflake voor veilig gebruik in test- en ontwikkelomgevingen.

Doel

Testomgevingen draaien idealiter met productiewaardige data, maar mogen geen echte persoonsgegevens bevatten. De Anonymizer lost dit op: hij verwerkt een kopie van je productietabel zodat de dataverdeling en statistieken bewaard blijven, maar de waarden niet meer herleidbaar zijn naar individuen.

Per kolom kies je de anonimiseringsmethode die het beste past bij het datatype en het doel van de testomgeving.

Wat je kunt verwachten

De stored procedure biedt zes anonimiseringsmethodes:

shuffle

Herverdeelt bestaande kolomwaarden willekeurig over de rijen. De data blijft realistisch, maar is niet meer herleidbaar naar een individu.

shuffle_name

Vermengt voor- en achternamen slim door ze afzonderlijk te shuffelen, inclusief tussenvoegsels. Zo blijft de naamstructuur intact.

shuffle_phone

Herverdeelt telefoonprefixen en -suffixen onafhankelijk per lengtegroep, zodat nummers realistisch blijven.

shift_housenumber

Wijzigt huisnummers met ±2 of ±4, zodat adressen plausibel maar niet correct zijn.

random_string

Genereert willekeurige strings op basis van een patroon. Gebruik 'a' voor een letter en '#' voor een cijfer, bijv. 'aa##aa' voor een postcode.

random_lookup

Vult rijen met willekeurige waarden uit een andere tabelkolom. Handig voor realistische testdata uit een referentielijst.

Gebruik

1. Eenmalige setup

Voer eerst de globale setup.sql uit als accountadmin. Daarna maak je de stored procedure aan:

-- Pas de variabelen bovenaan het script aan:
-- MY_DATABASE, MY_WAREHOUSE

-- Voer daarna uit:
execute immediate $$ ... $$;

2. Procedure aanroepen

Roep de procedure aan met de doeltabel en een kolom-configuratie. Per kolom geef je de methode op:

CALL datamodder.anonymize(
  'MIJN_DB.MIJN_SCHEMA.KLANTEN',
  ARRAY_CONSTRUCT(
    OBJECT_CONSTRUCT('column', 'NAAM',    'method', 'shuffle_name'),
    OBJECT_CONSTRUCT('column', 'EMAIL',   'method', 'random_string',
                     'pattern', 'aaaa####@test.nl'),
    OBJECT_CONSTRUCT('column', 'TELEFOON','method', 'shuffle_phone'),
    OBJECT_CONSTRUCT('column', 'ADRES',   'method', 'shift_housenumber')
  )
);

3. Controleren met de testscripts

Het meegeleverde test_anonymize_sp.sql maakt voorbeelddata aan, voert de procedure uit en toont een voor-en-na vergelijking zodat je de output kunt valideren.