SlideShare a Scribd company logo
1 of 33
Download to read offline
Управление секретами в
кластере Kubernetes при
помощи Hashicorp Vault
Сергей Носков
Avito
snoskov@avito.ru
План
1. Управление секретами
2. Hashicorp Vault
3. Vault + Configuration management system
4. Vault + Kubernetes
Секрет
Практически любая конфиденциальная информация
● логин + пароль (например, к БД)
● API-ключ
● ключ сертификата сервера (*.google.com)
● ключ клиентского сертификата (партнёры,
Yandex money, QIWI, ...)
● ключ для подписи мобильных приложений
статистика Infowatch
Конфиденциальностьсекретов в ДЦ
○ внешние угрозы - всё хорошо, всё умеем: firewall, VPN, …
○ внутренние угрозы:
● локально на серверах
● репозиторий с кодом, доступ ограничен
● отдельный репозиторий, доступ ограничен
● много отдельных репозиториев, доступ ограничен
● хранить в репозитории Configuration management system или в
отдельной БД
Проблемы
● внутренние утечки
● шифрование
● аудит
● управление доступом
x10 - x100 при переходе на микросервисы!
Hashicorp Vault
Хранилище секретов для мира микросервисов и не только
● REST, JSON
● стандартные БД в качестве хранилища
● прозрачное шифрование, с безопасным управлением ключами
● принцип минимальных привилегий и политики доступа
● расширяемые API для авторизации и разных видов секретов
● open source (Mozilla Public License 2.0)
Vault
Hashicorp Vault
Hashicorp Vault: wrapping
Способ делегирования прав на чтение секрета
● создать временный токен, не передавать сам секрет
● передать токен
● прочитать секрет по токену
● …
● PROFIT
AppRole auth backend
Role ID = любой (возможно, секретный) ID + настройки(ttl, num_uses)
Secret ID = любой секретный ID
Проблемы
● проблема курицы и яйца
● недостаток инструментов автоматизации
● нет поиска по “файловой системе”
● не очень удобные политики
● нет встроенного GUI, внедрение веб-UI увеличит
риски
Проблема порочного круга
● секрет нельзя отдавать кому попало
● идентификации недостаточно
● аутентификация не подходит:
для получения секрета нужен секрет
Решение: авторизация у доверенного
авторитета
Риски доверенного авторитета
● собственные секреты (для выдачи доступа к секретам)
● передача секрета по сети
● запрос секрета внешним клиентом
● запрос легитимным клиентом не своего секрета
● маскировка под легитимного клиента
Puppet + Hiera
Hiera - встроенное в паппет расширяемое иерархическое key-value
хранилище с доступом к данным на основе фактов.
Например
/hiera/host/www1.example.com/
/hiera/hostgroup/www/
/hiera/ssl-terminator/yes/
Puppet + Hiera + Vault
Доверенный авторитет - puppet master
Секрет-файл
{
“encoding”: “base64”,
“data”: “TE9MIEtFSyBDSEVCVVJFSwo=”,
“filename”: ”some.secret”,
“mode”: ”400”,
“owner”: “root”,
“group”: ”root”,
}
Риски hiera как доверенного авторитета
✓ собственные секреты - локально на сервере*
✓ передача секрета по сети - TLS
✓ запрос секрета внешним клиентом - PKI
✓ запрос легитимным клиентом не своего секрета - Hiera
✓ маскировка под легитимного клиента - PKI
* не в Vault, но принцип минимальных привилегий соблюдается
Kubernetes: секреты
Чуть лучше хранения в репозитории(если включена аутентификация в etcd):
● нет шифрования
● неудобный контроль
● сложные политики
● работают только внутри Kubernetes
● пока что не расширяются
Kubernetes: аннотации
Призваны расширять функционал k8s.
Могут содержать важную для безопасности информацию:
● сетевые политики
● инит-контейнеры
● «Pointers to logging, monitoring, analytics, or audit repositories»
Важно: проверять аннотации перед выкаткой подов
Kubernetes
Доверенный авторитет: Kubernetes API
Существующие решения: Kelsey Hightower’s
Kelsey Hightower’s
+ init container -> volume -> application
+ стратегия: push по запросу
+ авторитет k8s
- политика Vault в аннотации
- нет шифрования по сети
Риски Kelsey Hightower’s
! дополнительный риск: можно указать (почти) любую политику Vault
✕ собственные секреты - через environment
✕ передача секрета по сети - не шифруется
✓ запрос секрета внешним клиентом - k8s API
✓ запрос легитимным клиентом не своего секрета - проверка аннотаций
✓ маскировка под легитимного клиента - проверка аннотаций
Существующие решения: Bootsport’s
Существующие решения: Bootsport’s
+ все «+» от Kelsey Hightower’s
+ approle backend - отделение авторизации от секретов
+ role_id в аннотации
- event watch:
- привилегии на чтение событий
- рассинхронизация
- Raft
- wrapping
- HTTPS = self-signed snakeoil overkill
- доставка только токена
Риски Bootsport’s
✕ собственные секреты - через СonfigMap
✓ маскировка под легитимного клиента - надо знать role_id
✓ запрос легитимным клиентом не своего секрета - надо знать role_id
✓ передача секрета по сети - TLS
✓ запрос секрета внешним клиентом - k8s API
✓ маскировка под легитимного клиента - проверка аннотаций
vault-controller в Avito
vault-controller в Avito
Все плюсы существующих решений, пони, батарейки
+ init container -> volume -> application
+ авторитет k8s + проверка по IP
+ push-стратегия
+ approle backend
+ role_id в аннотации
+ чтение токена с stdin или k8s -секрета
+ шифрование на RSA
+ выкладка файлов вместо токена
Риски Avito vault-controller
✓ собственные секреты - stdin или k8s secrets
✓ маскировка под легитимного клиента - надо знать role_id
✓ запрос легитимным клиентом не своего секрета - надо знать role_id
✓ передача секрета по сети - RSA
✓ запрос секрета внешним клиентом - k8s API
✓ маскировка под легитимного клиента - проверка аннотаций
Нюансы
● vault-controller не должен читать секреты, только выдавать SecretID
● стоит ограничить время жизни(ttl) и количество использований SecretID
● в разных кластерах могут быть одинаковые namespace (dev vs prod)
● в разных namespace могут быть одинаковые поды (monitoring, proxy, ...)
● некоторым подам нужны секреты из разных мест (backup + certificate)
● аннотации можно проверять через Authorization webhook или на CI
Итоги
↓ пора защищаться от внутренних утечек
↓ пора начинать управлять секретами
↓ Hashicorp Vault снижает риски управления секретами
↓ потребуется доверенный авторитет
↓ доверенный авторитет также подвержен угрозам
↓ секреты Kubernetes - не так безопасны, как хотелось бы
↓ аннотации Kubernetes - тонкое место, их надо проверять
Ссылки
● https://infowatch.com/report2016_half
● https://www.vaultproject.io/
● https://github.com/jovandeginste/hiera-router
● https://github.com/jsok/hiera-vault
● https://github.com/kubernetes/kubernetes/issues/10439
● https://github.com/kelseyhightower/vault-controller
● https://github.com/Boostport/kubernetes-vault
Questions?

