SlideShare a Scribd company logo
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать Hashicorp Vault"
Oleg Mykolaichenko
● веду DevOps дайджест на DOU
● пишу на Хабре
● тусуюсь в UkrOps community
● строю инфраструктуры и
автоматизацию
● работал в крупнейшей
гемблинговой компани, плавал
в зубодробильном стартапе
● цитирую Джеза Хамбла и
Мартина Фаулера
Цель доклада
● расшарить опыт по выпиливанию паролей из репозов
● дать всю информацию, нужную для успешного внедрения
Hashicorp Vault
● сделать акцент на практическом применении
● рассмотреть крутые практики для модных ребят
● стимулировать имплементацию в Вашей компании и команде
Откуда пришла проблема
● мы искали коллегу
● прособеседовали 50+ DevOps Engineers
● все согласны что хранить секреты в репе это плохо
● никто ничего не делает
● но все примерно знают что делать
Но почему?
● с низким приоритетом
● занимает много времени
● сложно разворачивать
● сложно поддерживать
● шапочка из фольги
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать Hashicorp Vault"
В чем проблема #1
В чем проблема #2
В чем проблема #3
Что думает кто-то из интернета
Что пишет Джез Хамбл
Как проблема выглядит в реальной
жизни
Реальная жизнь #1
1. приходит новый сотрудник в компанию
2. ему дают доступ в репозиторий приложения
3. он сразу видит все пароли/токены/сертификаты на все
сервисы для всех инвайроментов
4. это печально
нет ACL
ACL - Access Control List,
который определяет кто
и куда имеет доступ
Реальная жизнь #2
1. сотрудник уходит из компании
2. он знал все пароли/токены/сертификаты
3. эти секреты никто не меняет, т.к. не понятно в каких местах и
что было на них завязано, и что поломается
4. доступы сотрудника не удаляют, потому что на него тоже
навешано очень много интеграций
5. это печально
нет единого места
управления
Реальная жизнь #3
1. приходит сотрудник, и просит дать ему доступ в прод БД, потому что ему
какую-то таску делать
2. кто-то заходит в Excel табличку, ищет пароль, копирует, отправляет его
в Slack
3. это очень печально
нет workflow
и договоренностей
Уточняем у СТО действительно ли это
проблема для бизнеса
Что сказал СТО
Это проблема
Найдите адекватное решение
И уберите пароли из репозиториев
Сбор требований
Что нам нужно
1. Центральное место управления секретами
2. Гибкие ACL для команды/инвайромента/процесса
3. Интеграция с тулзами, которые мы используем
4. Адекватный UI/CLI интерфейс
5. Придумать workflow и договоренности
6. И чтобы это было безопасно
Что нам нужно
1. Центральное место управления секретами
2. Гибкие ACL для команды/инвайромента/процесса
3. Интеграция с тулзами, которые мы используем
4. Адекватный UI/CLI интерфейс
5. Придумать workflow и договоренности
6. И чтобы это было безопасно
Давайте искать
решение!
Ищем решения
TOP3: что не подходит - git-crypt
https://github.com/AGWA/git-crypt
1. нет центрального места
2. нет ACL
3. нет workflow
4. в принципе можно
заинтегрить с тулзами
5. вроде безопасно
TOP3: что не подходит - git-secret
https://github.com/sobolevn/git-sec
ret
1. почти то же, что и git-crypt
2. но есть ACL
TOP3: что не подходит - pass
https://git.zx2c4.com/password-store
1. Unix-way
2. вроде даже интегрируется с
тулзами
3. плагины накручивают ACL
4. даже можно с этим жить
5. но …
Подождите
Ведь везде есть какие-то штуки, которые умеют шифровать!
Например:
1. в Chef - databags
2. в Docker - secrets
3. в Puppet - hierra-gpg
4. в тулзе X - что-то тоже есть
Но …
Проблем будет еще больше!
А как сделать, чтобы проблем было меньше?
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать Hashicorp Vault"
Hashicorp Vault
1. self-hosted хранилище для любых секретов
2. 100500 плагинов и модулей на все тулзы и языки
программирования
3. написан на Golang
4. > 7626 звезд на Github
5. > 1000 форков на Github
6. self-driven архитектура
7. JSON API
8. Completely free and open source
Вспоминаем, что нам нужно
1. Центральное место управления секретами - Да
2. Гибкие ACL для команды/инвайромента - Да
3. Workflow и договоренности - Договоримся
4. Интеграция с тулзами, которые мы используем - Есть
5. Адекватный UI/CLI интерфейс - Есть
6. И чтобы это было безопасно - Безопасно
Приходим с решением к СТО
Еще требования от СТО
1. Не должно быть Single Point of Failure
2. Должен быть HA
Что получилось
Что получилось чуть позже
Это сервисы
ходят в Vault за
секретами
Что такое “бэкенд” в Hashicorp Vault
Vault: generic бекенд
- древовидная структура
- key-value внутри Записываем
секрет
Vault: generic бекенд
- древовидная структура
- key-value внутри
Читаем
секрет
Вариант реализации структуры путей
Визуализация структуры:
Вариант реализации структуры путей
$company/$application/$service/$environment/secret
Например:
- macpaw/setapp/mongo/dbe/db_user
- macpaw/setapp/mongo/uat/db_user
- macpaw/setapp/mongo/prod/db_user
Как работать с ACL
Как использовать в Ansible
1. Подключить плагин:
https://github.com/jhaals/ansible-vault
2. Плагин - это абстракция над Vault JSON API
3. Синтаксис для *.yml и *.j2:
{{ lookup('vault', 'macpaw/setapp/dev/mongo/db_user').username }}
Как использовать в Ansible
1. Подключить плагин:
https://github.com/jhaals/ansible-vault
2. Плагин - это абстракция над Vault JSON API
3. Синтаксис для *.yml и *.j2:
{{ lookup('vault', 'macpaw/setapp/dev/mongo/db_user').username }}
Как использовать в Chef
1. Подключить плагин:
https://github.com/hashicorp/vault-ruby
2. Синтаксис для рецептов:
Как использовать в Chef
1. Подключить плагин:
https://github.com/hashicorp/vault-ruby
2. Синтаксис для рецептов:
Как использовать в Terraform
Как использовать в Terraform
Как использовать в приложении
Как использовать в Consul-template
Как дружить с Kubernetes #1
В двух словах не расскажешь
Но дружить можно:
https://github.com/Boostport/kubernetes-vault
И это тема для отдельной презентации
Как дружить с Kubernetes #2
Если очень интересно, то вот она, отдельная презентация:
https://www.slideshare.net/profyclub_ru/kubernetes-hashicorp-vault-avito
Как использовать в экосистеме Hashicorp
Нативно, это же один технологический стек
Давай уже что-то интересное!
Продвинутые практики
Для серьезных ребят
Динамический доступ в AWS
1. Создаем aws backend
2. Добавляем доступы в AWS
3. Генерим динамические креды
Тоже очень круто
- динамический временный доступ в базейки
- динамический ssh доступ (OTP)
Работает по аналогии как и с AWS в первом примере
Что делать дальше
● имплементить у себя Hashicorp Vault
● шифтить его в команде и компании
● пользоваться всемы бенефитами и удобностями
● после доклада написать в резюме “Hashicorp Vault”
● делать вашу IaC еще лучше!
Я Олег
- ukrops.club
- dou.ua/users/oleg-mikolaychenko/articles
- habrahabr.ru/users/mukolaich/posts
- instagram.com/mykolaichenko

