Skip to Content
Primo RPA OrchestratorСистемным администраторамНастройка хранения секретов служб в Vault (рекомендуемый способ)

Руководство по настройке хранения секретов служб Оркестратора в Vault

Доступно с версии 1.26.4+

Содержание

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

Поддерживаются следующие службы: Analytic, Licenses, LogEventsWebhook, Notifications, Queues, RobotLogs, States, WebApi.

Чтобы использовать Vault, необходимо:

  1. Настроить Vault (создать Secret Engine, политики, пользователей).
  2. В конфигурационных файлах служб установить "External": 1 в секции Secrets.
  3. Задать переменные окружения для подключения к Vault.

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

Если Vault недоступен или служба не может получить секреты (ошибка подключения, недостаточно прав, неверные учётные данные), запуск службы завершится ошибкой.

Настройка Vault

Для выполнения операций настройки требуется авторизация в административном веб-интерфейсе Vault с использованием root token либо токена с административными привилегиями.

alt

Страница авторизации в Vault

Токен необходимо получить у администратора Vault.

Общая схема настройки Vault

Ниже приведена общая схема взаимодействия служб Оркестратора с HashiCorp Vault.

Для каждой службы выполняются следующие действия:

  1. В Secret Engine orchestrator создаётся путь с секретами службы.
  2. Пользователи добавляются в Authentication Method.
  3. Создаётся политика доступа, разрешающая чтение только необходимых секретов.
  4. Политика назначается соответствующему пользователю.

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

Пользователи для каждой службы могут быть индивидуальными:

alt

Схема: у каждой службы свой пользователь

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

alt

Схема: один пользователь на все службы

⚠️

Рекомендация Для production-сред рекомендуется использовать отдельного пользователя Vault для каждой службы Оркестратора.

Добавление Secret Engine

Добавьте новый Secret Engine (точку монтирования):

alt

Добавление Secret Engine

Выберите тип хранилища KV (Key-Value):

alt

Выбор типа Secret Engine

Используется KV Secrets Engine v2, поддерживающий версионирование секретов.

Измените значение параметра Path на orchestrator:

alt

Secret Engine с Path = orchestrator

Добавление секретов

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

  • логины;
  • пароли;
  • токены;
  • ключи доступа;
  • сертификаты и другие секреты.

Для каждой службы Оркестратора добавьте секреты.

⚠️

Значение пути должно совпадать со значением переменной {SERVICE}_VAULT_PATH.

Имя секрета (Path for this secret) должно начинаться с имени службы.

Например, для WebApi:

alt

Секреты WebApi

Полный перечень путей и ключей для всех служб приведён в разделе «Параметры настройки служб Оркестратора».

Добавление политик доступа к секретам

Политика Vault определяет:

  • к каким путям служба имеет доступ;
  • какие операции разрешены.

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

Пример политики для WebApi:

alt

Политика для WebApi

Подробная информация о политиках Vault доступна в документации: Vault Policies

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

Добавление Authentication Method

Добавьте новый метод аутентификации:

alt

Добавление Authentication Method

Выберите тип Username & Password:

alt

Выбор Username & Password

Параметр Path измените на orchestrator:

alt

Path = orchestrator

На вкладке Method Options для параметра Token Type выберите service:

alt

Token Type = service

Тип токена service рекомендуется для сервисных учётных записей, используемых приложениями и фоновыми службами.

Дополнительная информация: Username & Password Auth Method

Добавление пользователей

Для каждой службы Оркестратора создайте пользователя. Рекомендуется задавать значение Username, совпадающее с именем службы.

Задайте пароль пользователя.

Пример для WebApi:

alt

Создание пользователя WebApi

После создания пользователя откройте вкладку Configuration и добавьте значение в параметр Generated Token’s Policies.

В качестве значения укажите ранее созданную политику, например WebApi.

alt

Добавление политики пользователю

Настройка служб Оркестратора

Настройка конфигурационного файла

В конфигурационном файле службы добавьте или измените секцию Secrets:

"Secrets": { "External": 1 }

alt

Секция Secrets

Параметр External:

  • 1 — использовать HashiCorp Vault; остальные параметры секции Secrets игнорируются.
  • null или отсутствие параметра — использовать значения из конфигурационного файла.
  • 0 — использовать устаревший механизм хранения секретов в отдельной БД. (сохранен для обратной совместимости).

Настройка переменных окружения

Все параметры подключения к Vault задаются через переменные окружения ОС. Службы считывают значения переменных окружения во время запуска.

Например, для WebApi переменные окружения выглядят следующим образом:

