Как стать автором
Обновить

Как мы управляем секретами в Банки.ру: Vault HashiCorp и мечта об одной безопасной кнопке

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров5.2K
Всего голосов 16: ↑14 и ↓2+16
Комментарии12

Комментарии 12

а были ещё какие то варианты, помимо Vault, с подобным функционалом?
или сразу был выбран Vault в качестве замены Ansible-vault?

Другие варианты подробно не смотрели, т.к. до этого был опыт с Vault у ребят в команде.

А вы не думали перейти на нативные библиотеки для работы с vault? Тогда не нужен будет контейнер sidecar - можно сделать:
1. Поллинг секретов раз в сутки (например) или ротация их по времени экспирации
2. Если получен отказ в доступе во время использования секрета, то приложение должно выполнить проверку на наличие нового секрета и в случае чего его обновить, тут правда важно учесть много нюансов и что это занимает весьма внушительный объём работы

Посмотрим в эту сторону, спасибо. У нас много сервисов на разных стеках.

  1. Продвинутый уровень — хранить секреты в зашифрованном виде в Git. Такой подход обеспечивает безопасность, однако процесс управления секретами достаточно медленный: нужна сборка, тестирование, перезапуск приложений. Как было в нашем случае.

Мы недавно столкнулись с вопросом как управлять секретами и нужно ли нам переходить из AWS Secret Manager куда-то. Один из вариантов был SOPS, так как мы используем FluxCD для управления Kubernetes пространством. Самые главные плюсы:

  1. Можно отслеживать историю, видно кто и когда менял секреты, какие секреты менялись и зачем (ссылка на задачи в JIRA в commit messages)

  2. Есть возможность создавать отложенные изменения через merge request, когда нужно внести изменения в секретах вместе с другими изменениями

  3. Возможность быстро сделать rollback если что-то пошло не так

  4. Для предоставления доступа мы используем AWS KMS и через IAM роли выдаём доступ к ключам шифрования

  5. Это условно бесплатно, так как используется Git для хранения, но можно использовать платные сервисы для предоставления ключей шифрования. Но это всё ещё дешевле Hashicorp :)

Из минусов:

  1. Нужно иметь анализаторы в хранилище с кодом, так как отправить незашифрованный секрет не составляет труда и это легко сделать по невнимательности или неопытности

  2. Высокий порог вхождения, нужно понимать как менять секреты. Но в VS Code есть различные дополнения, которые облегчают работу.

По моему мнению, самый большой недостаток хранения секретов в Git - это то, что секреты в итоге сохраняются локально у тех у кого есть доступ.

С одной стороны да, с другой ничего не мешает это делать не рассказывая об этом другим. Мы стараемся решить это помощью различных подходов, например ограничения доступа к сервисам на уровне сети.

А csi vault provider не рассматривали? Если не ошибаюсь к него есть функция по автоматическому перезапуску пода если секрет поменялся, ну или использовать в связке со stakater reloader

Спасибо за рекомендацию, будем смотреть, это как раз ко второму этапу.

А почему не пользуетесь External Secrets Operator? https://external-secrets.io/

Позволяет отказаться от инит контейнеров, внешние секреты автоматом перебрасываются во внутренние куберовские.

Спасибо, проработаем для второго этапа

stakater

Зарегистрируйтесь на Хабре, чтобы оставить комментарий