Actuellement, nous sommes une application en cours d'exécution sur un seul conteneur Docker, l'application a besoin de toutes sortes de données sensibles pour être transmises en tant que variables d'environnement,
Je mets ceux-ci sur la commande d'exécution afin qu'ils ne se retrouvent pas dans l'image, puis sur un référentiel, mais je me retrouve avec une commande d'exécution très non sécurisée,
Maintenant, je comprends que des secrets de docker existent, cependant, comment puis-je les utiliser sans déployer un cluster? ou existe-t-il un autre moyen de sécuriser ces données?
Meilleures salutations,
security
docker
docker-swarm
Juan Sebastian
la source
la source
Réponses:
Vous ne pouvez pas ... Il ne prend pas en charge les secrets sans Swarm. À moins que '' ne soit '' vous '' Swarm '' n'utilisant qu'un seul nœud.
L'autre solution serait, je pense, d'utiliser un logiciel de coffre tiers comme celui-ci:
https://www.vaultproject.io/
Mais ensuite, pour utiliser les secrets de Vault dans vos conteneurs, vous devez lire le document.
J'espère que cela vous amènera sur la bonne voie pour commencer.
la source
build-args
ne sont pas inclus dans l'image finale, mais ne sont accessibles que pendant la construction de l'image. Une solution appropriée consiste à écrire les secrets dans des fichiers sur l'hôte (avec les autorisations appropriées, bien sûr), puis à les monter en volume dans votre conteneur Docker. Votre application à l'intérieur du conteneur peut alors lire les secrets de ces fichiersOui , vous pouvez utiliser des secrets si vous utilisez un fichier de composition . (Vous n'avez pas besoin d'exécuter un essaim).
Vous utilisez un fichier de composition avec docker-compose : il existe une documentation pour les "secrets" dans un fichier docker-compose.yml .
Je suis passé à docker-compose parce que je voulais utiliser des secrets. Je suis content de l'avoir fait, il semble beaucoup plus propre. Chaque service est mappé sur un conteneur. Et si jamais vous souhaitez passer à l'exécution d'un essaim à la place, vous êtes déjà là.
Remarque: les secrets ne sont pas chargés dans l'environnement du conteneur, ils sont montés dans / run / secrets /
Voici un exemple:
1) Structure du projet:
2) Contenu de docker-compose.yml:
3) Contenu de super_duper_secret.txt:
4) Exécutez cette commande à partir de la racine du projet pour voir que le conteneur a accès à votre secret (Docker doit être en cours d'exécution et docker-compose installé):
Vous devriez voir votre conteneur sortir votre secret.
la source
docker-compose
utilisation d'un secret? La documentation et ma compréhension de l'implémentation indiquent que le secret ne sera pas configuré dans le conteneur.docker-compose.yml
sur un seul nœud); lorsque je démarre, le conteneur/run
ne contient qu'unnginx.pid
et il n'y en a pasMounts
montré pardocker inspect $container
.