Kenya-West
@Kenya-West
Обычный Кеня

Задача выдачи файлов конфигураций и файлов секретов по Интернету — а есть ли готовые решения?

Администрирую десятки серверов с помощью Ansible, деплою несколько образов Docker с помощью него (пусть Ansible для этого не предназначен).

Возникает вопрос: каждому docker-compose.yml требуется .env-файл и иногда ещё парочка файлов конфигов любого вида. А ложить/класть десятки таких файликов с конфигами в репу с Ansible как-то зазорно, особенно если там секреты есть.

Я глянул решения - HashiCorp Vault, Azure Key Vault, Doppler, Dotenv Vault - все они key-value без возможности скачать свой .env-файл. Dotenv Vault подошел бы, но он не работает с Docker, только с бекендом внутри контейнера. А это неприемлемо, бекенды внутри контейнеров я не контролирую вообще, image не мои.

Так что появилась задача: docker-compose файл запускается (или его запускает Ansible) и перед запуском самостоятельно качает нужный ему .env-файл с какого-то моего бекенда (либо Ansible перед запуском это делает). Бекенд проверяет, что это точно IP моего сервера (без MITM, не фейк, вот фото паспорта и ЭЦП) и выдаёт ему контент этого файла с секретами. Файл качается, ложится рядом с docker-compose, и весь стек начинает запускаться.

Мой будущий бекенд, который я напишу, будет делать так:
1. Юзер заливает туда нужные файлики, пишет текстовый идентификатор сервиса и хосты, для которых этот файл(ы) предназначается. Настраивает единый ключ доступа в виде строки для своего аккаунта;
2. Сервис, который стартует в docker-compose, обращается к этому URL'у и сообщает свой ключ и нужный сервис, получает список файлов и качает их. Не нужно сообщать свой IP-адрес, мой бекенд проверит его и сопоставит сам.

Норм тема? Или, может, нечто уже предлагается?
  • Вопрос задан
  • 3364 просмотра
Пригласить эксперта
Ответы на вопрос 2
saboteur_kiev
@saboteur_kiev Куратор тега Информационная безопасность
software engineer
Я глянул решения - HashiCorp Vault, Azure Key Vault, Doppler, Dotenv Vault - все они key-value без возможности скачать свой .env-файл. Dotenv Vault подошел бы, но он не работает с Docker, только с бекендом внутри контейнера. А это неприемлемо, бекенды внутри контейнеров я не контролирую вообще, image не мои.


А в чем проблема положить конфигурационный файл в value?
Так многие делают. Просто клади их как base64 строку.
Ответ написан
Ну например:

Гуглите "remote configuration" и "feature flags", обычно это идёт комплектом. Может применяться как к клиентским приложениям (десктоп, мобилка), так и к приложениям на стороне сервера (то, что как раз вам нужно).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы