Используйте этот чек-лист перед вводом 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-диск, как описано в разделе «Планирование ресурсов».
Высокая доступность
- Кластер Raft состоит из 3 или 5 узлов, размещённых в разных зонах отказа. В DP количество реплик задаёт модуль, а деструктивные миграции хранилища требуют не менее 3 реплик. Подробнее — в разделе «Планирование ресурсов».
- Настроены
retry_joinдля всех узлов. - Проверена процедура восстановления после потери кворума.
- Для катастрофоустойчивости настроена DR-репликация (Stronghold EE).
Мониторинг
- Метрики собираются со всех узлов, настроены алерты из раздела «Мониторинг».
- Балансировщик и внешний мониторинг используют
sys/health. - Серверные журналы собираются в централизованную систему.
- Описана и проверена процедура обновления.