Cet article date d'il y a plus d'un an.
Il est possible qu'il ne soit plus à jour.
Gestion des secrets sous Docker
Qu’est-ce qu’un secret et pourquoi en auriez-vous besoin ?
Docker Secret permet de partager des informations sensibles entre services d’un cluster Swarm.
Ces infos sensibles sont des infos qui n’ont rien à faire dans des Dockerfiles ou des docker-compose.yml, et qui ne doivent surtout pas être posées sur des dépôts Git.
- Logins/Phrases de passe
- Certificats TLS
- Clés TLS, SSH, GPG, Tokens d’APIs
- Infos sensibles : Noms des serveurs, des bases de données, …
Créer et partager un secret
A la base, le secret peut être écrit dans un fichier ou venir de la sortie standard :
# Commande générique
docker secret create <nom> [fichier|-]
# Secret venant de la sortie standard
echo "Je mange des oignons crus" |docker secret create miam -
# Secret venant d'un fichier
docker secret create miam /tmp/mon-secret-gastronomique
Quand vous créez un service, vous pouvez lui partager ce secret qu’il récupèrera dans /run/secrets/miam :
docker service create --name salade-web --secret miam nginx:latest
docker service create --name salade-db --secret miam mariadb:latest
Déclarer les secrets dans un fichier Docker-Compose
Avec un fichier docker-compose, ça donne ceci :
version: "3.7"
services:
salade-web:
image: nginx:latest
deploy:
replicas: 1
secrets:
- miam
secrets:
miam:
file: /tmp/mon-secret-gastronomique
Dans ce cas aussi, les secrets vont atterrir dans /run/secrets/.
Pour aller plus loin, vous pouvez lire la documentation officielle de secret.