В разделе собраны готовые примеры решения типовых задач со Stronghold. Каждый пример построен одинаково: задача, что понадобится, пошаговая настройка, проверка результата и ссылки на справочные страницы с описанием всех параметров.

Команды приведены для Stronghold в Deckhouse Platform (d8 stronghold ...). Для Stronghold в Linux используйте команду stronghold с теми же аргументами. Функции, доступные только в Stronghold EE, отмечены в каталоге и на страницах примеров. Сравнение редакций приведено в разделе «Редакции».

Доступ и вход

Примеры в этом разделе:

ПримерЧто показывает
Интеграция с ALD ProВход в Stronghold под учётными записями домена ALD Pro: метод LDAP с LDAPS и сопоставлением групп с политиками, единый вход по Kerberos, ротация паролей служебных учётных записей через механизм секретов LDAP и типовые ошибки.
Интеграция с Active DirectoryВход в Stronghold под учётными записями Active Directory через метод LDAP с LDAPS, вложенными группами и UPN, а также ротация паролей служебных учётных записей AD механизмом секретов LDAP со схемой ad.
Единый вход через корпоративный IdP (OIDC)Как организовать единый вход в Stronghold через корпоративного провайдера идентификации по OIDC: общая схема, полный пример с Keycloak и сопоставлением групп с политиками, вход через Dex в DP и ссылки на руководства по провайдерам.
MFA для администраторовОбязательный второй фактор TOTP при входе администраторов в Stronghold: метод TOTP, правило login enforcement для группы администраторов, регистрация по QR-коду, вход в CLI и веб-интерфейсе, восстановление при утере устройства и контроль по журналу аудита.
Аварийный доступ (break-glass)Подготовка аварийного доступа к Stronghold на случай недоступности провайдера идентификации: резервная учётная запись в запечатанном конверте, процедура generate-root, аудит использования и ротация после применения.

Секреты в приложения

Примеры в этом разделе:

ПримерЧто показывает
Доставка секретов в поды KubernetesСравнение способов доставки секретов Stronghold в поды Kubernetes: CSI, env-injector, Stronghold Agent, External Secrets Operator и прямой вызов API.
Приложение на виртуальной машине со Stronghold AgentДоставка секретов в приложение на виртуальной машине: Stronghold Agent под systemd, аутентификация AppRole с обёрнутым secret_id, рендеринг шаблонов и перезагрузка приложения.
CI/CDПолучение секретов Stronghold в GitLab CI, GitHub Actions и Jenkins без статических токенов: JWT/OIDC и AppRole.
GitOpsКак не хранить секреты в Git при работе с Argo CD и Flux: External Secrets Operator, argocd-vault-plugin, SOPS и механизм секретов GitOps.
Terraform и AnsibleУправление конфигурацией Stronghold как кодом через Terraform-провайдер hashicorp/vault и получение секретов в Ansible через коллекцию community.hashi_vault.
TLS-сертификат для веб-сервера на ВМ из PKI StrongholdАвтоматический выпуск и обновление TLS-сертификата Nginx на виртуальной машине: роль PKI, политика, шаблон Stronghold Agent с pki/issue и перезагрузка Nginx после обновления; замечания для Apache.
Клиенты приложенийРабота со Stronghold из кода приложения: переменные окружения, Go, Python, Java (Spring Cloud Vault), Node.js, чтение KV, динамические учётные данные и продление токенов и аренд.
Локальный Stronghold для разработкиЗапуск Stronghold в Docker на рабочей станции разработчика: режим разработки server -dev и одноузловая конфигурация с Raft в Docker Compose.
AppRole для приложения и скриптовВход приложения без пользователя через AppRole: роль с ограничением по сетям, сроку жизни токена и числу использований secret_id, получение токена и чтение секрета.

Динамические учётные данные

Примеры в этом разделе:

ПримерЧто показывает
Динамические учётные данные PostgreSQL для приложения в DPВыдача приложению в Deckhouse Platform временных учётных данных PostgreSQL через механизм секретов database и метод аутентификации Kubernetes.
Динамические учётные данные MySQL и MariaDB для приложенияВыдача приложению временных пользователей MySQL или MariaDB с ограниченными правами через механизм секретов database: подключение, роль с GRANT, политика, продление, отзыв и проверка клиентом mysql.
Динамические учётные данные ClickHouse для приложенияВыдача приложению временных пользователей ClickHouse с заранее подготовленной ролью через механизм секретов database: подключение, роль, политика, продление, отзыв и проверка клиентом clickhouse-client.
Динамические пользователи RabbitMQ для сервисаВыдача сервису временных пользователей RabbitMQ с правами только на свой виртуальный хост и очереди через механизм секретов rabbitmq: подключение, аренда, роль, политика и проверка через rabbitmqctl.
Временный доступ к Kubernetes через токены ServiceAccountВыдача CI-заданиям и инженерам короткоживущих токенов ServiceAccount через механизм секретов kubernetes: роли с разрешёнными неймспейсами, генерируемые правила RBAC, получение токена и проверка через d8 k auth can-i.
Ротация паролей служебных учётных записейАвтоматическая смена паролей существующих служебных учётных записей в базах данных и LDAP через статические роли и библиотеки учётных записей.
Одноразовые коды TOTP для приложенияМеханизм секретов TOTP: ключ для пользователя приложения, получение и проверка кода, минимальная политика и защита от повторного использования кода.

