Перейти к основному содержимому

Интеграция с системой хранения секретов ОдинКлюч

Сведения

Функциональность доступна только для редакций Enterprise и Enterprise для ERP-систем.

Для реализации механизмов защиты параметров конфигурации, либо настройки функциональности TDE требуется наличие установленного и интегрированного решения хранилища секретов (KMS). В продукте СУБД Pangolin реализована интеграция с системой хранения секретов ОдинКлюч.

Интеграция с системой хранения секретов ОдинКлюч обеспечивает использование данного решения для хранения:

  • ключей прозрачного защитного преобразования данных TDE (Transparent Data Encryption);
  • защищенных параметров конфигурации СУБД Pangolin (secure config).
Важно

Система ОдинКлюч предназначена только для хранения секретов: ключей засекречивания и защищенных параметров конфигурации, и не может быть использована для хранения сертификатов.

Создание нового экземпляра СУБД Pangolin, готового для использования системы ОдинКлюч:

Перевод существующего экземпляра СУБД Pangolin на систему ОдинКлюч:

Доступ к хранилищу секретов осуществляется через плагины, загружаемые СУБД Pangolin при старте экземпляра.

Плагины располагаются в директории LIBDIR/plugins.

Для подключения создается символическая ссылка LIBDIR/libconnector_plugin.so → LIBDIR/plugins/libonekey_plugin.so.

Изменения в утилите setup_kms_credentials

Параметры подключения к системе хранения секретов задаются при помощи утилиты setup_kms_credentials. Все введенные значения сохраняются в засекреченном виде в каталоге KMSCONFIGDIR.

Изменения в утилите setup_kms_credentials:

  • Подключение к ОдинКлюч выполняется по логину и паролю. При этом каждое хранилище в ОдинКлюч имеет собственный идентификатор (slug, указываемый как cluster_id).

  • Хранилище может быть дополнительно защищено паролем или PIN-кодом, для хранения этого значения в формате подключения предусмотрено дополнительное поле mk. Помимо указанных параметров требуется адрес и порт API-агента (ip_port), который обеспечивает доступ по протоколу HTTP.

  • Обязательные поля при настройке cluster_id, ip_port, id (логин), secret (пароль) и, при необходимости, mk. Остальные параметры, предусмотренные в формате для совместимости с другими системами (например Vault), в контексте ОдинКлюч не используются и автоматически получают значение N/A.

    Формат записи параметров подключения приведен в таблице ниже.

    ПолеНазначение в системе ОдинКлючКомментарий
    cluster_idslug хранилищаОбязательное поле. slug хранилища для доступа через REST API
    root_caНе используетсяПодключение к API агенту осуществляется по протоколу http
    suffixНе используетсяОрганизация хранения секретов в системе ОдинКлюч не предполагает вариативности путей. Может содержать любое значение
    ip_portIP и порт API агента ОдинКлючОбязательное поле. Параметры подключения к API-агенту
    typeНе используетсяСистема ОдинКлюч поддерживает единственный способ входа по связи логин/пароль
    idЛогин для подключения к ОдинКлючОбязательное поле. Имя пользователя системы ОдинКлюч, имеющего доступ к хранилищу, указанному в поле cluster_id
    secretПароль для подключения к ОдинКлючОбязательное поле. Пароль для авторизации пользователя
    mkПароль для входа в хранилищеОбязательное поле при условии, что хранилище, указанное в поле cluster_id, имеет дополнительную защиту в виде пароля/пин-кода
    auth_pointНе используетсяСистема ОдинКлюч имеет единственный адрес для авторизации
    protocolПротокол подключения к API-агентуСогласно инструкции API-агент разворачивается с протоколом подключения http
    prefixНе используетсяОрганизация хранения секретов в системе ОдинКлюч не предполагает вариативности путей. Может содержать любое значение
    namespaceНе используетсяОрганизация хранения секретов в системе ОдинКлюч не предполагает вариативности путей. Может содержать любое значение
  • Добавлен ключ --storage {onekey|vault}. Если ключ не указан, предполагается ввод параметров для Vault. В случае явного указания режима onekey пользователю предлагается заполнить только необходимые для ОдинКлюч поля. При просмотре введенных данных командой show необходимо также указывать параметр --storage onekey. В момент просмотра утилита проверяет корректность входа в систему хранения секретов, но не проверяет доступ к конкретному хранилищу.

Изменения в утилите secret_storage_client

