Документация Accelera

Получение секретных данных из HashiCorp Vault

Для централизованного хранения секретов система Accelera может быть интегрирована с системой HashiCorp Vault. Данное решение позволяет независимо от сервиса хранить и обновлять секреты.

Процесс получения секретов

Accelera использует REST-api для запроса секретных данных, пошаговый процесс:

  1. При запуске система проверяет, использовать ли интеграцию с HC Vault.
  2. В случае необходимости - отправляет запрос на https://<vault_host>/v1/auth/approle/login с парой RoleID и SecretID. В ответ получает временный токен.
  3. С полученным токеном система отправляет запрос на получение пакета секретов, например на https://vault_host/v1/secret/accelera/env
  4. Используя полученную информацию подключается к компонентам.

Переменные, которые запрашиваются из HC Vault

СервисREDIS_CONNECTIONBROKER_CONNECTIONCLICK_LOGINCLICK_PASSBIND_CREDITENTIALS_USERBIND_CREDITENTIALS_PASSDB_USERDB_PASSWORD
flows_backoffice
flows_engine
flows_actions
flows_frontend
flows_cache
flows_bulk
flows_timers
flows_segments

Совместимость с Docker Secret

Система Accelera не дает возможность настроить одновременно получение секретов из Docker Secret и HC Vault, они должны располагаться в 1 месте. Однако для подключения к HC Vault необходимо использовать RoleID и SecretID, которые должны быть записаны в Docker Secret. То есть:

  1. Нельзя хранить один секрет в Docker Secret, а другой - в HC Vault.
  2. При настройке подключения к HC Vault переменная USE_DOCKER_SECRET должна быть в значении false.
  3. Переменные RoleID и SecretID должны быть записаны в секрете по умолчанию, т.к. хранение в открытом виде на диске данной пары недопустимо.

Таким образом для передачи в Accelera параметров RoleID и SecretID система должна быть запущена в режиме docker swarm. Алгоритм настройки этих параметров такой же, как и в статье Хранение секретных данных в Docker Secret.

ℹ️

Единственное отличие - мы передаем только переменные RoleID и SecretID, настройка переменных подключения REDIS_CONNECTION и тд описана ниже.

Настройка

При подключении к HC Vault в приложении нужно указать 4 переменные среды:

USE_HASHI_CORP_VAULTАктивация/деактивация подключения, true/false
VAULT_ROLE_IDИдентификатор роли в Vault
VAULT_SECRET_IDИдентификатор секрета в Vault
VAULT_URLАдрес подключения для получения данных, пример - https://vault_host/v1/secret/accelera/env

Эти переменные должны быть указаны для каждого компонента, можно указать их в общем .env файле (рядом с REDIS_CONNECTION и тд).

В VAULT_ROLE_ID и VAULT_SECRET_ID необходимо указать названия секретов, которые созданы в Docker Secrets.

Затем укажите в перечисленных выше переменных названия соответствующих секретов из HC Vault. Пример:

...
CLICK_LOGIN=click_login
CLICK_PASS=click_pass
BROKER_CONNECTION=broker_connection
REDIS_CONNECTION=redis_connection
...

При такой настройке система запросит пакет секретов по указанному адресу и для каждой переменной возьмет соответствующее значение. Для CLICK_LOGIN будет использован секрет с именем click_login из HC_Vault.

Если такого секрета не существует, при запуске сервис выдаст соответствующую ошибку.

На этой странице