У нас есть внутренний частный сервер хранилища для управления учетными данными, для извлечения токена из хранилища мы используем аутентификацию 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, или есть ли другой способ справиться с этим сценарием?
Заранее спасибо! :)