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

Включение использования локального хранилища секретов для подключения к Vector DB

примечание

Исполнять сценарий необходимо от имени пользователя qdrant.

Описание сценария

В данном разделе описан порядок включения использования локального хранилища секретов для учетных данных, необходимых для подключения к Vector DB. Использование локального хранилища секретов позволяет повысить безопасность хранения учетных данных и исключить их передачу в открытом виде в конфигурационном файле copywala-vdb.yaml.

Для поддержки функциональности реализованы:

  • команды для инициализации ключей защитного преобразования и локального хранилища секретов;
  • возможность настройки подключения к VectorDB с использованием данных, получаемых из локального хранилища секретов.

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

  1. Запустите генерацию криптографических ключей командой copywala-vdb init keys.

    Справка по команде copywala-vdb init keys

    Описание:

    Запускает генерацию пары криптографических ключей (приватного и публичного), необходимых для защитного преобразования учетных данных.

    В результате выполнения будет сгенерирована пара ключей:

    • приватный – /var/pbr/copywala/priv.key;
    • публичный – /var/pbr/copywala/priv.key.pub.

    Ключи защитного преобразования хранятся локально в зашифрованном виде и используются только внутренними механизмами copywala-vdb.

    Путь к приватному ключу настраивается в конфигурационном файле copywala-vdb.yaml параметром:

    app:
    creds_private_key_path: /var/pbr/copywala/priv.key # значение по умолчанию

    Публичный ключ с постфиксом .pub будет сохранен в той же директории, что и приватный.

    Синтаксис:

    copywala-vdb init keys [flags]

    Обязательные параметры:

    Нет.

    Опциональные параметры:

    [flags] – доступны следующие флаги:

    ФлагОписание
    -h|--helpПоказать справку по команде
    -c|--config <path to copywala-vdb config>Использовать конфигурационный файл, отличный от файла по умолчанию: /etc/pbr/copywala-vdb.yaml
    --forceПринудительная замена существующего файла с ключом (повторная генерация), если он уже существует
    Важно

    При принудительной повторной генерации (--force) необходимо повторно инициализировать локальное хранилище copywala-vdb init creds vdb также с флагом --force.

    В результате выполнения команды будет выведено:

    $ copywala-vdb init keys
    2026-04-02 14:29:30.049 [870020] INF run init keys key_path=/var/pbr/copywala/priv.key
    2026-04-02 14:29:30.050 [870020] INF init keys completed
  2. Инициализируйте локальное хранилище секретов командой copywala-vdb init creds vdb.

    Справка по команде copywala-vdb init creds vdb

    Описание:

    Выполнение инициализации локального хранилища секретов, содержащего учетные данные для подключения к Vector DB. Выполнение команды возможно только после запуска copywala-vdb init keys, так как над файлом, который создается командой copywala-vdb init creds vdb, выполняется защитное преобразование с использованием ранее сгенерированного приватного ключа.

    В результате выполнения будет создан файл /var/pbr/copywala/vdb.creds, содержащий данные, прошедшие защитное преобразование.

    Путь для хранения данного файла настраивается в конфигурационном файле copywala-vdb.yaml параметром:

    vdb:
    use_enc_creds: true
    enc_creds_path: /var/pbr/copywala/vdb.creds

    При включении use_enc_creds учетные данные для доступа к Vector DB загружаются из файла, расположенного по пути enc_creds_path.

    Синтаксис:

    copywala-vdb init creds vdb [flags]

    Обязательные параметры:

    Нет.

    Опциональные параметры:

    [flags] – доступны следующие флаги:

    ФлагОписание
    -h|--helpПоказать справку по команде
    -c|--config <path to copywala-vdb config>Использовать конфигурационный файл, отличный от файла по умолчанию: /etc/pbr/copywala-vdb.yaml
    --forceПринудительная замена существующего файла с учетными данными
    --file <path to file>Загрузка секретов из json-файла

    Способы передачи учетных данных:

    • Передача через стандартный ввод. Пример:

      echo '{"username": "user_example", "password": "password_example"}' | copywala-vdb init creds vdb
    • Передача через файл с помощью флага --file:

      copywala-vdb init creds vdb --file vdb.creds.json

      Файл должен быть в формате JSON и обязательно содержать поля username и password:

      {
      "username": "<user_example>",
      "password": "<password_example>"
      }

    В результате выполнения команды будет выведено (ниже пример с передачей учетных данных через стандартный ввод):

    $ echo '{"username": "backup_user", "password": "secret"}' | copywala-vdb init creds vdb
    2026-04-02 14:39:10.429 [874483] INF run init vdb creds creds_path=/var/pbr/copywala/vdb.creds
    2026-04-02 14:39:10.429 [874483] INF read creds from stdin
    2026-04-02 14:39:10.429 [874483] INF init vdb creds completed
  3. Опциональный шаг. Выполните проверку возможности чтения из локального хранилища секретов командой copywala-vdb init creds check.

    Справка по команде copywala-vdb init creds check

    Описание:

    Запускает проверку возможности чтения из локального хранилища секретов. В результате выполнения команды отображается загруженное из хранилища имя пользователя.

    Синтаксис:

    copywala-vdb init creds check [flags]

    Обязательные параметры:

    Нет.

    Опциональные параметры:

    [flags] – доступны следующие флаги:

    ФлагОписание
    -h|--helpПоказать справку по команде
    -c|--config <path to copywala-vdb config>Использовать конфигурационный файл, отличный от файла по умолчанию: /etc/pbr/copywala-vdb.yaml
    --forceДанный флаг не применим к этой команде
    --file <path to file>Проверка секретов из json-файла

    В результате выполнения команды будет выведено (ниже пример с передачей учетных данных через стандартный ввод):

    $ copywala-vdb init creds check
    2026-04-02 14:47:41.559 [877652] INF check vdb creds creds_path=/var/pbr/copywala/vdb.creds
    2026-04-02 14:47:41.559 [877652] INF vdb username: backup_user
    2026-04-02 14:47:41.559 [877652] INF check vdb creds completed
  4. В конфигурационном файле copywala-vdb.yaml в секции vdb для параметра use_enc_creds задайте значение true:

    vdb:
    use_enc_creds: true
  5. Убедитесь, что в конфигурационном файле copywala-vdb.yaml в секции vdb параметры username и password не содержат значений. Если значения указаны — удалите их.

