Есть ли более безопасный способ передачи переменных в контейнер докеров, чем через 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.