web-dev-qa-db-fra.com

Comment utiliser les secrets Docker sans cluster Swarm?

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,

37
Juan Sebastian

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.

7
yield

Oui , 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 y a 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:

|
|---    docker-compose.yml
|---    super_duper_secret.txt

2) Contenu de docker-compose.yml:

version: "3.6"

services:

  my_service:
    image: centos:7
    entrypoint: "cat /run/secrets/my_secret"
    secrets:
      - my_secret

secrets:
  my_secret:
    file: ./super_duper_secret.txt

3) Contenu de super_duper_secret.txt:

Whatever you want to write for a secret really.

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é):

docker-compose up --build my_service

Vous devriez voir votre conteneur sortir votre secret.

33