Результат

Включено использование локального хранилища секретов для подключения к Vector DB. Учетные данные более не хранятся в конфигурационном файле copywala-vdb.yaml в открытом виде.

Исключительные сценарии

Будет выведено соответствующее сообщение для случаев:

  • Если инициализация пары ключей уже была выполнена ранее, появится следующее сообщение:

    $ copywala-vdb init keys
    2026-04-02 14:54:58.470 [880839] INF run init keys key_path=/var/pbr/copywala/priv.key
    2026-04-02 14:54:58.470 [880839] ERR init keys failed err="file already exists: /var/pbr/copywala/priv.key"

    В таком случае выполните принудительную повторную генерацию пару ключей с флагом --force:

    $ copywala-vdb init keys --force
    2026-04-02 14:56:25.101 [881356] INF run init keys key_path=/var/pbr/copywala/priv.key
    2026-04-02 14:56:25.101 [881356] INF init keys completed
    Важно

    После принудительной повторной генерации (--force) необходимо повторно инициализировать локальное хранилище copywala-vdb init creds vdb также с флагом --force:

    $ echo '{"username": "backup_user", "password": "secret"}' | ./copywala-vdb init creds vdb --force
    2026-04-02 14:59:29.074 [882326] INF run init vdb creds creds_path=/var/pbr/copywala/vdb.creds
    2026-04-02 14:59:29.074 [882326] INF read creds from stdin
    2026-04-02 14:59:29.075 [882326] INF init vdb creds completed
  • Если инициализация хранилища уже была сделана ранее:

    $ copywala-vdb init creds vdb
    2026-04-02 15:00:26.016 [882738] INF run init vdb creds creds_path=/var/pbr/copywala/vdb.creds
    2026-04-02 15:00:26.016 [882738] ERR init vdb creds failed err="file already exists: /var/pbr/copywala/vdb.creds"
  • Если файл хранилища недоступен или не найден:

    $ copywala-vdb init creds check
    2026-04-02 14:52:21.560 [879946] ERR init config err="init creds: open /var/pbr/copywala/vdb.creds: no such file or directory"

    Проверьте права доступа к папкам и файлу и наличие файла.

  • При попытке выполнить обратное защитное преобразование хранилища с использованием ключа, отличного от исходного сгенерированного ключа, будет выведена ошибка:

    $ copywala-vdb init creds check
    2026-04-02 15:04:35.889 [884597] INF check vdb creds creds_path=/var/pbr/copywala/vdb.creds
    2026-04-02 15:04:35.889 [884597] ERR check vdb creds failed err="decrypt data: decrypt hybrid: cipher: message authentication failed"

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