Экспериментирую с докер-контейнерами. Точнее, я использую docker-compose
. Мне нужно передать переменные в мой контейнер и использовать .env
файл для этого. Хотя это работает, я удивляюсь, насколько это безопасно. Я имею в виду, что каждый язык сценариев имеет доступ к env
и поэтому любой взлом в работающем приложении может раскрыть конфиденциальные данные, хранящиеся в env. Я хочу хранить такие данные, как пароли БД.
Вдохновленный salt
, Я ищу способ безопасно передать свои переменные в шаблон моего приложения перед созданием контейнера, вместо того, чтобы передавать их в env
контейнера. Как этого добиться?
Есть альтернатива использованию Docker Swarm, называемая секретами Docker. Рой позволяет вам иметь кластер узлов движка докеров, и вы можете создать кластер из одной машины, если хотите. В основном вы можете использовать секреты, хранящиеся в кластере Docker Swarm, которые можно использовать, когда в вашем кластере развернута служба (служба будет развертывать задачи с использованием контейнеров в вашем кластере).
Разъясняются секреты докеров Вот и вы даже можете использовать их в ваши файлы для создания. У вас есть хороший пример для переменных вашего окружения Вот.
Я использую секреты докеров для хранения учетных данных 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.