如何从Azure托管身份生成的访问令牌与Python SDK一起使用?

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

我已经在Azure中设置了具有托管身份的VM计算机。我在这里遵循指南https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/tutorial-linux-vm-access-arm

所以现在我有了访问令牌。但是我不明白的是如何使用此令牌访问密钥库?我正在使用Python SDK。在此处查看SDK的文档https://docs.microsoft.com/en-us/python/api/azure-keyvault/azure.keyvault?view=azure-python

[存在访问令牌类AccessToken(scheme, token, key)我假设我可以使用在此之前生成的令牌。但是什么是方案和关键?该文档没有解释。还是我看错了要与令牌一起使用的类?

python azure token
1个回答
0
投票

我不建议您使用VM的托管身份来访问KeyVault。如果要运行脚本/代码,则应创建服务主体。

最佳方法是使用Azure CLI。有关安装CLI的说明,请参见here,并参考thisthis创建服务主体。

在Python中管理资源的最佳方法是使用ADAL,该文档已记录:

https://github.com/AzureAD/azure-activedirectory-library-for-python

但是,在您的情况下,管理KeyVault变得容易一些,因为用于Python的KeyVault库还提供了无需直接使用ADAL即可获取访问令牌的身份验证方法。看到这里:

https://docs.microsoft.com/en-us/python/api/overview/azure/key-vault?view=azure-python

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

credentials = ServicePrincipalCredentials(
    client_id = '...',
    secret = '...',
    tenant = '...'
)

client = KeyVaultClient(credentials)

# VAULT_URL must be in the format 'https://<vaultname>.vault.azure.net'
# KEY_VERSION is required, and can be obtained with the KeyVaultClient.get_key_versions(self, vault_url, key_name) API
key_bundle = client.get_key(VAULT_URL, KEY_NAME, KEY_VERSION)
key = key_bundle.key

在上面,client_id,secret和tenant(id)都是az ad sp create-for-rbac --name {APP-NAME} CLI命令的输出。

请记住要查看和调整您创建的sp的角色分配。而且,您的KeyVault仅与可以访问您的sp凭据的设备一样安全。

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