{ "VAULT_URL": "http://localhost:8400", "WEBAPI_VAULT_PATH": "/webapi", "VAULT_MOUNT_POINT": "orchestrator", "WEBAPI_VAULT_USER_NAME": "webapi", "WEBAPI_VAULT_PASSWORD": "Qwe123!@#" }

alt

Переменные окружения для WebApi

⚠️

Значения переменных окружения не шифруются и могут быть доступны процессам с соответствующими правами ОС.

Общие переменные (для всех служб):

ПеременнаяОписание
VAULT_URLURL-адрес сервера Vault
VAULT_MOUNT_POINTПуть в Vault, по которому зарегистрирован Secret Engine (orchestrator)

Параметры, которые начинаются с {ИМЯ_СЛУЖБЫ}_– специфические для конкретной службы.

ПеременнаяОписание
{SERVICE}_VAULT_PATHПуть в Vault, где лежат секреты службы
{SERVICE}_VAULT_USER_NAMEИмя пользователя для аутентификации в Vault
{SERVICE}_VAULT_PASSWORDПароль пользователя (если не задан общий)

Если несколько служб работают на одном узле, можно задать общие VAULT_USER_NAME и VAULT_PASSWORD (без префикса службы) — они будут использоваться всеми службами.

⚠️

Значения переменных окружения не шифруются. Обеспечьте безопасность их хранения (например, через защищённые механизмы ОС).

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

Параметры настройки служб Оркестратора

Analytic

Путь в Vault: analytic Ключи секретов:

Наименование ключаЗначение по умолчанию
1.ConnectionStrings:AnalyticConnection:Userpostgres
2.ConnectionStrings:AnalyticConnection:Passwordpostgres
3.RabbitMQ:UserNameadmin
4.RabbitMQ:PasswordQwe123!@#
5.RabbitMQ:SslCertPassphrase

Политика в Vault (analytic):

path "orchestrator/data/analytic" { capabilities = ["read", "list"] }

Переменные окружения:

ANALYTIC_VAULT_PATH=analytic ANALYTIC_VAULT_USER_NAME=analytic

Licenses

Путь в Vault: licenses Ключи секретов:

Наименование ключаЗначение по умолчанию
1.ConnectionStrings:LicensesConnection:Userpostgres
2.ConnectionStrings:LicensesConnection:Passwordpostgres
3.RabbitMQ:UserNameadmin
4.RabbitMQ:PasswordQwe123!@#
5.RabbitMQ:SslCertPassphrase

Политика в Vault (licenses):

path "orchestrator/data/licenses" { capabilities = ["read", "list"] }

Переменные окружения:

LICENSES_VAULT_PATH=licenses LICENSES_VAULT_USER_NAME=licenses

LogEventsWebhook

Путь в Vault: logeventswebhook Ключи секретов:

Наименование ключаЗначение по умолчанию
1.RabbitMQ:UserNameadmin
2.RabbitMQ:PasswordQwe123!@#
3.RabbitMQ:SslCertPassphrase
4.HttpEndPoint:UserName
5.HttpEndPoint:Password

Политика в Vault (logeventswebhook):

path "orchestrator/data/logeventswebhook" { capabilities = ["read", "list"] }

Переменные окружения:

LOGEVENTSWEBHOOK_VAULT_PATH=logeventswebhook LOGEVENTSWEBHOOK_VAULT_USER_NAME=logeventswebhook

Notifications

Путь в Vault: notifications Ключи секретов:

Наименование ключаЗначение по умолчанию
1.RabbitMQ:UserNameadmin
2.RabbitMQ:PasswordQwe123!@#
3.RabbitMQ:SslCertPassphrase
4.Email:FromUserName
5.Email:FromPassword

Политика в Vault (notifications):

path "orchestrator/data/notifications" { capabilities = ["read", "list"] }

Переменные окружения:

NOTIFICATIONS_VAULT_PATH=notifications NOTIFICATIONS_VAULT_USER_NAME=notifications

Queues

Путь в Vault: queues

Ключи секретов:

Наименование ключаЗначение по умолчанию
1.RabbitMQ:UserNameadmin
2.RabbitMQ:PasswordQwe123!@#
3.RabbitMQ:SslCertPassphrase

Политика в Vault (queues):

path "orchestrator/data/queues" { capabilities = ["read", "list"] }

Переменные окружения:

QUEUES_VAULT_PATH=queues QUEUES_VAULT_USER_NAME=queues

RobotLogs

Путь в Vault: robotlogs Ключи секретов:

Наименование ключаЗначение по умолчанию
1.ConnectionStrings:LogsConnection:Userpostgres
2.ConnectionStrings:LogsConnection:Passwordpostgres
3.RabbitMQ:UserNameadmin
4.RabbitMQ:PasswordQwe123!@#
5.RabbitMQ:SslCertPassphrase
6.ScreenFileUpload:Minio:AccessKey
7.ScreenFileUpload:Minio:SecretKey

