Используйте этот чек-лист перед вводом Stronghold в промышленную эксплуатацию и при периодическом аудите конфигурации. Пункты, относящиеся к возможностям Stronghold EE, отмечены отдельно.

Сеть и TLS

  • TLS включён на всех listener. Параметр tls_disable блока listener не используется. В DP все сетевые listener используют TLS. Только listener метрик 127.0.0.1:8400 внутри пода работает без TLS, и он недоступен снаружи пода.
  • Минимальная версия TLS — tls12 или tls13 (параметр tls_min_version).
  • Для межузлового взаимодействия Raft используются отдельные сертификаты узлов и общий CA.
  • Настроены контроль срока действия сертификатов и процедура их замены.
  • Доступ к порту API (8200) ограничен сетями клиентов, к порту кластера (8201) — только узлами Stronghold.
  • В DP порты пода: 8200 (API), 8201 (порт кластера), 8300/8301 (внутренние API и порт кластера между подами), 8500 (mTLS-listener, только при инлетах Ingress и GatewayAPI) и 9889 (метрики через kube-rbac-proxy). Порт 8201 публикуется за пределы кластера только для репликации (publishCluster).
  • Доступ к эндпоинтам sys/metrics и sys/pprof без аутентификации либо отключён, либо ограничен доверенной сетью.
  • При использовании балансировщика или прокси настроены x_forwarded_for_authorized_addrs и проверка sys/health.

Доступ и аутентификация

  • Standalone-установка и режим Manual в DP: root-токен, полученный при инициализации, отозван после начальной настройки. Для экстренных операций root-токен генерируется заново командой d8 stronghold operator generate-root.
  • Режим Automatic в DP: риски секрета stronghold-keys снижены так, как описано в модели угроз. Секрет содержит ключ распечатывания и root-токен, которые использует stronghold-automatic, поэтому root-токен не отзывается. RBAC-доступ к секрету минимален, Kubernetes audit включён. Если ключи забраны из секрета и хранятся вне кластера или значения в секрете не совпадают с текущими ключами, автоматическое распечатывание перестаёт работать, и после каждого перезапуска поды нужно распечатывать вручную. Без root-токена stronghold-automatic не может восстановить свой доступ к Stronghold и перестаёт его настраивать. Подробнее — в разделе «Ключи в DP».
  • Администраторы входят через внешний провайдер (OIDC или LDAP), а не через userpass.
  • Для административных ролей включена многофакторная аутентификация.
  • Приложения используют машинные методы аутентификации (Kubernetes, AppRole, JWT) без долгоживущих статических токенов.
  • Политики построены по принципу минимальных привилегий, использование * и sudo ограничено.
  • Политики хранятся в системе контроля версий и применяются автоматически.
  • Настроена блокировка пользователей при подборе пароля (блок user_lockout).

Аудит

  • Включено не менее двух аудит-устройств.
  • Журналы аудита отправляются в централизованную систему с ограниченным доступом.
  • Настроены алерты на ошибки записи в аудит-устройства.
  • Для устройства file настроена ротация журналов и контроль свободного места.

Время жизни и лимиты

  • Глобальные default_lease_ttl и max_lease_ttl уменьшены относительно значения по умолчанию (768h) до значений, соответствующих политике безопасности.
  • TTL настроены на уровне точек монтирования и ролей методов аутентификации.
  • Настроены квоты ограничения частоты запросов для методов аутентификации и нагруженных путей.

Seal и ключи

  • Используется автоматическое распечатывание через HSM или KMS, либо определён регламент ручного распечатывания с Shamir.
  • Доли ключей распечатывания или восстановления распределены между разными доверенными лицами и зашифрованы их PGP-ключами.
  • Ни у одного лица нет порогового количества долей.
  • Определён регламент хранения ключей (сейф, конверты, журнал выдачи) и замены держателей.
  • Настроена автоматическая ротация ключа шифрования (sys/rotate/config).

Резервное копирование

  • Настроено регулярное создание снимков Raft (вручную или автоматически в Stronghold EE).
  • Снимки хранятся вне кластера, в хранилище с ограниченным доступом.
  • Регулярно выполняется тестовое восстановление из снимка на изолированном стенде.
  • Доли ключей, необходимые для распечатывания восстановленного кластера, доступны отдельно от снимков.

Операционная система и узлы

  • Используется поддерживаемая ОС, обновления безопасности устанавливаются регулярно.
  • Stronghold запущен от отдельного непривилегированного пользователя (stronghold), директории данных имеют права 0700. В DP под работает от non-root пользователя с UID 64535, с корневой файловой системой только для чтения и отброшенными привилегиями (drop: ALL).
  • Swap отключён или зашифрован (standalone; в DP модуль задаёт disable_mlock = true). При встроенном хранилище Raft задан disable_mlock = true, так как mlock вместе с Raft может исчерпать память, и swap отключён, чтобы память не выгружалась на диск. Подробнее — в описании параметра disable_mlock.
  • Отключено создание дампов памяти (core dumps) для процесса Stronghold, например LimitCORE=0 в systemd-unit (standalone).
  • На узлах нет посторонних сервисов, доступ по SSH ограничен и журналируется.
  • Время синхронизировано по NTP на всех узлах.
  • Для данных Raft используется локальный SSD-диск, как описано в разделе «Планирование ресурсов».

Высокая доступность

Мониторинг

  • Метрики собираются со всех узлов, настроены алерты из раздела «Мониторинг».
  • Балансировщик и внешний мониторинг используют sys/health.
  • Серверные журналы собираются в централизованную систему.
  • Описана и проверена процедура обновления.