More Related Content

PPTX
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
PDF
Никита Галкин "Ловушки микросервисной архитектуры"
PDF
Jbreak 2016: Твой личный Spring Boot Starter
PPTX
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
PPT
Let's Talk About Junit 5
PDF
Артём Ерошенко «Рецепт приготовления облачных тестингов»
PDF
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
PDF
Расширь границы возможного вместе с Gradle
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
Никита Галкин "Ловушки микросервисной архитектуры"
Jbreak 2016: Твой личный Spring Boot Starter
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
Let's Talk About Junit 5
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Расширь границы возможного вместе с Gradle

What's hot (20)

PDF
микроСЕРВИСЫ: огонь, вода и медные трубы
PDF
Как это будет: ASP.NET Core
PDF
Хипстеры в энтерпрайзе
PDF
Joker 2015. WILD microSERVICES
PDF
Selenium grid on-demand
PPT
Инструментация среды исполнения в арсенале тестировщика
PDF
Олег Бартунов и Иван Панченко
PDF
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
POTX
Разработка надежных параллельных, распределенных приложений: быстро и дешево
PPT
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
PDF
Yehor Nazarkin "Journey to the distributed task queue"
PDF
Continuous Delivery with Jenkins: Lessons Learned
PDF
Deployment to production with an unexpected load
PDF
Anton Tsitou "Cycle ORM and Graphs"
PPTX
Производительность open source решений
PDF
Как приручить реактивное программирование
PDF
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
PDF
D2D Pizza JS Илья Беда "Куда мы все катимся?"
PDF
Многопоточное программирование на C#, путевые заметки
PPTX
Selenium grid. OK version
микроСЕРВИСЫ: огонь, вода и медные трубы
Как это будет: ASP.NET Core
Хипстеры в энтерпрайзе
Joker 2015. WILD microSERVICES
Selenium grid on-demand
Инструментация среды исполнения в арсенале тестировщика
Олег Бартунов и Иван Панченко
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
Разработка надежных параллельных, распределенных приложений: быстро и дешево
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
Yehor Nazarkin "Journey to the distributed task queue"
Continuous Delivery with Jenkins: Lessons Learned
Deployment to production with an unexpected load
Anton Tsitou "Cycle ORM and Graphs"
Производительность open source решений
Как приручить реактивное программирование
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
D2D Pizza JS Илья Беда "Куда мы все катимся?"
Многопоточное программирование на C#, путевые заметки
Selenium grid. OK version
Ad

