Masquage des données sensibles
Lors de la lecture ou de l'export d'un environnement ou d'une ressource (YAML téléchargé, snapshot d'activité), les valeurs sensibles présentes dans les champs extra des environnements et des ressources sont automatiquement masquées. Cela empêche la fuite de données sensibles dans les fichiers exportés, les logs et les diffs de l'historique d'activité.
Champs masqués
Le masquage s'applique récursivement à tout objet de configuration. Les noms de clés reconnus comme sensibles sont :
| Clé | Exemples de contexte |
|---|---|
key | agentOptions.key |
password | authTokenParams.password, oauth2.password |
clientSecret | oauth2.clientSecret |
pass | basicAuth.pass, proxy.pass |
secret | hmac.secret, jwt.secret |
privateKey | jwt.privateKey |
La clé originale est supprimée et remplacée par masked_<clé>.
Format de masquage
Valeur texte ordinaire
- Valeur ≥ 6 caractères :
abc***xyz(3 premiers +***+ 3 derniers caractères) - Valeur < 6 caractères :
abc***(3 premiers caractères +***)
Exemple :
# Avant
oauth2:
clientSecret: my-super-secret-value
# Après (lecture API ou export YAML)
oauth2:
masked_clientSecret: my-***lue
Valeur PEM (certificats / clés)
Les blocs PEM sont détectés automatiquement (présence de -----BEGIN). Ils sont masqués un par un. Les lignes -----BEGIN …----- et -----END …----- sont préservées ; seul le contenu base64 interne est masqué. Les métadonnées éventuellement présentes entre les blocs (ex. Bag Attributes, subject=, issuer=) sont également conservées telles quelles.
Les exemples ci-dessous utilisent la notation YAML |- (bloc littéral, qui conserve les sauts de ligne). La bibliothèque de sérialisation utilisée en interne peut produire la notation >- (bloc replié, qui remplace les lignes vides par des sauts de lignes) pour certaines valeurs, sans que cela soit configurable. Le résultat est moins lisible car parsemé de lignes vides mais reste un YAML valide et en appliquant un parsing YAML, la valeur contenue dans le bloc replié >-, correspond à la valeur présentée dans les exemples ci-dessous.
Clé privée :
masked_key: |-
-----BEGIN RSA PRIVATE KEY-----
MII***xyz
-----END RSA PRIVATE KEY-----
Comportement à l'import
Lors d'un import, laissez les clés masked_<x> telles quelles si vous ne souhaitez pas modifier leur valeur. Les supprimer sans les remplacer par la clée réelle avec la bonne valeur entraînerait la perte de la valeur correspondante en base.
Lors d'un import YAML, le système distingue fonctionne de cette manière :
| Situation | Comportement |
|---|---|
Clé masked_<x> dans le YAML importé, sans clé réelle <x> | La valeur existante en base est conservée (pas d'écrasement) |
Clé réelle <x> dans le YAML importé, sans clé masquée masked_<x> | La valeur importée est utilisée (mise à jour normale) |
Clé masked_<x> sans valeur existante en base | La clé est ignorée (aucune écriture) |
Clé réelle <x> et clé masked_<x> toutes deux présentes | La clé réelle <x> a la priorité (mise à jour normale) |
Ni masked_<x> ni <x> présentes dans le YAML importé | La clé est supprimée de la configuration en base |
Ainsi, réimporter un YAML exporté sans le modifier ne modifie pas les données sensibles en base.
Comment modifier une valeur sécurisée
-
Exporter l'environnement (téléchargement YAML depuis le portail ou via l'API REST).
-
Dans le YAML exporté, remplacer la clé
masked_<x>par la clé réelle<x>avec la nouvelle valeur en clair :# Remplacermasked_clientSecret: my-***lue# ParclientSecret: ma-nouvelle-valeur-secreteinfoAu sein de l'environnement ou de la ressource modifiée, veillez à laisser les autres configurations telles quelles pour qu'elles ne soient pas supprimées.
-
Réimporter le YAML modifié.