SlideShare a Scribd company logo
1 of 56
Download to read offline
Oleg Mykolaichenko
● веду DevOps дайджест на DOU
● пишу на Хабре
● тусуюсь в UkrOps community
● строю инфраструктуры и
автоматизацию
● работал в крупнейшей
гемблинговой компани, плавал
в зубодробильном стартапе
● цитирую Джеза Хамбла и
Мартина Фаулера
Цель доклада
● расшарить опыт по выпиливанию паролей из репозов
● дать всю информацию, нужную для успешного внедрения
Hashicorp Vault
● сделать акцент на практическом применении
● рассмотреть крутые практики для модных ребят
● стимулировать имплементацию в Вашей компании и команде
Откуда пришла проблема
● мы искали коллегу
● прособеседовали 50+ DevOps Engineers
● все согласны что хранить секреты в репе это плохо
● никто ничего не делает
● но все примерно знают что делать
Но почему?
● с низким приоритетом
● занимает много времени
● сложно разворачивать
● сложно поддерживать
● шапочка из фольги
В чем проблема #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 - что-то тоже есть
Но …
Проблем будет еще больше!
А как сделать, чтобы проблем было меньше?
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

What's hot

микроСЕРВИСЫ: огонь, вода и медные трубы
микроСЕРВИСЫ: огонь, вода и медные трубымикроСЕРВИСЫ: огонь, вода и медные трубы
микроСЕРВИСЫ: огонь, вода и медные трубы
Aleksandr Tarasov
 
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Ontico
 

What's hot (20)

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

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

Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flash
guestb0af15
 
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Как работать с legacy проектом, которому больше10 лет? |Денис ВоскобойникКак работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Образовательные мероприятия "Netpeak Talks"
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложений
snowytoxa
 
2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...
2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...
2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...
Омские ИТ-субботники
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
PVasili
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
drupalconf
 

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

SymfonyConf IV.2016 - Реанимация проектов на Symfony
SymfonyConf IV.2016 - Реанимация проектов на SymfonySymfonyConf IV.2016 - Реанимация проектов на Symfony
SymfonyConf IV.2016 - Реанимация проектов на Symfony
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кода
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
 
Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flash
 
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Как работать с legacy проектом, которому больше10 лет? |Денис ВоскобойникКак работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
 
Sivko
SivkoSivko
Sivko
 
Breaking logs
Breaking logsBreaking logs
Breaking logs
 
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovReal-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
 
SE2016 Java Dmitriy Kouperman "Working with legacy systems. Stabilization, mo...
SE2016 Java Dmitriy Kouperman "Working with legacy systems. Stabilization, mo...SE2016 Java Dmitriy Kouperman "Working with legacy systems. Stabilization, mo...
SE2016 Java Dmitriy Kouperman "Working with legacy systems. Stabilization, mo...
 
Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...
Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...
Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...
 
php frameworks
php frameworksphp frameworks
php frameworks
 
Mobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps DevelopmentMobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps Development
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложений
 
2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...
2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...
2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Этичный хакинг
Этичный хакингЭтичный хакинг
Этичный хакинг
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 

More from Fwdays

More from Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

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

  • 1.
  • 2. Oleg Mykolaichenko ● веду DevOps дайджест на DOU ● пишу на Хабре ● тусуюсь в UkrOps community ● строю инфраструктуры и автоматизацию ● работал в крупнейшей гемблинговой компани, плавал в зубодробильном стартапе ● цитирую Джеза Хамбла и Мартина Фаулера
  • 3. Цель доклада ● расшарить опыт по выпиливанию паролей из репозов ● дать всю информацию, нужную для успешного внедрения Hashicorp Vault ● сделать акцент на практическом применении ● рассмотреть крутые практики для модных ребят ● стимулировать имплементацию в Вашей компании и команде
  • 4. Откуда пришла проблема ● мы искали коллегу ● прособеседовали 50+ DevOps Engineers ● все согласны что хранить секреты в репе это плохо ● никто ничего не делает ● но все примерно знают что делать
  • 5. Но почему? ● с низким приоритетом ● занимает много времени ● сложно разворачивать ● сложно поддерживать ● шапочка из фольги
  • 6.
  • 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. Но … Проблем будет еще больше! А как сделать, чтобы проблем было меньше?
  • 27.
  • 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