Открыть сервис

HashiCorp Vault: управление секретами

HashiCorp Vault — это программное обеспечение с открытым исходным кодом для централизованного управления секретами и защиты конфиденциальных данных в ИТ-инфраструктуре. Vault позволяет организациям безопасно хранить, выдавать по запросу и контролировать доступ к таким данным, как пароли, API-ключи, сертификаты и токены доступа. Инструмент был разработан компанией HashiCorp и впервые выпущен в 2015 году; он входит в экосистему продуктов этой компании наряду с Terraform, Consul и Nomad.

Назначение и решаемые задачи

Основная задача Vault — устранить проблему «секретов в коде» и разрозненного хранения учётных данных. В традиционных архитектурах пароли и ключи часто хранятся в файлах конфигурации, переменных окружения или базах данных, что создаёт риски утечки и затрудняет ротацию. Vault предоставляет единую точку доступа, где секреты хранятся в зашифрованном виде и выдаются приложениям и пользователям только после прохождения аутентификации и авторизации. Это централизует контроль, позволяет вести полный аудит операций и автоматически управлять жизненным циклом секретов.

Ключевые возможности

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

Динамические секреты

Одной из главных особенностей Vault является возможность генерации динамических секретов. Вместо статически заданных паролей система создаёт учётные данные по запросу, например, для базы данных или облачного провайдера. Такие секреты имеют ограниченный срок действия (TTL) и автоматически отзываются по истечении времени или при явном удалении аренды. Это снижает риск компрометации, поскольку скомпрометированный секрет быстро перестаёт действовать, и упрощает ротацию.

Шифрование данных

Vault предоставляет службу шифрования как сервис (Encryption as a Service). Приложения могут отправлять данные в Vault для шифрования и дешифрования, не реализуя собственную криптографию. Ключи шифрования хранятся в Vault и управляются централизованно, что упрощает их ротацию и соответствие требованиям безопасности.

Хранение секретов

Для статических секретов (например, учётных записей администраторов или ключей сторонних сервисов) Vault обеспечивает надёжное хранение. Данные шифруются перед записью в бэкенд хранения, а доступ к ним контролируется политиками.

Аренда и возобновление

Выданные секреты оформляются как «аренды» с ограниченным сроком жизни. Клиент может продлевать аренду, пока приложение использует секрет, а по завершении работы — аннулировать её. Это позволяет точно отслеживать, какие секреты активны в данный момент.

Отзыв и ротация

Vault поддерживает немедленный отзыв секретов, что критически важно при подозрении на утечку или увольнении сотрудника. При отзыве все связанные с секретом аренды аннулируются, а динамические учётные данные уничтожаются или деактивируются в целевой системе.

Архитектура и компоненты

Архитектура Vault построена вокруг нескольких ключевых компонентов, взаимодействующих друг с другом.

Ядро (Core)

Ядро Vault отвечает за обработку запросов, управление политиками, аудит и координацию работы всех компонентов. Оно не хранит секреты напрямую, а передаёт их в настроенные бэкенды.

Секретные движки (Secrets Engines)

Секретные движки определяют, как Vault генерирует, хранит или выдает секреты. Они подключаются к конкретным системам: базам данных, облачным провайдерам, инфраструктуре PKI, системам типа Active Directory и другим. Примеры движков: kv (ключ-значение для статического хранения), database, aws, pki, ssh.

Бэкенды хранения (Storage Backends)

Vault сам не хранит данные на диске напрямую, а использует внешние бэкенды хранения, такие как Consul, etcd, ZooKeeper, базы данных SQL или файловая система. Это обеспечивает высокую доступность и отказоустойчивость.

Аутентификация (Auth Methods)

Перед получением доступа субъект (человек или приложение) должен пройти аутентификацию. Поддерживаются разнообразные методы: токены, логин/пароль, LDAP, GitHub, Kubernetes, JWT/OIDC, облачные IAM-роли (AWS, Azure, GCP) и другие.

Политики доступа (Policies)

Авторизация в Vault основана на политиках, написанных на языке HCL (HashiCorp Configuration Language). Политики определяют, какие пути в Vault доступны субъекту и какие операции (чтение, запись, обновление, удаление) ему разрешены. Политики строятся по принципу наименьших привилегий.

Аудит (Audit Devices)

Для обеспечения безопасности Vault может записывать все запросы и ответы в журналы аудита, отправляемые в файлы или внешние системы (например, syslog). Это позволяет отслеживать, кто и когда получал доступ к секретам.

Режимы работы и высокая доступность

Vault может работать в двух основных режимах: одиночный сервер (dev/prod) и кластер с высокой доступностью. В кластерном режиме один узел назначается активным и обрабатывает все запросы, остальные находятся в режиме ожидания и синхронизируют состояние. При сбое активного узла происходит автоматическое переключение на резервный. Для работы кластера требуется общий бэкенд хранения (например, Consul или Raft).

Печать (Seal/Unseal)

При запуске или перезапуске Vault находится в запечатанном состоянии (sealed). Ключи шифрования данных зашифрованы мастер-ключом, который нигде не хранится в открытом виде. Для распечатывания (unseal) требуется ввести определённое количество ключевых долей (shamir secret sharing). Администратор может разделить мастер-ключ на несколько частей и распределить их между доверенными лицами; для открытия Vault требуется собрать пороговое количество долей. Это защищает данные даже при компрометации одного администратора.

Варианты использования

Vault применяется в различных сценариях, включая:

  • Управление доступом приложений к базам данных: приложение получает динамический пароль для подключения к БД на время своей работы.
  • Выпуск сертификатов PKI: Vault выступает в роли центра сертификации (CA) и автоматически выдаёт сертификаты для сервисов с коротким сроком жизни.
  • Хранение облачных учётных данных: Vault генерирует временные ключи доступа для облачных API (AWS, Azure, GCP).
  • Шифрование данных в приложениях: сервисы передают данные в Vault для шифрования перед записью в хранилище.
  • SSH-доступ: Vault может выдавать одноразовые пароли или сертификаты для доступа к серверам по SSH.

Интеграция и экосистема

Vault тесно интегрируется с другими продуктами HashiCorp. Например, Terraform может обращаться к Vault для получения секретов при развёртывании инфраструктуры, а Consul используется как бэкенд хранения. Для Kubernetes существует отдельный контроллер (Vault Agent Injector), позволяющий автоматически внедрять секреты в поды. Кроме того, доступны клиентские библиотеки для популярных языков программирования (Go, Python, Java, Ruby, .NET) и RESTful API для интеграции с любыми системами.

Лицензирование и версии

Vault распространяется в двух редакциях: Open Source (OSS) с лицензией Mozilla Public License 2.0 и коммерческая Enterprise-версия. В OSS-версии доступны основные функции: хранение секретов, динамические секреты, шифрование, политики и аудит. Enterprise-версия добавляет функции для крупных организаций, такие как репликация между кластерами, многотенантность (namespaces), расширенное шифрование (HSM), контроль производительности и другие. Компания HashiCorp основана в 2012 году Митчеллом Хашимото и Армоном Дадгаром.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →