Как передать пространство имен хранилища в учетные данные типа AWX "HashiCorp Vault Signed S SH" для аутентификации на основе role_id и secret_id? - PullRequest
0 голосов
/ 21 июня 2020

У нас есть внутренний частный сервер хранилища для управления учетными данными, для извлечения токена из хранилища мы используем аутентификацию app_role.

Ниже приведена эквивалентная команда curl:

curl --request POST -H "X-Vault-Namespace: <NAMESPACE>" --data '{"role_id": "<ROLE_ID>", "secret_id": "<SECRET_ID>"}' http://<VAULT_ADDR>/v1/auth/approle/login

Итак, в этом случае передача пространства имен является для нас обязательной, иначе будет возвращен неверный role_id, который не найден, потому что мы используем пространство имен в Vault.

Поскольку мы интегрируем AWX с Vault, мы используем HashiCorp Vault Signed S SH для аутентификации с использованием APPROLE ROLE_ID и APPROLE SECRET_ID. Есть и другие поля, обязательные для передачи в качестве входных данных в запросы хранилища, такие как role_name, path_to_secert и public_key. Однако нет способа передать пространство имен хранилища (и нет кода для установки заголовка), поэтому мы получаем результат как «недопустимый идентификатор роли».

Мы пытались жестко закодировать пространство имен в awx_web и awx_task в hashivault.py, тогда он у нас работает.

 ```import requests
 sess = requests.Session()
 headers = {'X-Vault-Namespace': 'our_ns'}
 resp = sess.post(request_url, **request_kwargs, headers=headers)
 resp.raise_for_status()
 token = resp.json()['auth']['client_token']```

Может кто-нибудь посоветует нам, как передать пространство имен из пользовательского интерфейса AWX, или есть ли другой способ справиться с этим сценарием?

Заранее спасибо! :)

...