Vault(Система хранения секретов)

⌘K

Vault(Система хранения секретов)

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

Vault поддерживает как статические, так и динамические секреты, позволяя централизованно управлять жизненным циклом данных доступа. Это делает Vault одним из ключевых инструментов в безопасных DevOps- и cloud-native-архитектурах.


Основные возможности Vault

  • Централизованное хранилище секретов с тонкой настройкой политик доступа (ACL/RBAC);
  • Динамическая генерация секретов — временные логины для БД, облаков и API;
  • Шифрование как сервис (
    Transit Secrets Engine
    ) — шифрование/дешифрование без хранения данных;
  • PKI — выдача и управление TLS-сертификатами;
  • Аудит — запись всех операций в журнал для отслеживания и комплаенса;
  • Интеграция с аутентификацией: LDAP, GitHub, Kubernetes, AWS IAM, JWT;
  • Ротация и TTL — автоматическое истечение и обновление ключей;
  • Secrets Injection — передача секретов в рантайме без сохранения на диск (через sidecar или env-injection).

Примеры того, чем управляет Vault

  • Пароли к базам данных (PostgreSQL, MySQL, MongoDB);
  • Ключи API и OAuth-токены;
  • SSH-ключи для серверов;
  • TLS/SSL-сертификаты для сервисов;
  • AWS access credentials и IAM tokens;
  • Ключи шифрования и JWT-секреты.

Как это работает

  1. Хранилище: все секреты зашифрованы и хранятся в backend’е (файловая система, Consul, S3 и др.);
  2. Secrets Engines: определяют, как обрабатываются запросы — хранилище, генерация, проксирование;
  3. Auth Methods: определяют, кто и как может получить доступ (Kubernetes, LDAP, AppRole, GitHub и др.);
  4. Policies (ACL): управляют, кто имеет право читать, писать или создавать секреты;
  5. Audit Devices: журналируют каждый доступ и операцию — обязательный элемент комплаенса.

Пример: выдача временного пароля PostgreSQL

vault write database/roles/readonly \ db_name=postgres \ creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}';" \ default_ttl="1h" \ max_ttl="24h" vault read database/creds/readonly

📌 Vault сам создаёт логин/пароль, действует 1 час, потом истекает. Нет необходимости в постоянных ключах.


Интеграция с Kubernetes

  • Vault Agent Injector: автоматически добавляет в поды секреты через
    initContainer
    или
    sidecar
    ;
  • Kubernetes Auth Method: выдача токенов и доступов на основе serviceAccount;
  • Vault CSI Provider: монтирование секретов как тома.

Типовые сценарии использования

  • DevSecOps: безопасная передача секретов в CI/CD пайплайны;
  • Cloud Security: временные AWS credentials через Vault AWS Engine;
  • Zero Trust архитектура: каждый сервис аутентифицируется и получает только нужные секреты;
  • GitOps и Sealed Secrets: дешифровка secrets на этапе apply без хранения в git.

Преимущества Vault

  • Поддержка сложных сценариев (RBAC, шифрование, логика выдачи);
  • Совместимость с multi-cloud и гибридными средами;
  • Аудит, комплаенс и отслеживаемость всех операций;
  • Гибкая архитектура (self-hosted, HCP Vault, Kubernetes-native);
  • Надёжность: HA-модель, TLS, автоматическое unseal через cloud provider KMS.

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


Практические манифесты и конфигурации для реальной работы с Vault — включая развёртывание в Kubernetes, интеграцию с pod’ами, и использование dynamic secrets.

1. Установка Vault в Kubernetes (через Helm)

helm repo add hashicorp https://helm.releases.hashicorp.com helm install vault hashicorp/vault \ --set "server.dev.enabled=true" \ --set "injector.enabled=true" \ --namespace vault --create-namespace

📌 Для продакшена замени

dev.enabled=true
на HA-конфигурацию с backend (например, Consul, S3 или Raft).


2. Настройка Kubernetes Auth Method

vault auth enable kubernetes vault write auth/kubernetes/config \ token_reviewer_jwt="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \ kubernetes_host="https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT" \ kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt

📌 Vault теперь может аутентифицировать pod’ы через ServiceAccount.


3. Пример policy (ACL)

# db-readonly-policy.hcl path "database/creds/readonly" { capabilities = ["read"] }
vault policy write db-readonly db-readonly-policy.hcl

4. Role на основе ServiceAccount

vault write auth/kubernetes/role/db-reader \ bound_service_account_names=app-sa \ bound_service_account_namespaces=default \ policies=db-readonly \ ttl=1h

📌 Любой под с

serviceAccountName: app-sa
в namespace
default
сможет получить временные creds.


5. Vault Agent Injector (sidecar-инъекция в pod)

apiVersion: v1 kind: Pod metadata: name: app-with-secret annotations: vault.hashicorp.com/agent-inject: "true" vault.hashicorp.com/role: "db-reader" vault.hashicorp.com/agent-inject-secret-db-creds.txt: "database/creds/readonly" spec: serviceAccountName: app-sa containers: - name: app image: alpine command: ["sleep", "3600"]

📌 Секрет будет доступен в

/vault/secrets/db-creds.txt
внутри контейнера.


6. Dynamic Secret: PostgreSQL

vault secrets enable database vault write database/config/pg-db \ plugin_name=postgresql-database-plugin \ allowed_roles="readonly" \ connection_url="postgresql://vaultadmin:pass@db.internal.local:5432/postgres?sslmode=disable" vault write database/roles/readonly \ db_name=pg-db \ creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}';" \ default_ttl="1h" \ max_ttl="24h"

📌 Секреты генерируются на лету — Vault управляет всем: паролем, сроком действия, ревокацией.


7. Альтернатива: HCP Vault (SaaS)

Если не хочешь управлять инфраструктурой — HashiCorp предоставляет Vault в облаке (HCP Vault). Он поддерживает все функции Vault, включая Kubernetes и Terraform-интеграции, но не требует поддержки сервера.


VPS с перспективой

Планируете VPS на год? С кодом NEWCOM получаете больше, чем рассчитывали.

Месяц в подарок
COPIED
NEWCOM COPIED