Использование переменных окружения для хранения секретов – небезопасное решение из-за их видимости при docker inspect, в логах приложения и истории docker history. Альтернативой являются Docker Secrets, подходящие для Docker Swarm, где секреты хранятся зашифрованными и доступны контейнерам через файлы /run/secrets. BuildKit позволяет передавать секреты на этапе сборки, но не для рантайма.
HashiCorp Vault предоставляет централизованное хранилище с гибкими политиками доступа, динамическими секретами и возможностью обновления без перезагрузки. Аналогичные возможности доступны в AWS Secrets Manager, Google Secret Manager и Azure Key Vault. Vault интегрируется через Vault Agent или API.
В Docker Compose можно использовать комбинацию Vault и docker-compose.override.yml, предварительно получая секреты с помощью скриптов. Важно не коммитить секреты в исходный код, минимизировать время жизни секретов, сегментировать доступ, вести журналы и шифровать все данные. Обновление секретов без перезагрузки достигается с помощью агентов.
Изображение носит иллюстративный характер
HashiCorp Vault предоставляет централизованное хранилище с гибкими политиками доступа, динамическими секретами и возможностью обновления без перезагрузки. Аналогичные возможности доступны в AWS Secrets Manager, Google Secret Manager и Azure Key Vault. Vault интегрируется через Vault Agent или API.
В Docker Compose можно использовать комбинацию Vault и docker-compose.override.yml, предварительно получая секреты с помощью скриптов. Важно не коммитить секреты в исходный код, минимизировать время жизни секретов, сегментировать доступ, вести журналы и шифровать все данные. Обновление секретов без перезагрузки достигается с помощью агентов.