Включение использования локального хранилища секретов для подключения к Vector DB
Исполнять сценарий необходимо от имени пользователя qdrant.
Описание сценария
В данном разделе описан порядок включения использования локального хранилища секретов для учетных данных, необходимых для подключения к Vector DB. Использование локального хранилища секретов позволяет повысить безопасность хранения учетных данных и исключить их передачу в открытом виде в конфигурационном файле copywala-vdb.yaml.
Для поддержки функциональности реализованы:
- команды для инициализации ключей защитного преобразования и локального хранилища секретов;
- возможность настройки подключения к VectorDB с использованием данных, получаемых из локального хранилища секретов.
Последовательность выполнения
-
Запустите генерацию криптографических ключей командой
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 - приватный –
-
Инициализируйте локальное хранилище секретов командой
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 -
-
Опциональный шаг. Выполните проверку возможности чтения из локального хранилища секретов командой
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 -
В конфигурационном файле
copywala-vdb.yamlв секцииvdbдля параметраuse_enc_credsзадайте значениеtrue:vdb:
use_enc_creds: true -
Убедитесь, что в конфигурационном файле
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"В таком случае выполните повторную инициализацию хранилища.