Решение проблемы с интенсивными запросами к 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).

Последовательность выполнения#

  1. Откройте конфигурационный файл Kintsugi agent (DBDA):

    sudo vim /etc/kgagent/config.yaml
    
  2. Убедитесь, что в блоке certificate.secman определены следующие параметры:

    Параметр

    Значение по умолчанию

    Обязательный

    Описание

    cert_cache_ttl

    6h

    Нет

    Время жизни сертификата в кеше (в часах). При истечении TTL выполняется фоновое обновление из SecMan

    min_secman_interval

    1h

    Нет

    Минимальный интервал (в часах) между обращениями к SecMan за сертификатом. Предотвращает «шторм» запросов при повторных переподключениях

    cert_cache_file

    cert_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"
    
  3. Сохраните изменения в файле.

  4. Перезапустите сервис Kintsugi agent (DBDA):

    sudo systemctl restart kgagent
    
  5. Проверьте работу механизма кеширования:

    1. Убедитесь, что в логах отсутствует многократное получение сертификата из SecMan:

      journalctl -u kgagent --since "1 hour ago" | grep -i "cert"
      
    2. Проверьте, что файл диск-кеша создан в директории encrypted_storage.data_dir:

      ls -la /etc/kgagent/creds/cert_cache.enc
      
    3. Убедитесь, что сервис 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.

Результат#

  1. Параметры кеширования сертификата сконфигурированы в /etc/kgagent/config.yaml.

  2. Интенсивные запросы к SecMan прекратились, агент использует кешированный сертификат.

  3. Файл диск-кеша cert_cache.enc создан в директории encrypted_storage.data_dir.

  4. Kintsugi agent (DBDA) работает корректно, в логах отсутствуют ошибки многократного получения сертификата.