Утилита secret_storage_client предназначена для просмотра содержимого защищенного хранилища секретов. Поддерживаются два режима передачи параметров подключения:

  • --config — чтение параметров подключения из файла, созданного с помощью утилиты setup_kms_credentials;
  • --interactive — интерактивный ввод параметров подключения пользователем.

Изменения в утилите secret_storage_client:

  • В режиме интерактивного ввода изменена логика запроса параметров: пользователю предлагается ввести только те поля, которые необходимы для работы с ОдинКлюч. Неиспользуемые поля автоматически получают значение N/A.

  • Добавлен ключ --storage {onekey|vault}. Если ключ не указан, утилита работает в режиме совместимости с Vault. При явном указании --storage onekey интерактивный режим ограничивается вводом обязательных полей для ОдинКлюч.

При работе с хранилищем секретов ОдинКлюч учет дополнительного пароля или PIN-кода (mk) выполняется утилитой setup_kms_credentials. В связи с этим в режиме чтения параметров подключения из файла (--config) доработки не требуются: все необходимые значения считываются автоматически.

Плагин для подключения к системе ОдинКлюч

Плагин для подключения к системе ОдинКлюч реализован как обертка над REST API, предоставляемым разработчиками ОдинКлюч. Подключение выполняется на основе параметров, сохраненных при помощи утилиты setup_kms_credentials.

Запись секрета в ОдинКлюч содержит три обязательных поля: title, login и password. Записи могут быть сгруппированы по папкам (folder).

Для работы с секретами, используемыми СУБД Pangolin, приняты следующие правила:

  • в папке postgresql размещаются защищенные параметры конфигурации;
  • в папке keys размещаются ключи TDE;
  • поиск записей выполняется по полю login;
  • поле title при автоматическом создании совпадает с login, но при ручном вводе совпадение не является обязательным.

Система ОдинКлюч не поддерживает версионирование секретов и не ограничивает создание дубликатов. В случае наличия дубликатов по паре folder/login хранилище считается поврежденным. При запуске экземпляра такая ситуация приводит к невозможности его запуска. Если дубликаты появляются в процессе работы, последующие попытки перечитать секреты из хранилища игнорируются.

Доступ к конкретному секрету осуществляется по идентификатору записи. Для его получения плагин сначала считывает полный список секретов из хранилища, затем находит идентификатор записи по значению поля login и после этого извлекает значение секрета.

Плагин поддерживает кеширование данных. При временной недоступности ОдинКлюч экземпляр продолжает работу, используя значения из кеша.

Варианты поведения и эксплуатации хранилища секретов ОдинКлюч в разных условиях

В данном разделе описаны варианты поведения и эксплуатации хранилища секретов ОдинКлюч в различных эксплуатационных условиях.

Включение и настройка системы ОдинКлюч

  1. Установите и запустите API-агент системы ОдинКлюч.

  2. Установите символьную ссылку LIBDIR/libconnector_plugin.so на LIBDIR/plugins/libonekey_plugin.so.

  3. Создайте хранилище в системе ОдинКлюч.

    Важно

    В хранилище должен присутствовать параметр secure_config.

  4. Задайте параметры подключения с помощью утилиты setup_kms_credentials.

  5. Перезапустите СУБД Pangolin.

Перевод на другую систему хранения секретов

  1. Перенесите все секреты из системы ОдинКлюч в новое хранилище.
  2. Установите символьную ссылку LIBDIR/libconnector_plugin.so на LIBDIR/plugins/{плагин_новой_системы}.
  3. Задайте параметры подключения к новой системе хранения секретов.
  4. Перезапустите СУБД Pangolin.

Выключение плагина при возникновении ошибок

При возникновении сбоев в работе плагина ОдинКлюч переведите экземпляр на использование KMS-заменителя. Это позволит сохранить работоспособность системы до устранения причин сбоя.

Работа при завершении trial-лицензии

При завершении действия trial-лицензии работа плагина не изменяется. Контроль лицензий выполняется средствами СУБД Pangolin по общим правилам, установленным для всех систем хранения секретов.

Работа при переходе между редакциями

При переходе между редакциями Standard к Enterprise работа плагина сохраняется без изменений. Проверка лицензии осуществляется средствами СУБД Pangolin.

Диагностика и устранение ошибок

  1. Включите логирование curl-запросов, установив параметр log_min_messages = DEBUG5.
  2. Проверьте логи API-агента ОдинКлюч при возникновении ошибок подключения.
  3. Используйте документацию разработчика ОдинКлюч для уточнения деталей работы агента.