如何在 Python 脚本中不使用服务原理的情况下从 Key Vault 读取机密

问题描述 投票:0回答:1

我们使用Azure数据工厂的批处理服务在Azure数据工厂中运行Python脚本。 我们正在使用服务原则从密钥保管库读取机密,为此我们需要对客户端 ID、客户端机密进行硬编码,以便有权读取机密值。 有什么方法可以克服这个问题,这样就不需要对服务原则进行硬编码。 在这种情况下我们可以使用托管身份吗?

我们尝试使用托管身份,并创建了用户管理身份来访问密钥保管库。 已向 Batch 帐户和 Azure 数据工厂提供对此用户管理标识的访问权限。 但我们无法找到同一案例的后续步骤。

python azure azure-data-factory azure-keyvault azure-batch
1个回答
0
投票

要从 Python 脚本中的 Azure Key Vault 读取机密,而不需要对服务主体详细信息进行硬编码,使用托管身份是一个不错的选择。这是一个简单的方法:

设置托管身份:首先,在 Azure 中创建用户托管身份。这就像创建一个您的 Azure 数据工厂和 Batch 帐户可以使用的用户。

链接托管标识:接下来,将此新的托管标识附加到您的 Azure 数据工厂和批处理帐户。此步骤就像授予您的数据工厂和批处理帐户使用此新用户的权限。

授予对 Key Vault 的访问权限:在 Azure Key Vault 中,添加一条规则,允许此托管标识读取机密。这就像告诉 Key Vault,“嘿,这个用户可以看到机密。”

更新您的 Python 脚本:在您的脚本中,使用 Azure 的库(azure.identity 和 azure.keyvault.secrets)通过此托管标识连接到 Key Vault。这是一些代码:

from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient

credential = DefaultAzureCredential()
client = SecretClient(vault_url="Your-Key-Vault-URL", credential=credential)
secret = client.get_secret("Your-Secret-Name")
print(f"Secret: {secret.value}")

当您在 Azure 数据工厂中运行此脚本时,它应该获取托管标识并从 Key Vault 获取机密,而无需任何硬编码凭据。

© www.soinside.com 2019 - 2024. All rights reserved.