Мы закладываем приложение (написанное в Node.js), которое должно получить доступ к некоторым конфиденциальным данным во время выполнения (токены API для разных служб), и я не могу найти никаких рекомендованный подход для решения этой проблемы.Докеры и конфиденциальная информация, используемая во время выполнения
Некоторая информация:
- Чувствительная информация не является в нашем коде, но он хранится на другом хранилище в зашифрованном виде.
- В нашем текущем развертывании без Docker мы обновляем базу кода git, а затем вручную копируем конфиденциальную информацию через SSH.
- докер изображение будет сохранено в частном, самопринятого реестр
я могу думать о некоторых различных подходах, но все они имеют некоторые недостатки:
- Include конфиденциальную информации в изображения Docker во время сборки. Это, безусловно, самый простой; однако он делает их доступными для всех, у кого есть доступ к изображению (я не знаю, нужно ли нам так много доверять реестру).
- Как 1, но имеет учетные данные в изображении только для данных.
- Создайте том на изображении, который ссылается на каталог в хост-системе, и вручную скопируйте учетные данные поверх SSH, как мы делаем прямо сейчас. Это тоже очень удобно, но тогда мы не можем легко развернуть новые серверы (возможно, мы могли бы использовать что-то вроде и т. Д. для их синхронизации?)
- Передайте информацию как переменные среды. Однако сейчас у нас есть 5 различных пар учетных данных API, что делает это немного неудобным. Самое главное, однако, нам нужно будет сохранить еще одну копию конфиденциальной информации в сценариях конфигурации (команды, которые будут выполняться для запуска изображений Docker), и это может легко создать проблемы (например, учетные данные, случайно включенные в git и т. Д.).
PS: Я провел некоторое исследование, но не смог найти ничего похожего на мою проблему. Другие вопросы (например, this one) касались важной информации, необходимой во время сборки; в нашем случае нам нужна информация во время выполнения
Очень трудная задача решить правильно. Лучшее решение, которое я нашел, это хранилище Hashicorp, но проект очень новый: https://www.vaultproject.io/ –