Решение проблемы с интенсивными запросами к SecMan за сертификатом#
Сценарий описывает действия администратора по устранению интенсивных запросов Kintsugi agent (DBDA) к системе управления секретами SecMan за сертификатом при частых переподключениях или проблемах с доступом к SecMan.
Предусловия#
В логах Kintsugi agent (DBDA) наблюдается многократное получение сертификата из SecMan.
Убедитесь, что параметры кеширования сертификата (
cert_cache_ttl,min_secman_interval,cert_cache_file) присутствуют в конфигурационном файле/etc/kgagent/config.yaml.
Правила эксплуатации#
Администратору должна быть назначена роль по принципу минимальных полномочий, позволяющая изменять конфигурационный файл /etc/kgagent/config.yaml и перезапускать сервис Kintsugi agent (DBDA).
Последовательность выполнения#
Откройте конфигурационный файл Kintsugi agent (DBDA):
sudo vim /etc/kgagent/config.yamlУбедитесь, что в блоке
certificate.secmanопределены следующие параметры:Параметр
Значение по умолчанию
Обязательный
Описание
cert_cache_ttl6hНет
Время жизни сертификата в кеше (в часах). При истечении TTL выполняется фоновое обновление из SecMan
min_secman_interval1hНет
Минимальный интервал (в часах) между обращениями к SecMan за сертификатом. Предотвращает «шторм» запросов при повторных переподключениях
cert_cache_filecert_cache.encНет
Имя файла для диск-кеша сертификата. Расположен в директории, указанной в
encrypted_storage.data_dirЕсли параметры отсутствуют, добавьте их в соответствующий блок
certificate.secman:certificate: secman: # ... другие параметры ... cert_cache_ttl: 6h min_secman_interval: 1h encrypted_storage: # ... другие параметры ... cert_cache_file: "cert_cache.enc"Сохраните изменения в файле.
Перезапустите сервис Kintsugi agent (DBDA):
sudo systemctl restart kgagentПроверьте работу механизма кеширования:
Убедитесь, что в логах отсутствует многократное получение сертификата из SecMan:
journalctl -u kgagent --since "1 hour ago" | grep -i "cert"Проверьте, что файл диск-кеша создан в директории
encrypted_storage.data_dir:ls -la /etc/kgagent/creds/cert_cache.encУбедитесь, что сервис Kintsugi agent (DBDA) работает корректно:
systemctl status kgagent
Описание механизмов безопасности#
Kintsugi agent (DBDA) реализует встроенные механизмы защиты от избыточных обращений к SecMan:
Кэширование в памяти: Сертификат хранится в оперативной памяти с таймером TTL. При обращении за сертификатом агент проверяет валидность кеша, прежде чем обращаться к SecMan.
Кэширование на диске: При запуске Kintsugi agent (DBDA) пытается загрузить сертификат из зашифрованного диск-кеша (
cert_cache.enc). Если возраст сертификата меньше TTL, агент использует его без обращения к SecMan.Rate-limit SecMan: Фоновый цикл (
StartRefreshLoop) проверяет истечение TTL каждыеcert_cache_ttl. Между явными обращениями к SecMan гарантирован минимальный интервалmin_secman_interval.Инвалидация при ошибке аутентификации: При HTTP 401/403/406 от бэкенда сертификат инвалидируется, и агент пытается получить новый сертификат без backoff, но с учетом
min_secman_interval. Это предотвращает бесконечные циклы с устаревшими сертификатами.Stale-сертификат: Если SecMan недоступен и кеш истек, агент возвращает устаревший (stale) сертификат с логированием на уровне Info, избегая дополнительных запросов к SecMan из-за rate-limit.
Примечание
При HTTP 401/403/406 сертификат автоматически инвалидируется, и агент запрашивает новый сертификат без задержки отката, но с учетом min_secman_interval.
Результат#
Параметры кеширования сертификата сконфигурированы в
/etc/kgagent/config.yaml.Интенсивные запросы к SecMan прекратились, агент использует кешированный сертификат.
Файл диск-кеша
cert_cache.encсоздан в директорииencrypted_storage.data_dir.Kintsugi agent (DBDA) работает корректно, в логах отсутствуют ошибки многократного получения сертификата.