Есть ли более безопасный способ передачи переменных в контейнер докеров, чем через env

Я экспериментирую с докерными контейнерами. Точнее, я использую docker-compose, Мне нужно передать переменные в мой контейнер и использовать .env файл для этого. Хотя это работает, я удивляюсь, насколько это безопасно. Я имею в виду каждый язык сценариев имеет доступ к env и, следовательно, любой взлом в запущенном приложении может раскрыть конфиденциальные данные, хранящиеся в env. Я хочу хранить данные как пароли БД.

Вдохновленный saltЯ ищу способ безопасно передать мои переменные в шаблон приложения перед сборкой контейнера, а не передавать их в env контейнера. Как можно этого достичь?

2 ответа

Решение

Есть альтернатива, использующая Docker Swarm, называемая Docker секретами. Рой позволяет вам иметь кластер узлов механизма докера, и вы можете создать кластер из одного компьютера, если хотите. По сути, вы можете использовать секреты, хранящиеся в кластере Docker Swarm, которые можно использовать при развертывании службы (служба будет развертывать задачи с использованием контейнеров в вашем кластере) в вашем кластере.

Здесь объясняются секреты Docker, и вы даже можете использовать их в своих файлах. У вас есть хороший пример для ваших переменных среды здесь.

Я использую секреты докера для хранения учетных данных Amazon S3, которые используются внутри моих контейнеров.

В настоящее время вы можете использовать docker-compose.yml и вставить часть секретов

docker-compose.yml

version: "3.6"

services:

  my_service:
    image: ubuntu:latest
    entrypoint: "wc -c /run/secrets/my_secret"
    secrets:
      - my_secret

secrets:
  my_secret:
    file: ./password.txt

Hashicorp Vault - это инструмент, который вы ищете. Храните нечувствительные данные в.env, а для секретов используйте Vault.

https://www.vaultproject.io/

Другие вопросы по тегам