Учебник HashiCorp Vault для начинающих
Пароли в коде, токены в .env, ключи доступа, закоммиченные в git — типичная боль любой команды. Этот курс показывает, как навести порядок с помощью HashiCorp Vault: централизованно хранить секреты, выдавать приложениям временные креды по запросу, шифровать данные как сервис и логировать каждое обращение.
Мы пройдём путь от проблемы «secret sprawl» и базовой работы с vault kv до динамических секретов БД и облака, движков transit и PKI, интеграции с Kubernetes и продакшн-разворачивания с HA и авто-unseal. Курс рассчитан на инженеров, знакомых с командной строкой, Docker и основами сетевой безопасности.
Курс «HashiCorp Vault: управление секретами» состоит из 9 разделов и 31 урока: Проблема секретов и знакомство с Vault, Архитектура: seal/unseal и хранилище, Установка, запуск и базовая работа, Аутентификация: кто заходит в Vault, Политики и токены, Динамические секреты, Шифрование, сертификаты и SSH, Интеграция с приложениями и Kubernetes и Аудит, продакшн и практики. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Проблема секретов и знакомство с Vault
- Почему секреты нельзя хранить в коде
Хардкод паролей, .env в гите, секреты в репозитории — почему это опасно и к чему приводит на практике.
- Secret sprawl: как секреты расползаются
Что такое secret sprawl — расползание секретов по репозиториям, CI, чатам и образам — и почему его трудно контролировать.
- Что такое HashiCorp Vault
HashiCorp Vault — централизованная система хранения и управления секретами, шифрование как сервис: что он умеет и где применяется.
- Почему секреты нельзя хранить в коде
2 Архитектура: seal/unseal и хранилище
- Storage backend и барьер шифрования
Где Vault хранит данные, почему storage backend не доверенный и что такое криптографический барьер.
- Seal и unseal: запечатывание Vault
Что такое запечатанное состояние, как мастер-ключ открывает барьер и почему после старта Vault нужно распечатывать.
- Разделение ключа: схема Шамира
Shamir's Secret Sharing — как мастер-ключ делится на части с порогом, зачем это нужно и как задаются shares и threshold.
- Storage backend и барьер шифрования
3 Установка, запуск и базовая работа
- Dev-режим и первый запуск
Запуск Vault в dev-режиме для обучения: что он делает автоматически и почему категорически не годится для прода.
- Prod-режим: init и unseal на практике
Запуск Vault с конфигом, инициализация operator init, распечатывание тремя ключами и первый вход root-токеном.
- Статические секреты: KV put и get
Хранение и чтение статических секретов через движок KV: vault kv put, get, list и работа с полями.
- KV v2: версии секретов
Версионирование секретов в KV v2: история значений, откат, soft delete и destroy, отличия от KV v1.
- Движки секретов и пути
Secrets engines как модули по путям: монтирование, перечисление, изоляция движков и почему всё в Vault организовано путями.
- Dev-режим и первый запуск
4 Аутентификация: кто заходит в Vault
- Auth-методы и принцип логина
Как устроена аутентификация в Vault: методы как плагины, логин в обмен на токен и привязка к политикам.
- AppRole: вход для приложений
AppRole — как приложение логинится в Vault через RoleID и SecretID, зачем разделять эти части и где брать SecretID.
- Kubernetes, LDAP и OIDC
Аутентификация подов через Kubernetes auth по ServiceAccount-токену и вход людей через LDAP и OIDC/SSO.
- Auth-методы и принцип логина
5 Политики и токены
- Политики на HCL и capabilities
Как пишутся политики Vault на HCL: пути и capabilities (read, create, update, delete, list, deny), запрет приоритетнее.
- Принцип наименьших привилегий
Least privilege в Vault: проектирование узких политик по приложениям и средам, разделение чтения и записи, аудит прав.
- Токены: TTL, renew, revoke, иерархия
Жизненный цикл токена Vault: создание, время жизни TTL и max_TTL, продление renew, отзыв revoke и древовидная иерархия.
- Политики на HCL и capabilities
6 Динамические секреты
- Идея динамических секретов
Чем динамические секреты лучше статических: уникальные временные креды по запросу, авто-отзыв и сужение окна компрометации.
- Database engine: креды для Postgres
Настройка database secrets engine для PostgreSQL: connection, роль с creation_statements и выдача временных кредов по запросу.
- Облачные секреты: AWS engine
AWS secrets engine: динамическая выдача временных IAM-кредов по запросу, типы iam_user и assumed_role, авто-отзыв.
- Leasing и renewal: аренда секретов
Как работает аренда динамических секретов: lease_id, lease_duration, продление renew, отзыв revoke и каскадный отзыв.
- Идея динамических секретов
7 Шифрование, сертификаты и SSH
- Transit: шифрование как сервис
Transit engine: encryption-as-a-service — Vault шифрует и расшифровывает данные, не храня их, ключи не покидают Vault.
- PKI: Vault как центр сертификации
PKI engine: Vault выпускает короткоживущие TLS-сертификаты по запросу, роли с разрешёнными доменами, выдача issue.
- SSH-секреты: обзор
Обзор SSH secrets engine: подписанные SSH-сертификаты и одноразовые пароли (OTP) вместо раздачи статических ключей.
- Transit: шифрование как сервис
8 Интеграция с приложениями и Kubernetes
- Vault Agent и auto-auth
Vault Agent: автоматическая аутентификация (auto-auth), кэш токена и шаблоны для рендеринга секретов в файлы.
- Vault Agent Injector в Kubernetes
Vault Agent Injector: автоматическая инъекция секретов в поды через sidecar по аннотациям, без изменения образа приложения.
- Чтение секретов из кода и CSI
Работа с Vault из кода через клиент: логин и чтение секретов при старте; обзор Secrets Store CSI Driver как альтернативы.
- Vault Agent и auto-auth
9 Аудит, продакшн и практики
- Audit devices: логирование обращений
Audit-устройства Vault: журналирование всех запросов и ответов, хеширование секретов в логах, требование хотя бы одного устройства.
- HA, авто-unseal и продакшн
Продакшн-Vault: высокая доступность через Raft-кластер, активный и standby узлы, авто-unseal через облачный KMS.
- Vault и альтернативы
Сравнение Vault с AWS Secrets Manager, Sealed Secrets и SOPS: сильные стороны, ниши и когда что выбирать.
- Ошибки, best practices и пример
Типичные ошибки (root token в проде, нет ротации, широкие политики), best practices и сквозной пример: приложение берёт креды БД динамически.
- Audit devices: логирование обращений