Политика в Vault (robotlogs):

path "orchestrator/data/robotlogs" { capabilities = ["read", "list"] }

Переменные окружения:

ROBOTLOGS_VAULT_PATH=robotlogs ROBOTLOGS_VAULT_USER_NAME=robotlogs

States

Путь в Vault: states Ключи секретов:

Наименование ключаЗначение по умолчанию
1.RabbitMQ:UserNameadmin
2.RabbitMQ:PasswordQwe123!@#
3.RabbitMQ:SslCertPassphrase

Политика в Vault (states):

path "orchestrator/data/states" { capabilities = ["read", "list"] }

Переменные окружения:

STATES_VAULT_PATH=states STATES_VAULT_USER_NAME=states

WebApi

Пути в Vault:

  • webapi — основные секреты
  • webapi/ad/{ad-name} — для каждого AD-подключения
  • webapi/tenant/{tenant-id} — для каждого тенанта

Ключи секретов (основной путь webapi):

Наименование ключаЗначение по умолчанию
1.ConnectionStrings:DefaultConnection:Userpostgres
2.ConnectionStrings:DefaultConnection:Passwordpostgres
3.ConnectionStrings:IdentityConnection:Userpostgres
4.ConnectionStrings:IdentityConnection:Passwordpostgres
5.ConnectionStrings:LicenseConnection:Userpostgres
6.ConnectionStrings:LicenseConnection:Passwordpostgres
7.ConnectionStrings:ProcessRepositoryConnection:Userpostgres
8.ConnectionStrings:ProcessRepositoryConnection:Passwordpostgres
9.RobotDeployment:SslCertPassword
10.RobotDeployment:OrchPasswordQwe123!@#
11.RabbitMQ:UserNameadmin
12.RabbitMQ:PasswordQwe123!@#
13.RabbitMQ:SslCertPassphrase
14.Tenants:IncomingEmail:UserName
15.Tenants:IncomingEmail:Login
16.Tenants:IncomingEmail:Password
17.NuGet:ApiKeyQwe123!@#
18.CyberArk:UserName
19.CyberArk:Password
20.FileStore:Minio:AccessKey
21.FileStore:Minio:SecretKey
22.OpenId:KeyCloak:orch:ClientIdorch
23.OpenId:KeyCloak:orch:ClientSecret

Ключи секретов для AD (webapi/ad/{ad-name}):

Наименование ключаЗначение по умолчанию
1.AdAdminUserNameAdministrator@primo.local
2.AdAdminPasswordQwe123!@#

Ключи секретов для тенанта (webapi/tenant/{tenant-id}):

Наименование ключаЗначение по умолчанию
1.TenantIncomingEmailUserName
2.TenantIncomingEmailLogin
3.TenantIncomingEmailPassword

Политика в Vault (webapi):

path "orchestrator/data/webapi" { capabilities = ["read", "list"] } path "orchestrator/data/webapi/+/*" { capabilities = ["read", "list"] } path "orchestrator/metadata/webapi/*" { capabilities = ["read", "list"] }

Переменные окружения:

WEBAPI_VAULT_PATH=webapi WEBAPI_VAULT_USER_NAME=webapi

Автоматизация первоначальной настройки

Первоначальная настройка Vault для Оркестратора может быть автоматизирована с помощью скрипта, поставляемого вместе с продуктом:

  • vault-orch.sh (Linux)
  • vault-orch.ps1 (Windows)

Перед запуском скрипта необходимо заменить в нём значения переменных url и root_token на свои:

alt

Переменные url и root_token в скрипте

После выполнения скрипта будет создана вся необходимая инфраструктура в Vault: Secret Engine, политики, метод аутентификации, пользователи и начальные секреты.

Дальнейшее управление секретами (изменение, добавление новых) выполняется вручную через административный интерфейс Vault или его API — по мере необходимости.

⚠️

Если в вашей среде используется старая версия Оркестратора (ниже 1.26.3.0), функция хранения секретов в Vault недоступна. Для таких версий используйте хранение секретов в отдельной БД.

Проверка работоспособности

После завершения настройки:

  1. Перезапустите службу Оркестратора.
  2. Убедитесь в отсутствии ошибок аутентификации Vault.
  3. Проверьте журналы службы.
  4. Убедитесь, что секреты успешно загружены из Vault.

Типовые ошибки

ОшибкаВозможная причина
permission deniedНеверная policy или отсутствует доступ к пути
secret not foundУказан неверный путь секрета
authentication failedНеверные учётные данные Vault
connection refusedНеверный VAULT_URL или Vault недоступен
failed to read secretОтсутствует секрет или ключ

Дополнительная документация