Как делиться динамически генерируемыми секретами между контейнерами Docker
Я связал вместе пару контейнеров Docker, которые используют конечные точки API друг друга. Эти конечные точки API защищены секретом и генерируются при запуске контейнера. Я ищу безопасный способ поделиться этими секретами между этими службами, не делая ничего статичного (например, жесткое кодирование). Эти сервисы создаются и связаны друг с другом, используя docker-compose
и секрет может быть переопределен с помощью переменной окружения. Такое поведение не рекомендуется для производства, однако.
Какой в моем случае самый безопасный способ распространения этих секретов?
Вещи, которые я рассмотрел:
- Использование центрального контейнера данных, который хранит эти секреты в виде файла. Клиенты могут затем ссылаться на этот контейнер и искать секрет в файле.
Этот огромный недостаток этого подхода заключается в том, что он ограничивает контейнеры для запуска на одном узле.
- Генерация
docker-compose
файл с этими случайными секретами, жестко закодированными в них перед развертыванием контейнеров
Недостатком этого подхода будет то, что невозможно будет просто использовать docker-compose
файл, но ограничив себя сценарием bash, чтобы сгенерировать что-то столь же критическое, как эти секреты Это также не соответствовало бы моему замечанию о том, что решение должно быть динамически адаптируемым к секретным изменениям.
Примечание
В конечном счете, я бы предпочел, чтобы решение также могло динамически адаптироваться к секретным изменениям. Например, при сбое контейнера он автоматически перезапускается, что также генерирует новый секрет.