More Related Content

What's hot

Пряморукий DNS: делаем правильно / Лев Николаев (Макснет)
Пряморукий DNS: делаем правильно / Лев Николаев (Макснет)Пряморукий DNS: делаем правильно / Лев Николаев (Макснет)
Пряморукий DNS: делаем правильно / Лев Николаев (Макснет)Ontico
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годBadoo Development
 
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Ontico
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Ontico
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupBadoo Development
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам AnsibleDenis Honig
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Ontico
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасRuslan Sharipov
 
Проникновение в Docker с примерами
Проникновение в Docker с примерамиПроникновение в Docker с примерами
Проникновение в Docker с примерамиДмитрий Столяров
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Ontico
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooBadoo Development
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersAleksey Fomkin
 
Антон Турецкий
Антон ТурецкийАнтон Турецкий
Антон ТурецкийCodeFest
 
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Badoo Development
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Anton Turetsky
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей СитникCodeFest
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Ontico
 

What's hot (20)

Пряморукий DNS: делаем правильно / Лев Николаев (Макснет)
Пряморукий DNS: делаем правильно / Лев Николаев (Макснет)Пряморукий DNS: делаем правильно / Лев Николаев (Макснет)
Пряморукий DNS: делаем правильно / Лев Николаев (Макснет)
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)
 
Docker networking
Docker networkingDocker networking
Docker networking
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам Ansible
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчас
 
