Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure中托管标识生成的访问令牌如何与Python SDK一起使用?_Python_Azure_Token_Azure Keyvault_Azure Sdk - Fatal编程技术网

Azure中托管标识生成的访问令牌如何与Python SDK一起使用?

Azure中托管标识生成的访问令牌如何与Python SDK一起使用?,python,azure,token,azure-keyvault,azure-sdk,Python,Azure,Token,Azure Keyvault,Azure Sdk,我在Azure中设置了一台具有托管标识的VM计算机。 我跟着导游走 现在我有了一个访问令牌。但我不明白的是,我如何使用此令牌访问我的密钥库?我正在使用Python SDK。在这里查看SDK的文档 存在访问令牌类AccessTokenscheme、令牌、密钥 我想我可以使用我之前在这里生成的令牌。但什么是计划和关键?文件没有解释这一点。或者我正在寻找与令牌一起使用的错误类?我不建议您使用VM的托管标识来访问KeyVault。如果要运行脚本/代码,应该创建服务主体 最好的方法是使用Azure CLI

我在Azure中设置了一台具有托管标识的VM计算机。 我跟着导游走

现在我有了一个访问令牌。但我不明白的是,我如何使用此令牌访问我的密钥库?我正在使用Python SDK。在这里查看SDK的文档

存在访问令牌类AccessTokenscheme、令牌、密钥
我想我可以使用我之前在这里生成的令牌。但什么是计划和关键?文件没有解释这一点。或者我正在寻找与令牌一起使用的错误类?

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

最好的方法是使用Azure CLI。有关安装CLI的说明,请参阅,或有关创建服务主体的说明,请参阅

在Python中管理资源的最佳方法是使用ADAL,其文档如下:

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

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


请记住查看和调整您创建的sp的角色分配。而且您的密钥保管库的安全性仅与能够访问sp凭据的设备相同。

如果您使用的是具有托管身份的VM,则可以使用的为密钥保管库客户端创建凭据。当您使用密钥保管库客户端时,凭据将为您获取和使用访问令牌:

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

credential = ManagedIdentityCredential()
client = SecretClient("https://{vault-name}.vault.azure.net", credential)
secret = client.get_secret("secret-name")
请注意,我使用的是从密钥库获取机密;在Python中,有一些用于使用Key Vault的新软件包取代了azure keyvault:

每个包中的客户端都可以使用来自的任何凭据进行身份验证

我使用Python开发Azure SDK

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

credential = ManagedIdentityCredential()
client = SecretClient("https://{vault-name}.vault.azure.net", credential)
secret = client.get_secret("secret-name")