More from Fwdays (20)

PDF
"Mastering UI Complexity: State Machines and Reactive Patterns at Grammarly",...
PDF
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
PPTX
"Computer Use Agents: From SFT to Classic RL", Maksym Shamrai
PPTX
"Як ми переписали Сільпо на Angular", Євген Русаков
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
PDF
"Validation and Observability of AI Agents", Oleksandr Denisyuk
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
PPTX
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
PPTX
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
PDF
"AI is already here. What will happen to your team (and your role) tomorrow?"...
PPTX
"Is it worth investing in AI in 2025?", Alexander Sharko
PDF
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
PDF
"Scaling in space and time with Temporal", Andriy Lupa.pdf
PDF
"Database isolation: how we deal with hundreds of direct connections to the d...
PDF
"Scaling in space and time with Temporal", Andriy Lupa .pdf
PPTX
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
PPTX
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
PPTX
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
PPTX
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
"Mastering UI Complexity: State Machines and Reactive Patterns at Grammarly",...
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
"Computer Use Agents: From SFT to Classic RL", Maksym Shamrai
"Як ми переписали Сільпо на Angular", Євген Русаков
"AI Transformation: Directions and Challenges", Pavlo Shaternik
"Validation and Observability of AI Agents", Oleksandr Denisyuk
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
"AI is already here. What will happen to your team (and your role) tomorrow?"...
"Is it worth investing in AI in 2025?", Alexander Sharko
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
"Scaling in space and time with Temporal", Andriy Lupa.pdf
"Database isolation: how we deal with hundreds of direct connections to the d...
"Scaling in space and time with Temporal", Andriy Lupa .pdf
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
Ad

