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

Vault

Vault — это программное средство для безопасного хранения, управления и доступа к секретам (конфиденциальным данным), таким как пароли, ключи API, сертификаты и токены аутентификации. Vault относится к классу систем управления секретами (Secret Management Systems) и предназначен для централизованного контроля над чувствительной информацией в корпоративных и облачных инфраструктурах.

История

Разработка Vault была начата компанией HashiCorp в 2014 году. Первая публичная версия (0.1.0) была выпущена 27 апреля 2015 года. Проект с самого начала распространялся как открытое программное обеспечение под лицензией Mozilla Public License 2.0. Создателем Vault является Митчел Хасимото, также известный как основатель HashiCorp и автор таких инструментов, как Vagrant, Packer, Terraform и Consul.

Основной причиной создания Vault стала потребность в унифицированном решении для управления секретами в динамических средах, где традиционные методы (хранение паролей в конфигурационных файлах или базах данных) перестали отвечать требованиям безопасности. К 2016 году Vault стал одним из ключевых продуктов HashiCorp, наряду с Consul и Nomad. В 2020 году компания выпустила коммерческую версию Vault Enterprise с расширенными функциями репликации, автоматизации и соответствия стандартам.

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

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

Основные компоненты

  • Storage Backend (хранилище): физическое место хранения зашифрованных данных. Поддерживаются Consul, файловая система, базы данных (PostgreSQL, MySQL), облачные хранилища (S3, GCS) и специализированные решения (Raft, etcd).
  • Seal/Unseal (опечатывание/распечатывание): механизм защиты сервера. При запуске Vault находится в запечатанном состоянии и не может обрабатывать запросы. Для распечатывания требуется ввести определённое количество ключей (обычно используется схема Shamir’s Secret Sharing).
  • Authentication Backend (аутентификация): методы проверки подлинности пользователей и приложений. Поддерживаются токены, логин/пароль, LDAP, GitHub, Kubernetes, AWS IAM, JWT/OIDC и другие.
  • Secret Engine (движок секретов): модуль, определяющий тип хранимых данных и способ их генерации. Примеры: KV (ключ-значение), базы данных, PKI (инфраструктура открытых ключей), SSH, Transit (шифрование без раскрытия ключа).
  • Audit Device (устройство аудита): компонент для логирования всех запросов к Vault. Поддерживается запись в файлы, syslog, базы данных.

Процесс работы

  1. Клиент аутентифицируется в Vault через один из поддерживаемых методов.
  2. Vault выдаёт временный токен доступа с определёнными политиками (правилами).
  3. Клиент использует токен для запроса секрета из конкретного движка.
  4. Vault проверяет политики, дешифрует данные и возвращает их клиенту.
  5. Все действия фиксируются в журнале аудита.

Классификация

Vault классифицируется по нескольким признакам:

По типу развёртывания

  • Open Source: бесплатная версия с базовым функционалом.
  • Enterprise: коммерческая версия с дополнительными возможностями (репликация, HSM-поддержка, расширенный аудит).
  • Vault Cloud (HCP Vault): облачный сервис от HashiCorp, предоставляющий Vault как управляемую услугу.

По способу хранения

  • In-memory: данные хранятся только в оперативной памяти (для тестовых сред).
  • Persistent: данные сохраняются на диск или в базу данных.
  • Consul-based: хранение в распределённом хранилище Consul (наиболее распространённый вариант).

Применение

Vault широко используется в различных сценариях:

Управление паролями и ключами API

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

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

Vault может генерировать временные учётные данные для баз данных, облачных провайдеров (AWS, Azure, GCP) и SSH. Например, приложение запрашивает доступ к PostgreSQL, и Vault создаёт пользователя с ограниченным сроком жизни, который автоматически удаляется после истечения TTL.

Управление сертификатами (PKI)

Vault может выступать в роли внутреннего удостоверяющего центра (CA), выдавая и отзывая TLS-сертификаты для сервисов. Это упрощает управление шифрованием в микросервисных архитектурах.

Шифрование данных (Transit Engine)

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

Аутентификация и авторизация

Vault может служить центральным сервером аутентификации, интегрируясь с LDAP, Active Directory, OIDC-провайдерами и Kubernetes. Политики доступа (ACL) определяют, какие секреты может получить конкретный пользователь или сервис.

Интеграция с другими инструментами

Vault часто используется в связке с другими продуктами HashiCorp:

  • Consul: как хранилище и система обнаружения сервисов.
  • Nomad: для автоматического получения секретов при развёртывании задач.
  • Terraform: для управления секретами как ресурсами инфраструктуры.

Также Vault интегрируется с Kubernetes через Sidecar-контейнеры или CSI-драйверы, позволяя подам получать секреты без жёсткого кодирования.

Критика и ограничения

Несмотря на широкое распространение, Vault имеет ряд недостатков:

  • Сложность настройки: для корректной работы требуется понимание архитектуры и принципов безопасности. Ошибки в конфигурации могут привести к утечкам данных.
  • Производительность: при высокой нагрузке (тысячи запросов в секунду) Vault может стать узким местом, особенно при использовании медленных хранилищ.
  • Зависимость от Consul: в стандартной конфигурации Vault требует Consul для хранения данных, что увеличивает сложность инфраструктуры.
  • Лицензионные ограничения: коммерческая версия Vault Enterprise имеет ограничения по функционалу, недоступные в открытой версии.

Безопасность

Vault реализует несколько уровней защиты:

  • Шифрование данных: все секреты шифруются на стороне сервера с использованием AES-256-GCM.
  • Аудит: все запросы логируются, что позволяет отслеживать подозрительную активность.
  • Политики доступа: гибкая система ACL, основанная на путях (path-based policies).
  • Seal/Unseal: защита сервера от несанкционированного доступа при перезагрузке.
  • HSM-поддержка: в Enterprise-версии возможно использование аппаратных модулей безопасности для хранения мастер-ключа.

Интересные факты

  • Vault используется в крупных компаниях, включая Adobe, GitHub, Netflix и SAP.
  • В 2018 году HashiCorp выпустила Vault 1.0, добавив поддержку Raft-консенсуса для встроенного хранилища.
  • Существуют альтернативы Vault, такие как AWS Secrets Manager, Azure Key Vault, Google Secret Manager и open-source решения (CyberArk Conjur, Square Keywhiz).

Источники

  • HashiCorp. «Vault Documentation». Официальная документация проекта.
  • Mitchell Hashimoto. «The Vault: A New Tool for Managing Secrets». HashiCorp Blog, 2015.
  • Kelsey Hightower, Brendan Burns, Joe Beda. «Kubernetes: Up and Running». O'Reilly Media, 2017.
  • «HashiCorp Vault: Managing Secrets in Modern Infrastructure». Technical Report, HashiCorp, 2020.

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

На главную BFOmetr →