Vous partagez un fichier Compose VPN ? Masquez les secrets dans la copie rendue
Une clé privée peut se trouver dans le YAML, dans une valeur d’environnement ou dans la sortie résolue que personne n’a regardée. Vérifiez la copie que vous joignez réellement.
Chaque fois que vous partagez un fichier Compose, il existe deux artéfacts : celui que vous avez écrit et celui qu’un outil rend après avoir substitué les variables. Le second est souvent plus sensible que le premier, et c’est celui que les gens collent dans un rapport de problème sans le lire. Si vous ne relisez que le fichier source, vous relisez le mauvais document.
Comparez ce que chaque copie peut contenir avant de décider quoi retirer.
Le modèle rendu est un autre document
Compose résout les variables d’environnement, fusionne les fichiers de substitution et produit une configuration effective que le lecteur ne peut plus distinguer de valeurs écrites à la main. Une référence comme un nom de variable dans la source devient le jeton du compte lui-même dans la sortie. La structure qui rend le fichier utile au diagnostic survit à cette transformation ; tout ce qui n’aurait jamais dû s’y trouver y survit aussi.
Rendez le fichier vous-même avant de le joindre et traitez cette sortie comme l’artéfact que vous relisez. Si vous ne pouvez pas le rendre, vous ne pouvez pas savoir ce que vous êtes sur le point de publier.
Les secrets se trouvent à plus d’endroits que le champ de la clé
Commencez par l’évidence : clés privées, clés pré-partagées, jetons, mots de passe et URL de connexion qui intègrent des identifiants. Regardez ensuite tout ce vers quoi le fichier pointe, car une référence n’est pas une occultation. Un fichier d’environnement monté dans le service, un fichier de configuration lié depuis l’hôte, une étiquette portant un jeton et un argument de commande contenant un mot de passe voyagent tous avec le déploiement même quand le YAML semble propre. Une clé collée dans une variable au nom rassurant reste une clé.
Les chemins de l’hôte et les noms de service divulguent une seconde catégorie d’informations. Un nom de répertoire personnel, un nom d’hôte interne ou une plage réseau peuvent identifier une personne ou une organisation sans contenir le moindre identifiant, et ce contexte mérite d’être retiré pour la même raison.
La déclaration d’un secret n’est pas le secret
Les objets de secret de Compose séparent la déclaration du matériel : le service reçoit un chemin ou une cible, et le contenu vit ailleurs. Conserver la déclaration en remplaçant le matériel est généralement le bon compromis, car le relecteur doit voir qu’un secret existe et comment il est monté. Ce qui ne doit pas survivre, c’est le contenu lui-même.
Les étiquettes et les commentaires méritent le même traitement. Un commentaire qui indique quel chemin du coffre détient la clé de production indique à un attaquant où regarder même s’il ne contient aucune clé.
Conservez la forme pour que le fichier diagnostique encore
Une occultation qui supprime le mode réseau, la version de l’image ou les réglages de capacités produit un fichier avec lequel personne ne peut déboguer. Remplacez les valeurs sensibles et conservez les relations : quel service monte quoi, à quel réseau il se joint, quel périphérique il lui faut. C’est la partie que le lecteur utilise pour expliquer une route manquante ou un périphérique indisponible. C’est aussi la version qu’un collègue peut comparer à son propre déploiement qui fonctionne.
docker compose -f compose.yaml config > rendered.yaml
grep -nE 'PRIVATE_KEY|PASSWORD|TOKEN|PSK|PrivateKey|passphrase' rendered.yaml
wc -l rendered.yaml
Ne déployez pas la copie occultée comme si c’était l’original qui fonctionne. C’est une description, et une description modifiée pour paraître sûre échouera de manières qui ressemblent à des erreurs de configuration.
Si du matériel a été exposé, remplacez-le
Retirer la pièce jointe ne retire pas les copies que d’autres ont déjà faites, et les miroirs et les caches gardent les leurs. Utilisez le processus de révocation et de remplacement de l’émetteur pour tout ce qui a fuité, puis mettez à jour le déploiement. L’ordre compte, car remplacer d’abord et révoquer ensuite laisse une fenêtre avec deux identifiants valides.
Dans les fils de support, commencez par l’erreur exacte, la version de l’image, le mode réseau et le seul réglage non secret qui compte. Cette combinaison explique un périphérique manquant ou une route cassée bien plus souvent que la clé.