Олег Миколайченко "Как перестать хранить секреты в git и начать использовать Hashicorp Vault"

  • 2. Oleg Mykolaichenko ● веду DevOps дайджест на DOU ● пишу на Хабре ● тусуюсь в UkrOps community ● строю инфраструктуры и автоматизацию ● работал в крупнейшей гемблинговой компани, плавал в зубодробильном стартапе ● цитирую Джеза Хамбла и Мартина Фаулера
  • 3. Цель доклада ● расшарить опыт по выпиливанию паролей из репозов ● дать всю информацию, нужную для успешного внедрения Hashicorp Vault ● сделать акцент на практическом применении ● рассмотреть крутые практики для модных ребят ● стимулировать имплементацию в Вашей компании и команде
  • 4. Откуда пришла проблема ● мы искали коллегу ● прособеседовали 50+ DevOps Engineers ● все согласны что хранить секреты в репе это плохо ● никто ничего не делает ● но все примерно знают что делать
  • 5. Но почему? ● с низким приоритетом ● занимает много времени ● сложно разворачивать ● сложно поддерживать ● шапочка из фольги
  • 10. Что думает кто-то из интернета
  • 12. Как проблема выглядит в реальной жизни
  • 13. Реальная жизнь #1 1. приходит новый сотрудник в компанию 2. ему дают доступ в репозиторий приложения 3. он сразу видит все пароли/токены/сертификаты на все сервисы для всех инвайроментов 4. это печально нет ACL ACL - Access Control List, который определяет кто и куда имеет доступ
  • 14. Реальная жизнь #2 1. сотрудник уходит из компании 2. он знал все пароли/токены/сертификаты 3. эти секреты никто не меняет, т.к. не понятно в каких местах и что было на них завязано, и что поломается 4. доступы сотрудника не удаляют, потому что на него тоже навешано очень много интеграций 5. это печально нет единого места управления
  • 15. Реальная жизнь #3 1. приходит сотрудник, и просит дать ему доступ в прод БД, потому что ему какую-то таску делать 2. кто-то заходит в Excel табличку, ищет пароль, копирует, отправляет его в Slack 3. это очень печально нет workflow и договоренностей
  • 16. Уточняем у СТО действительно ли это проблема для бизнеса
  • 17. Что сказал СТО Это проблема Найдите адекватное решение И уберите пароли из репозиториев
  • 19. Что нам нужно 1. Центральное место управления секретами 2. Гибкие ACL для команды/инвайромента/процесса 3. Интеграция с тулзами, которые мы используем 4. Адекватный UI/CLI интерфейс 5. Придумать workflow и договоренности 6. И чтобы это было безопасно
  • 20. Что нам нужно 1. Центральное место управления секретами 2. Гибкие ACL для команды/инвайромента/процесса 3. Интеграция с тулзами, которые мы используем 4. Адекватный UI/CLI интерфейс 5. Придумать workflow и договоренности 6. И чтобы это было безопасно Давайте искать решение!
  • 22. TOP3: что не подходит - git-crypt https://github.com/AGWA/git-crypt 1. нет центрального места 2. нет ACL 3. нет workflow 4. в принципе можно заинтегрить с тулзами 5. вроде безопасно
  • 23. TOP3: что не подходит - git-secret https://github.com/sobolevn/git-sec ret 1. почти то же, что и git-crypt 2. но есть ACL
  • 24. TOP3: что не подходит - pass https://git.zx2c4.com/password-store 1. Unix-way 2. вроде даже интегрируется с тулзами 3. плагины накручивают ACL 4. даже можно с этим жить 5. но …
  • 25. Подождите Ведь везде есть какие-то штуки, которые умеют шифровать! Например: 1. в Chef - databags 2. в Docker - secrets 3. в Puppet - hierra-gpg 4. в тулзе X - что-то тоже есть
  • 26. Но … Проблем будет еще больше! А как сделать, чтобы проблем было меньше?
  • 28. Hashicorp Vault 1. self-hosted хранилище для любых секретов 2. 100500 плагинов и модулей на все тулзы и языки программирования 3. написан на Golang 4. > 7626 звезд на Github 5. > 1000 форков на Github 6. self-driven архитектура 7. JSON API 8. Completely free and open source
  • 29. Вспоминаем, что нам нужно 1. Центральное место управления секретами - Да 2. Гибкие ACL для команды/инвайромента - Да 3. Workflow и договоренности - Договоримся 4. Интеграция с тулзами, которые мы используем - Есть 5. Адекватный UI/CLI интерфейс - Есть 6. И чтобы это было безопасно - Безопасно
  • 31. Еще требования от СТО 1. Не должно быть Single Point of Failure 2. Должен быть HA
  • 33. Что получилось чуть позже Это сервисы ходят в Vault за секретами
  • 35. Vault: generic бекенд - древовидная структура - key-value внутри Записываем секрет
  • 36. Vault: generic бекенд - древовидная структура - key-value внутри Читаем секрет
  • 37. Вариант реализации структуры путей Визуализация структуры:
  • 38. Вариант реализации структуры путей $company/$application/$service/$environment/secret Например: - macpaw/setapp/mongo/dbe/db_user - macpaw/setapp/mongo/uat/db_user - macpaw/setapp/mongo/prod/db_user
  • 40. Как использовать в Ansible 1. Подключить плагин: https://github.com/jhaals/ansible-vault 2. Плагин - это абстракция над Vault JSON API 3. Синтаксис для *.yml и *.j2: {{ lookup('vault', 'macpaw/setapp/dev/mongo/db_user').username }}
  • 41. Как использовать в Ansible 1. Подключить плагин: https://github.com/jhaals/ansible-vault 2. Плагин - это абстракция над Vault JSON API 3. Синтаксис для *.yml и *.j2: {{ lookup('vault', 'macpaw/setapp/dev/mongo/db_user').username }}
  • 42. Как использовать в Chef 1. Подключить плагин: https://github.com/hashicorp/vault-ruby 2. Синтаксис для рецептов:
  • 43. Как использовать в Chef 1. Подключить плагин: https://github.com/hashicorp/vault-ruby 2. Синтаксис для рецептов:
  • 46. Как использовать в приложении
  • 48. Как дружить с Kubernetes #1 В двух словах не расскажешь Но дружить можно: https://github.com/Boostport/kubernetes-vault И это тема для отдельной презентации
  • 49. Как дружить с Kubernetes #2 Если очень интересно, то вот она, отдельная презентация: https://www.slideshare.net/profyclub_ru/kubernetes-hashicorp-vault-avito
  • 50. Как использовать в экосистеме Hashicorp Нативно, это же один технологический стек
  • 51. Давай уже что-то интересное!
  • 53. Динамический доступ в AWS 1. Создаем aws backend 2. Добавляем доступы в AWS 3. Генерим динамические креды
  • 54. Тоже очень круто - динамический временный доступ в базейки - динамический ssh доступ (OTP) Работает по аналогии как и с AWS в первом примере
  • 55. Что делать дальше ● имплементить у себя Hashicorp Vault ● шифтить его в команде и компании ● пользоваться всемы бенефитами и удобностями ● после доклада написать в резюме “Hashicorp Vault” ● делать вашу IaC еще лучше!
  • 56. Я Олег - ukrops.club - dou.ua/users/oleg-mikolaychenko/articles - habrahabr.ru/users/mukolaich/posts - instagram.com/mykolaichenko