gpt4 book ai didi

python - 在 Azure 中存储服务主体凭据以使用 Python 对 Key Vault 进行身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:06 24 4
gpt4 key购买 nike

我目前正在使用 Python 从 Azure blob 存储读取文件并将其存储在数据框中。为了对 Blob 存储进行身份验证,我使用服务主体凭据从 Azure key 保管库中提取存储帐户 key 。

我的代码如下:

from azure.keyvault import KeyVaultClient, KeyVaultAuthentication
from azure.common.credentials import ServicePrincipalCredentials

def auth_callback(server, resource, scope):
credentials = ServicePrincipalCredentials(
client_id = '',
client_secret='',
tenant = '',
resource = "https://samplename.vault.azure.net/"
)
token = credentials.token
return token['token_type'], token['access_token']

client = KeyVaultClient(KeyVaultAuthentication(auth_callback))

key_bundle = client.get_key('https://samplename.vault.azure.net/', '','')
json_key = key_bundle.key

但是,我必须将服务主体 key 保存在代码中,我认为这不是最佳实践。

如何避免这种情况?

我还考虑过将服务主体凭据存储在存储在 blob 存储中的单独配置文件中,然后从 Python 读取它。但这还涉及最终将 tee 服务主体的凭据存储在文本文件中。

我正在从 Azure Batch 运行 Python。

最佳答案

我还尝试在批处理服务中运行 Python,并且希望在门户或 python 脚本中不显示任何凭据的情况下访问 Key Vault,因此我需要使用证书而不是 key 。我认为这一定是批处理服务的一个非常常见的用例。

我可以使用 Powershell 脚本中的证书指纹访问 Key Vault,但我找到从 python 访问它的唯一方法是设置 AZURE_CLIENT_CERTIFICATE_PATH 环境变量以指向非密码保护的 pem 证书并使用 DefaultAzureCredential 类。批处理服务需要受密码保护的 cer 或 pfx 证书,因此任何解决方案都将非常繁琐 - 我唯一能想到的是将 pfx 转换为 pem,然后设置环境变量,其中 pfx 密码可见代码或在门户上。

如果有更简单的方法请告诉我。否则我认为这是批处理服务中的一个重大差距,否则批处理服务非常有用。

关于python - 在 Azure 中存储服务主体凭据以使用 Python 对 Key Vault 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55540023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com