Проникновение в Docker с примерами
Проникновение в Docker с примерамиПроникновение в Docker с примерами
Проникновение в Docker с примерами
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
 
Антон Турецкий
Антон ТурецкийАнтон Турецкий
Антон Турецкий
 
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
 

Similar to Управление секретами в кластере Kubernetes при помощи Hashicorp Vault / Сергей Носков (Avito)

Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложенияMaxim Krentovskiy
 
Стажировка 2016-08-04 01 Денис Нелюбин. Шифрование и безопасность
Стажировка 2016-08-04 01 Денис Нелюбин. Шифрование и безопасностьСтажировка 2016-08-04 01 Денис Нелюбин. Шифрование и безопасность
Стажировка 2016-08-04 01 Денис Нелюбин. Шифрование и безопасностьSmartTools
 
инфраструктура открытых ключей (Pki)
инфраструктура открытых ключей (Pki)инфраструктура открытых ключей (Pki)
инфраструктура открытых ключей (Pki)Yandex
 
#MBLTdev: Знакомство с codesign (e-Legion)
#MBLTdev: Знакомство с codesign (e-Legion)#MBLTdev: Знакомство с codesign (e-Legion)
#MBLTdev: Знакомство с codesign (e-Legion)e-Legion
 
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Ontico
 
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...Ontico
 
Dv w2k-sec-concepts
Dv w2k-sec-conceptsDv w2k-sec-concepts
Dv w2k-sec-conceptstrenders
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформуVadim Kruchkov
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
11 лекция, петр волков
11 лекция, петр волков11 лекция, петр волков
11 лекция, петр волковkarina krew
 
Эффективное управление ПО под *nix
Эффективное управление ПО под *nixЭффективное управление ПО под *nix
Эффективное управление ПО под *nixAndrew Pantyukhin
 
Kubernetes security best practice
Kubernetes security best practiceKubernetes security best practice
Kubernetes security best practiceDmitry Lazarenko
 
Решения ООО "Автор" - надежность и конфиденциальность
Решения ООО "Автор" - надежность и конфиденциальностьРешения ООО "Автор" - надежность и конфиденциальность
Решения ООО "Автор" - надежность и конфиденциальностьNick Turunov
 
Service mesh для микросервисов
Service mesh для микросервисовService mesh для микросервисов
Service mesh для микросервисовIvan Kruglov
 
SafeNet Authentication Manager - Двухфакторная аутентификация
SafeNet Authentication Manager - Двухфакторная аутентификацияSafeNet Authentication Manager - Двухфакторная аутентификация
SafeNet Authentication Manager - Двухфакторная аутентификацияDaria Kovalenko
 
разработка безопасного кода
разработка безопасного кодаразработка безопасного кода
разработка безопасного кодаAndrey Somsikov
 
"Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript""Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript"FDConf
 
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...Dmitry Evteev
 
Безопасность беспроводных ЛВС: как взломали вашу сеть и как вы могли этого из...
Безопасность беспроводных ЛВС: как взломали вашу сеть и как вы могли этого из...Безопасность беспроводных ЛВС: как взломали вашу сеть и как вы могли этого из...
Безопасность беспроводных ЛВС: как взломали вашу сеть и как вы могли этого из...Positive Hack Days
 

Similar to Управление секретами в кластере Kubernetes при помощи Hashicorp Vault / Сергей Носков (Avito) (20)

Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложения
 
Стажировка 2016-08-04 01 Денис Нелюбин. Шифрование и безопасность
Стажировка 2016-08-04 01 Денис Нелюбин. Шифрование и безопасностьСтажировка 2016-08-04 01 Денис Нелюбин. Шифрование и безопасность
Стажировка 2016-08-04 01 Денис Нелюбин. Шифрование и безопасность
 
инфраструктура открытых ключей (Pki)
инфраструктура открытых ключей (Pki)инфраструктура открытых ключей (Pki)
инфраструктура открытых ключей (Pki)
 
#MBLTdev: Знакомство с codesign (e-Legion)
#MBLTdev: Знакомство с codesign (e-Legion)#MBLTdev: Знакомство с codesign (e-Legion)
#MBLTdev: Знакомство с codesign (e-Legion)
 
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
 
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
 
Криптография
КриптографияКриптография
Криптография
 
Dv w2k-sec-concepts
Dv w2k-sec-conceptsDv w2k-sec-concepts
Dv w2k-sec-concepts
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформу
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
11 лекция, петр волков
11 лекция, петр волков11 лекция, петр волков
11 лекция, петр волков
 
