python - 是否可以使用服务主体通过 Azure Python SDK 方法 get_client_from_auth_file 返回 KeyVaultClient?

标签 python azure azure-keyvault azure-sdk azure-sdk-python

使用 Azure Python SDK,我想使用 get_client_from_auth_file 方法返回 KeyVaultClient,以便从 KeyVault 获取 secret ,而无需通过 KeyVaultManagementClient

根据documentation ,似乎可以从任何 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__() 获得意外的关键字参数“base_url”

更新:

经过审核,get_client_from_auth_file 返回多个结果,包括 base_url,因此以下辅助函数可以解决 TypeError

class KeyVaultClientHelper:
    def __init__(self, credentials, **kwargs):
        self._credentials = credentials

并且 KeyVaultClient 会成功,直到它尝试获取 secret 并返回未经授权

helper = get_client_from_auth_file(KeyVaultClientHelper)
client = KeyVaultClient(helper._credentials)
print(client.get_secret("http://my-vault-url...", "MY-KEY", '').value))

但是,我使用具有相同身份验证文件的 ServicePrincipalCredential 成功获取了 secret 。

最佳答案

这是 azure-common 中的一个错误,已在 1.1.22 中修复: https://pypi.org/project/azure-common/1.1.22/

谢谢!

关于python - 是否可以使用服务主体通过 Azure Python SDK 方法 get_client_from_auth_file 返回 KeyVaultClient?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56432363/

相关文章:

wcf - 从 Silverlight 5 客户端访问 Azure 表存储数据的最佳实践

c# - 通过代理使用 KeyVaultClient

sql - Azure SQL DB : create users with PowerShell, 参数化 SQL 脚本和 Azure Key Vault

python - Pandas 使用逻辑或公共(public)列之间的方式合并两个数据框

python - 如何在配置模块中设置 Flask 应用程序的主机和端口?

asp.net-mvc - Windows Azure 上是否可以存在与 Windows Server 上相同的 Web 应用程序?

iis - Blob 存储、IIS 平滑流或自适应流我很困惑

azure - 如何让启用 MSI 的 Function App 访问 Key Vault?

python - 如何使用 Python 计算此 CRC?

python - 如何在 Azure ML Studio 中保存 ipython 笔记本中的数据集?