Содержание

Используем Hashicorp Vault для хранения секретов Docker

Hashicorp Vault приложение для централизованного хранения секретов: паролей, логинов, сертификатов и токенов (Vault в переводе с английского — сейф). С его помощью можно улучшить безопасность программного кода, убрав из него все секретные данные и перенеся их в Vault.

Приложение интегрируется со многими популярными системами:

Docker Secrets vs Vault

Docker Secrets и Vault (разработанный HashiCorp) - это два разных инструмента для управления конфиденциальными данными, такими как пароли, токены, ключи и другие секреты. Основные отличия между ними: Docker Secrets используется в первую очередь для управления секретами в Docker Swarm, оркестрационной системе для Docker контейнеров (собственно разработан Docker Secrets специально для Docker Swarm). Vault: Представляет собой более универсальное решение для управления секретами, подходит для разнообразных сред и инфраструктур, не ограничиваясь только Docker.

Установка Vault

Vault написан на Go и распространяется как статично собранный бинарник — это отличный вариант, чтобы протестировать всё прямо на локальной машине. Vault может быть установлено на все популярные системы: macOS, Windows, Linux, FreeBSD.

Установка, настройка и работа с Hashicorp Vault

Запуск сервера в режиме разработки невероятно небезопасен и хранит все данные в памяти, а это означает, что при его перезапуске все будет потеряно. Сервер разработки следует использовать для экспериментов с функциями Vault, такими как: различные методы аутентификации, механизмы секретов, устройства аудита и т. д. Чтобы запустить сервер разработки, просто запустите команду, где -dev указывает, что мы должны запускать сервер разработки, а не рабочий сервер:

vault server -dev

Сервер разработки по умолчанию не запускается как демон. На сервере разработки Vault по умолчанию не запечатан (unsealed).

При первом запуске производственного сервера Vault важно его инициализировать. Этот процесс сгенерирует ключи шифрования и начальный корневой токен, и его можно будет запустить только с новыми хранилищами без каких-либо данных:

vault operator init

Где хранить секрет для доступа к секрету :)

Секрет доступа к секрету — это та часть безопасности, которая называется аутентификацией. У безопасности есть еще одна часть — авторизация. В процессе авторизации проверяется, можно ли пользователю получить доступ именно туда, куда он запрашивает. В случае с Vault есть доверенная третья сторона, которая решает, выдать секрет или нет.