Stratégies de pseudonymisation
Une stratégie définit comment une valeur réelle est transformée avant d’être écrite vers la cible. Elle se déclare au niveau colonne dans brume.yml.
En un coup d’œil
Section intitulée « En un coup d’œil »| Stratégie | Réversible ? | Joignable ? | Préserve le format ? | Requiert type |
|---|---|---|---|---|
FAKE | Non | Oui (déterministe) | Non | Oui |
MASK | Non | Non | Oui | Oui |
HASH | Non | Oui | Non (64 car. fixes) | Non |
NULLIFY | N/A | Non | N/A | Non |
FPE_ID | Oui (avec la clé) | Oui | Oui | Non |
FPE_UUID | Oui (avec la clé) | Oui | Oui (UUID → UUID) | Non |
KEEP | N/A | N/A | N/A | Non |
Remplace la valeur par une valeur synthétique réaliste générée via Datafaker, semée par le HMAC de l’original. Déterministe : la même valeur source produit toujours le même faux.
- name: email strategy: FAKE type: EMAILÀ utiliser pour les PII de niveau affichage qui doivent avoir l’air réelles sur des captures d’écran, dans des démos ou des tests d’intégration où le code aval parse la valeur (par ex. validation d’email).
Masquage partiel qui préserve la structure du champ. Conserve un préfixe ou un suffixe selon le type, remplace le reste par *.
- name: phone strategy: MASK type: PHONEÀ utiliser pour les valeurs lisibles dans le support / les logs où vous voulez que les opérateurs reconnaissent la forme des données (4 derniers chiffres d’une carte, premières lettres d’un nom) sans voir la valeur complète.
HMAC-SHA256 à sens unique, indexé sur BRUME_HMAC_SECRET. Produit une chaîne hex de 64 caractères. Déterministe, non réversible.
- name: external_user_id strategy: HASHÀ utiliser pour les identifiants opaques sur lesquels vous devez joindre entre tables mais que vous n’avez jamais besoin d’afficher ou d’inverser. La sortie fait toujours 64 caractères — si la colonne a une contrainte VARCHAR(N) plus petite, préférez FPE_ID ou FPE_UUID.
Remplace la valeur par NULL. La colonne doit être nullable dans le schéma cible.
- name: free_text_notes strategy: NULLIFYÀ utiliser pour les champs texte libre ou commentaires où les utilisateurs peuvent coller des PII qu’aucune stratégie ne peut nettoyer en toute sécurité. La minimisation la plus forte possible.
Chiffrement préservant le format (FF1 / BouncyCastle) pour les identifiants numériques. Entrée entière → sortie entière de la même longueur. Indexé par BRUME_FPE_KEY.
- name: id strategy: FPE_IDÀ utiliser pour les clés primaires numériques. Brume propage automatiquement le chiffrement à chaque clé étrangère pointant vers cette PK, l’intégrité référentielle tient donc de bout en bout.
FPE_UUID
Section intitulée « FPE_UUID »Pseudonymisation déterministe UUID-vers-UUID. Préserve le format 8-4-4-4-12, l’unicité et les relations FK.
- name: id strategy: FPE_UUIDÀ utiliser pour les clés primaires UUID. Même propagation automatique des FK que FPE_ID.
Copie la valeur sans modification. C’est le comportement par défaut pour toute colonne non déclarée dans brume.yml.
- name: country_code strategy: KEEPÀ utiliser pour les colonnes non sensibles (lookups, enums, timestamps) — même si en général vous les laissez simplement non déclarées.
Tableau de décision — quelle stratégie quand ?
Section intitulée « Tableau de décision — quelle stratégie quand ? »| Votre colonne est… | Choisissez |
|---|---|
| Une PK / FK numérique | FPE_ID |
| Une PK / FK UUID | FPE_UUID |
| Un email / nom / téléphone / adresse à afficher | FAKE (+ type correspondant) |
| Un téléphone / carte / ID dont la forme compte mais pas le contenu | MASK (+ type correspondant) |
| Une clé opaque sur laquelle vous joignez mais que vous n’affichez jamais | HASH |
| Un champ texte libre / notes | NULLIFY |
| Un enum / timestamp / booléen sûr | laisser non déclaré (= KEEP) |
- Types sémantiques — les valeurs dont
FAKEetMASKont besoin. - Référence
brume.yml— le schéma de configuration complet.