Комментарии 12
а были ещё какие то варианты, помимо Vault, с подобным функционалом?
или сразу был выбран Vault в качестве замены Ansible-vault?
А вы не думали перейти на нативные библиотеки для работы с vault? Тогда не нужен будет контейнер sidecar - можно сделать:
1. Поллинг секретов раз в сутки (например) или ротация их по времени экспирации
2. Если получен отказ в доступе во время использования секрета, то приложение должно выполнить проверку на наличие нового секрета и в случае чего его обновить, тут правда важно учесть много нюансов и что это занимает весьма внушительный объём работы
Продвинутый уровень — хранить секреты в зашифрованном виде в Git. Такой подход обеспечивает безопасность, однако процесс управления секретами достаточно медленный: нужна сборка, тестирование, перезапуск приложений. Как было в нашем случае.
Мы недавно столкнулись с вопросом как управлять секретами и нужно ли нам переходить из AWS Secret Manager куда-то. Один из вариантов был SOPS, так как мы используем FluxCD для управления Kubernetes пространством. Самые главные плюсы:
Можно отслеживать историю, видно кто и когда менял секреты, какие секреты менялись и зачем (ссылка на задачи в JIRA в commit messages)
Есть возможность создавать отложенные изменения через merge request, когда нужно внести изменения в секретах вместе с другими изменениями
Возможность быстро сделать rollback если что-то пошло не так
Для предоставления доступа мы используем AWS KMS и через IAM роли выдаём доступ к ключам шифрования
Это условно бесплатно, так как используется Git для хранения, но можно использовать платные сервисы для предоставления ключей шифрования. Но это всё ещё дешевле Hashicorp :)
Из минусов:
Нужно иметь анализаторы в хранилище с кодом, так как отправить незашифрованный секрет не составляет труда и это легко сделать по невнимательности или неопытности
Высокий порог вхождения, нужно понимать как менять секреты. Но в VS Code есть различные дополнения, которые облегчают работу.
По моему мнению, самый большой недостаток хранения секретов в Git - это то, что секреты в итоге сохраняются локально у тех у кого есть доступ.
А csi vault provider не рассматривали? Если не ошибаюсь к него есть функция по автоматическому перезапуску пода если секрет поменялся, ну или использовать в связке со stakater reloader
А почему не пользуетесь External Secrets Operator? https://external-secrets.io/
Позволяет отказаться от инит контейнеров, внешние секреты автоматом перебрасываются во внутренние куберовские.
Как мы управляем секретами в Банки.ру: Vault HashiCorp и мечта об одной безопасной кнопке