当前位置: 首页 > 知识库问答 >
问题:

使用DefaultAzureCredential在本地验证Azure密钥库

丌官淇
2023-03-14

我试图在本地(Ubuntu 19.10)运行此从保管库检索秘密示例,以从Azure Key Vault检索秘密:

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

client = SecretClient(vault_url="https://<<vaultname>>.vault.azure.com",
                      credential=DefaultAzureCredential())

secret = client.get_secret("<<mysecret>>")

但是,我收到以下错误:

蔚蓝色的果心例外。ClientAuthenticationError:

此链中没有提供令牌的凭据。

尝试的凭据:

环境凭据:不完整的环境配置。有关预期的环境html" target="_blank">变量,请参见https://aka.ms/python-sdk-identity#environment-variables

IMDS凭据:IMDSendpoint不可用

请访问以下文档:

https://aka.ms/python-sdk-identity#defaultazurecredential

了解DefaultAzureCredential支持哪些选项

关于密钥库的服务到服务身份验证的文档似乎建议我应该能够通过Azure CLI进行身份验证,我已经按照步骤通过az login登录,选择适当的订阅(我只是为了以防万一,尽管只有一个),并通过az account get access token--resource验证访问权限https://vault.azure.net返回令牌,但仍会收到上述错误。

我是否错误地认为我应该能够在通过cli登录后进行身份验证?

如果是这样,我需要手动设置为环境凭据提供的留档链接中描述的环境变量,我需要为AZURE_CLIENT_IDAZURE_CLIENT_SECRET提供哪些值?

共有1个答案

法兴德
2023-03-14

我是否错误地认为我应该能够在通过cli登录后进行身份验证?

你没有错,在我写这篇文章的时候,azure identity的当前预览版1.4.0b2是可能的。安装了它之后,您的代码应该在登录到CLI后就可以工作了。

...我需要为AZURE_CLIENT_IDAZURE_CLIENT_SECRET提供哪些值?

这将是服务负责人的客户(或“应用程序”)ID及其机密之一。azure keyvault secrets文档描述了如何使用CLI创建服务主体并配置其对密钥库的访问。

在此处简单地重新列出该文档,您可以使用以下命令创建服务主体:

az ad sp create-for-rbac --name http://my-application

从该命令的输出来看,“appId”是AZURE\u CLIENT\u ID的值,“password”是AZURE\u CLIENT\u SECRET的值。

然后,授予服务负责人访问密钥库秘密的权限:

az keyvault set-policy --name <<vaultname>> --spn $AZURE_CLIENT_ID --secret-permissions get set list delete backup recover restore purge
 类似资料:
  • 我们有一个web api(.NET 5),可以访问Azure KeyVault中的一些秘密 在local machine for development中,由于我是新创建的vault的所有者,因此我的电子邮件具有访问keyvault的权限。 因此我选择了我的账户-- 我有下面的代码从Keyvault获取机密,并通过配置访问,就像访问appsettings值一样。 我们在服务层和控制器层访问像_co

  • 我正在尝试对现有API启用Azure密钥库证书。我们已经在Azure Key Vault帐户中拥有秘密和Azure Key Vault证书。下面是配置证书的代码: 在我的本地计算机上,我正确地导入了证书,其中包括下载pfx格式。

  • 问题内容: 我正在使用pysftp编写程序,它想针对验证SSH主机密钥。 终端程序使用PuTTY将其保存到Registry中。 如何调和pysftp和PuTTY之间的区别? 我的代码是: E:\Program Files (x86)\Anaconda3\lib\site-packages\pysftp__init__.py:61: UserWarning: Failed to load HostK

  • 使用PuTTY,终端程序将其保存到注册表。 如何协调pysftp和Putty之间的差异? 我的代码是:

  • 我们正在本地开发该函数,尽管我们可以使用 ConfigurationBuilder()。AddAzureKeyVault() 在启动以检索密钥保管库机密时,我们正在努力使队列触发器从 Key Vault 获取连接字符串。如下所示,连接当前是从 local.settings.json 中存在的 AzureWebJobsStorage 密钥检索的: local.settings.json