Эффективное управление ПО под *nix
Эффективное управление ПО под *nixЭффективное управление ПО под *nix
Эффективное управление ПО под *nix
 
Kubernetes security best practice
Kubernetes security best practiceKubernetes security best practice
Kubernetes security best practice
 
Решения ООО "Автор" - надежность и конфиденциальность
Решения ООО "Автор" - надежность и конфиденциальностьРешения ООО "Автор" - надежность и конфиденциальность
Решения ООО "Автор" - надежность и конфиденциальность
 
Service mesh для микросервисов
Service mesh для микросервисовService mesh для микросервисов
Service mesh для микросервисов
 
SafeNet Authentication Manager - Двухфакторная аутентификация
SafeNet Authentication Manager - Двухфакторная аутентификацияSafeNet Authentication Manager - Двухфакторная аутентификация
SafeNet Authentication Manager - Двухфакторная аутентификация
 
разработка безопасного кода
разработка безопасного кодаразработка безопасного кода
разработка безопасного кода
 
"Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript""Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript"
 
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
 
Безопасность беспроводных ЛВС: как взломали вашу сеть и как вы могли этого из...
Безопасность беспроводных ЛВС: как взломали вашу сеть и как вы могли этого из...Безопасность беспроводных ЛВС: как взломали вашу сеть и как вы могли этого из...
Безопасность беспроводных ЛВС: как взломали вашу сеть и как вы могли этого из...
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Управление секретами в кластере Kubernetes при помощи Hashicorp Vault / Сергей Носков (Avito)

  • 1. Управление секретами в кластере Kubernetes при помощи Hashicorp Vault Сергей Носков Avito snoskov@avito.ru
  • 2. План 1. Управление секретами 2. Hashicorp Vault 3. Vault + Configuration management system 4. Vault + Kubernetes
  • 3. Секрет Практически любая конфиденциальная информация ● логин + пароль (например, к БД) ● API-ключ ● ключ сертификата сервера (*.google.com) ● ключ клиентского сертификата (партнёры, Yandex money, QIWI, ...) ● ключ для подписи мобильных приложений статистика Infowatch
  • 4. Конфиденциальностьсекретов в ДЦ ○ внешние угрозы - всё хорошо, всё умеем: firewall, VPN, … ○ внутренние угрозы: ● локально на серверах ● репозиторий с кодом, доступ ограничен ● отдельный репозиторий, доступ ограничен ● много отдельных репозиториев, доступ ограничен ● хранить в репозитории Configuration management system или в отдельной БД
  • 5. Проблемы ● внутренние утечки ● шифрование ● аудит ● управление доступом x10 - x100 при переходе на микросервисы!
  • 6. Hashicorp Vault Хранилище секретов для мира микросервисов и не только ● REST, JSON ● стандартные БД в качестве хранилища ● прозрачное шифрование, с безопасным управлением ключами ● принцип минимальных привилегий и политики доступа ● расширяемые API для авторизации и разных видов секретов ● open source (Mozilla Public License 2.0)
  • 9. Hashicorp Vault: wrapping Способ делегирования прав на чтение секрета ● создать временный токен, не передавать сам секрет ● передать токен ● прочитать секрет по токену ● … ● PROFIT
  • 10. AppRole auth backend Role ID = любой (возможно, секретный) ID + настройки(ttl, num_uses) Secret ID = любой секретный ID
  • 11. Проблемы ● проблема курицы и яйца ● недостаток инструментов автоматизации ● нет поиска по “файловой системе” ● не очень удобные политики ● нет встроенного GUI, внедрение веб-UI увеличит риски
  • 12. Проблема порочного круга ● секрет нельзя отдавать кому попало ● идентификации недостаточно ● аутентификация не подходит: для получения секрета нужен секрет Решение: авторизация у доверенного авторитета
  • 13. Риски доверенного авторитета ● собственные секреты (для выдачи доступа к секретам) ● передача секрета по сети ● запрос секрета внешним клиентом ● запрос легитимным клиентом не своего секрета ● маскировка под легитимного клиента
  • 14. Puppet + Hiera Hiera - встроенное в паппет расширяемое иерархическое key-value хранилище с доступом к данным на основе фактов. Например /hiera/host/www1.example.com/ /hiera/hostgroup/www/ /hiera/ssl-terminator/yes/
  • 15. Puppet + Hiera + Vault Доверенный авторитет - puppet master
  • 16. Секрет-файл { “encoding”: “base64”, “data”: “TE9MIEtFSyBDSEVCVVJFSwo=”, “filename”: ”some.secret”, “mode”: ”400”, “owner”: “root”, “group”: ”root”, }
  • 17. Риски hiera как доверенного авторитета ✓ собственные секреты - локально на сервере* ✓ передача секрета по сети - TLS ✓ запрос секрета внешним клиентом - PKI ✓ запрос легитимным клиентом не своего секрета - Hiera ✓ маскировка под легитимного клиента - PKI * не в Vault, но принцип минимальных привилегий соблюдается
  • 18. Kubernetes: секреты Чуть лучше хранения в репозитории(если включена аутентификация в etcd): ● нет шифрования ● неудобный контроль ● сложные политики ● работают только внутри Kubernetes ● пока что не расширяются
  • 19. Kubernetes: аннотации Призваны расширять функционал k8s. Могут содержать важную для безопасности информацию: ● сетевые политики ● инит-контейнеры ● «Pointers to logging, monitoring, analytics, or audit repositories» Важно: проверять аннотации перед выкаткой подов
  • 22. Kelsey Hightower’s + init container -> volume -> application + стратегия: push по запросу + авторитет k8s - политика Vault в аннотации - нет шифрования по сети
  • 23. Риски Kelsey Hightower’s ! дополнительный риск: можно указать (почти) любую политику Vault ✕ собственные секреты - через environment ✕ передача секрета по сети - не шифруется ✓ запрос секрета внешним клиентом - k8s API ✓ запрос легитимным клиентом не своего секрета - проверка аннотаций ✓ маскировка под легитимного клиента - проверка аннотаций
  • 25. Существующие решения: Bootsport’s + все «+» от Kelsey Hightower’s + approle backend - отделение авторизации от секретов + role_id в аннотации - event watch: - привилегии на чтение событий - рассинхронизация - Raft - wrapping - HTTPS = self-signed snakeoil overkill - доставка только токена
  • 26. Риски Bootsport’s ✕ собственные секреты - через СonfigMap ✓ маскировка под легитимного клиента - надо знать role_id ✓ запрос легитимным клиентом не своего секрета - надо знать role_id ✓ передача секрета по сети - TLS ✓ запрос секрета внешним клиентом - k8s API ✓ маскировка под легитимного клиента - проверка аннотаций
  • 28. vault-controller в Avito Все плюсы существующих решений, пони, батарейки + init container -> volume -> application + авторитет k8s + проверка по IP + push-стратегия + approle backend + role_id в аннотации + чтение токена с stdin или k8s -секрета + шифрование на RSA + выкладка файлов вместо токена
  • 29. Риски Avito vault-controller ✓ собственные секреты - stdin или k8s secrets ✓ маскировка под легитимного клиента - надо знать role_id ✓ запрос легитимным клиентом не своего секрета - надо знать role_id ✓ передача секрета по сети - RSA ✓ запрос секрета внешним клиентом - k8s API ✓ маскировка под легитимного клиента - проверка аннотаций
  • 30. Нюансы ● vault-controller не должен читать секреты, только выдавать SecretID ● стоит ограничить время жизни(ttl) и количество использований SecretID ● в разных кластерах могут быть одинаковые namespace (dev vs prod) ● в разных namespace могут быть одинаковые поды (monitoring, proxy, ...) ● некоторым подам нужны секреты из разных мест (backup + certificate) ● аннотации можно проверять через Authorization webhook или на CI
  • 31. Итоги ↓ пора защищаться от внутренних утечек ↓ пора начинать управлять секретами ↓ Hashicorp Vault снижает риски управления секретами ↓ потребуется доверенный авторитет ↓ доверенный авторитет также подвержен угрозам ↓ секреты Kubernetes - не так безопасны, как хотелось бы ↓ аннотации Kubernetes - тонкое место, их надо проверять
  • 32. Ссылки ● https://infowatch.com/report2016_half ● https://www.vaultproject.io/ ● https://github.com/jovandeginste/hiera-router ● https://github.com/jsok/hiera-vault ● https://github.com/kubernetes/kubernetes/issues/10439 ● https://github.com/kelseyhightower/vault-controller ● https://github.com/Boostport/kubernetes-vault