Используя Azure Python SDK, я хотел бы вернуть KeyVaultClient
, используя метод get_client_from_auth_file
, чтобы получить секреты из KeyVault без прохождения KeyVaultManagementClient
.
Согласно документации представляется возможным создать клиента из любого класса клиента SDK.
Я могу сделать это:
from azure.common.client_factory import get_client_from_auth_file
from azure.mgmt.keyvault import KeyVaultManagementClient
_kv_mgmt_client = get_client_from_auth_file(KeyVaultManagementClient)
но не это:
from azure.common.client_factory import get_client_from_auth_file
from azure.keyvault import KeyVaultClient
_kv_client = get_client_from_auth_file(KeyVaultClient)
Это сообщение об ошибке: TypeError: __init__() got an unexpected keyword argument 'base_url'
Обновление:
После проверки get_client_from_auth_file
возвращает несколько результатов, включаяbase_url
, поэтому следующая вспомогательная функция разрешает TypeError
.
class KeyVaultClientHelper:
def __init__(self, credentials, **kwargs):
self._credentials = credentials
И KeyVaultClient успешен, пока не попытается получить секрет и не вернет Unauthorized
.
helper = get_client_from_auth_file(KeyVaultClientHelper)
client = KeyVaultClient(helper._credentials)
print(client.get_secret("http://my-vault-url...", "MY-KEY", '').value))
Однако я успешно получаю секреты, используя ServicePrincipalCredential
с тем же файлом аутентификации.