Сертификаты

Примеры в этом разделе:

ПримерЧто показывает
Внутренний PKI на StrongholdПостроение двухуровневого PKI: корневой CA вне Stronghold или в отдельном mount, промежуточный CA в Stronghold, роли, выпуск сертификатов, CRL, OCSP, cert-manager и ACME.
cert-managerВыпуск TLS-сертификатов в Kubernetes через cert-manager с Issuer типа vault, механизмом секретов PKI Stronghold и аутентификацией Kubernetes.
Автоматические сертификаты через ACMEАвтоматический выпуск и продление TLS-сертификатов для внутренних серверов через ACME-сервер механизма PKI Stronghold: config/cluster, config/acme, EAB, certbot, lego и Caddy.
Доступ по SSH с подписанными сертификатамиНастройка доступа к серверам по SSH-сертификатам с коротким сроком жизни, которые пользователь получает в Stronghold после входа через OIDC.
Service meshИспользование PKI Stronghold как внешнего центра сертификации для Istio через cert-manager и istio-csr.

Шифрование и ключи

Примеры в этом разделе:

ПримерЧто показывает
Шифрование полей в базе данных с помощью TransitШифрование отдельных полей в базе данных приложения механизмом Transit, конвертное шифрование через datakey, ротация ключа, rewrap и min_decryption_version.
Автоматическое распечатывание через Yandex Cloud KMS (Stronghold EE)Standalone-сервер Stronghold с автоматическим распечатыванием через Yandex Cloud KMS: ключ и сервисный аккаунт в yc CLI, блок seal yandexcloudkms, инициализация с ключами восстановления, миграция с Shamir и проверка после перезапуска.
Автоматическое распечатывание и seal wrap через HSM (Stronghold EE)Защита root-ключа Stronghold EE аппаратным модулем через PKCS #11: блок seal pkcs11, лабораторный стенд на SoftHSM2, инициализация с ключами восстановления, двойное шифрование и рекомендации для production-HSM.

Эксплуатация

Примеры в этом разделе:

ПримерЧто показывает
Миграция с HashiCorp VaultПеренос секретов, политик, методов аутентификации, PKI и динамических секретов из HashiCorp Vault в Stronghold с планом переключения клиентов и отката.
Мультиарендность на основе пространств имён (Stronghold EE)Выделение каждой команде отдельного пространства имён с делегированным администрированием, собственными методами аутентификации и шаблонными политиками.
Отправка журналов аудита в SIEMПередача журналов аудита Stronghold в SIEM-системы: аудит-устройства, сбор через log-shipper, Vector и Fluent Bit, сопоставление полей для ELK, OpenSearch, Splunk, MaxPatrol SIEM и KUMA.
Одноразовая передача секрета через обёртывание ответаБезопасная одноразовая передача пароля или ключа другому человеку с помощью обёртывания ответа: -wrap-ttl, проверка токена и unwrap.
Версии секретов в KV v2Жизненный цикл секрета в KV версии 2: новые версии, patch, откат, ограничение истории, check-and-set, удаление, восстановление и уничтожение версий.
Ограничение частоты запросов (rate limit)Квота rate limit на путь: защита от перегрузки одним клиентом, проверка ответа 429, просмотр, изменение и удаление квоты.
Приватное хранилище токена (cubbyhole)Изоляция данных в cubbyhole: у каждого токена своё хранилище, недоступное другим токенам, которое удаляется вместе с токеном.
Регулярные учения по аварийному восстановлениюПроведение регулярных учений: восстановление снимка в изолированном кластере, тестовое повышение DR secondary, чек-лист и периодичность.

Stronghold как IdP

Примеры в этом разделе:

ПримерЧто показывает
Stronghold как OIDC-провайдер для внутренних приложенийНастройка единого входа во внутренние приложения через OIDC-провайдер Stronghold: ключ подписи, назначения, области действия с шаблонами, клиент и провайдер.

Как добавить пример

Если вы не нашли нужный сценарий, задайте вопрос в Telegram-канале «Deckhouse | RU-сообщество». Чтобы предложить свой пример, создайте страницу в подходящем подразделе и соблюдайте структуру:

  1. Цель — какую задачу решает пример.
  2. Что понадобится — редакция, среда (DP или Standalone), доступы и внешние системы.
  3. Шаги — команды и конфигурации, которые можно выполнить по порядку.
  4. Проверка — как убедиться, что всё работает.
  5. Устранение неполадок и очистка тестовых ресурсов.
  6. Ссылки на справочные страницы в params.relatedLinks.

Добавьте строку о новом примере в таблицу выше и ссылку на пример в params.relatedLinks справочных страниц, которые он использует.