dbt: Config-driven masking macros


🧠 Objectif

Appliquer des règles de masquage de données (ex: anonymisation, pseudonymisation) automatiquement, en fonction du rôle utilisateur, de manière centrale, configurable, testable et maintenable.


✅ Solution : Macros pilotées par configuration (config-driven)

L’idée est de :

  • définir les règles de masquage dans des fichiers YAML
  • centraliser la logique de masquage dans une macro dbt
  • appliquer ces règles dans les modèles sans dupliquer le code
  • masquer différemment selon les rôles ou environnements

📁 Étape 1 : Définir les règles dans un fichier masking_rules.yml

version: 2

vars:
  masking_policies:
    admin:
      email: raw
      phone: raw
    analyst:
      email: masked
      phone: masked
    external_user:
      email: nullify
      phone: nullify

🧠 Étape 2 : Créer une macro mask_column

{% macro mask_column(column_name, role) %}
  {% set policy = var('masking_policies')[role][column_name] %}
  {% if policy == 'raw' %}
    {{ column_name }}
  {% elif policy == 'masked' %}
    SHA2(CAST({{ column_name }} AS STRING), 256)
  {% elif policy == 'nullify' %}
    NULL
  {% else %}
    {{ column_name }}
  {% endif %}
{% endmacro %}

📄 Étape 3 : Utiliser dans un modèle

SELECT
  id,
  {{ mask_column('email', target.name) }} AS email,
  {{ mask_column('phone', target.name) }} AS phone
FROM {{ ref('stg_clients') }}

📌 Ici, target.name représente le nom de l’environnement ou du rôle (peut être admin, analyst, etc.), passé automatiquement par dbt.


🧪 Étape 4 : Tester facilement les règles

Tu peux exécuter le modèle avec un rôle spécifique en ligne de commande :

dbt run --vars '{"masking_policies": {...}}' --target analyst

Et ainsi vérifier ce que verra un utilisateur de type “analyst”.


🔒 Avantages

AvantageDétail
✅ CentraliséLes règles sont toutes définies dans un seul YAML
🎯 Ciblé par rôleChaque rôle peut avoir sa propre politique
♻️ RéutilisableUne seule macro pour toutes les colonnes/models
🔧 Facile à modifierUn simple changement YAML sans toucher au SQL
✅ Conforme RGPD / sécuritéMasquage automatique et traçable

✅ Résumé

Les masking macros pilotées par configuration permettent une application uniforme et évolutive du masquage de données sensibles dans dbt.
Elles facilitent le respect des politiques de confidentialité, l’audit, et l’adaptation à de nouveaux rôles — sans dupliquer la logique de sécurité dans tous les modèles.


Leave a Reply

Your email address will not be published. Required fields are marked *