Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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. это печально
Реальная жизнь #2
1. сотрудник уходит из компании
2. он знал все пароли/токены/сертификаты
3. эти секреты никто не меняет, т.к. не понятно в каких местах и
что было на них завязано, и что поломается
4. доступы сотрудника не удаляют, потому что на него тоже
навешано очень много интеграций
5. это печально
Реальная жизнь #3
1. приходит сотрудник, и просит дать ему доступ в прод БД, потому что ему
какую-то таску делать
2. кто-то заходит в Excel табличку, ищет пароль, копирует, отправляет его
в Slack
3. это очень печально
Уточняем у СТО действительно ли это
проблема для бизнеса
Что сказал СТО
Это проблема
Найдите адекватное решение
И уберите пароли из репозиториев
Сбор требований
Что нам нужно
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-
secret
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

Как перестать хранить секреты в 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. это печально
  • 14. Реальная жизнь #2 1. сотрудник уходит из компании 2. он знал все пароли/токены/сертификаты 3. эти секреты никто не меняет, т.к. не понятно в каких местах и что было на них завязано, и что поломается 4. доступы сотрудника не удаляют, потому что на него тоже навешано очень много интеграций 5. это печально
  • 15. Реальная жизнь #3 1. приходит сотрудник, и просит дать ему доступ в прод БД, потому что ему какую-то таску делать 2. кто-то заходит в Excel табличку, ищет пароль, копирует, отправляет его в Slack 3. это очень печально
  • 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- secret 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

Editor's Notes

  1. Тут расскажу вообще кто я такой чтобы людям фонить знаниями, что они тут услышат
  2. также тут скажу про цель доклада
  3. Долго искали человека, все знают что делать но не делают
  4. Почему не делают? Аргументируют
  5. Развенчиваем мифы
  6. Тут буду рассказывать что все оч халатно относятся к сенситив дате, кладут ее в репозиторий и что из этого получается Что с этим можно сделать: - спулить прайвет имеджи чужого стартапа и замутить свой стартап - спулить и поискать там доступы в какие-то RDS, пейпелы, все что угодно - замутить бесплатное для вас супер-огромное блокчейн хранилище для своих имеджей на чужих аккаунтах
  7. Тут то же самое про сенситив дату - прислать всем какое-то сообщение в прайвет ченелы - например, сообщение с призывом перечислить пару биткоинов, потому что слек хакнули - или прорекламировать наш ивент - и еще много чего
  8. А это вообще сборник штук которые серчат по гитхабу, и показывают кто там чего напушил интересненького И даже есть репоз на гитхабе, с готовыми пресетами на поиск подобных штук
  9. Цитата которая вроде правильная, но ее сказал какой-то тип на стековерфлоу, но ей верить нельзя
  10. Цитата из всем известной книги, где Джез Хамбл декларирует проблему и четко говорит что это неок На этом этапе все уже поняли что это плохо, дальше рассказываю как это выглядит в реальной жизни
  11. Цитата из всем известной книги, где Джез Хамбл декларирует проблему и четко говорит что это неок На этом этапе все уже поняли что это плохо, дальше рассказываю как это выглядит в реальной жизни
  12. Цитата из всем известной книги, где Джез Хамбл декларирует проблему и четко говорит что это неок На этом этапе все уже поняли что это плохо, дальше рассказываю как это выглядит в реальной жизни
  13. AppRole бекенд который отлично подходит проблемы стандартного secret подхода в кубере рассмотрение вариантов имплементаций в результате свой волт контроллер