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