繁体   English   中英

使用 DefaultAzureCredential 在本地对 Azure Key Vault 进行身份验证

[英]Authenticating to Azure Key Vault locally using DefaultAzureCredential

我正在尝试在本地(Ubuntu 19.10)运行此“从保管库中检索机密”示例,以从 Azure 密钥保管库中检索机密:

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>>")

但是我收到以下错误:

azure.core.exceptions.ClientAuthenticationError:

此链中没有凭证提供令牌。

尝试的凭据:

EnvironmentCredential:环境配置不完整。 有关预期的环境变量,请参阅https://aka.ms/python-sdk-identity#environment-variables

ImdsCredential:IMDS 端点不可用

请访问文档

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

了解 DefaultAzureCredential 支持哪些选项

有关 Key Vault 的服务到服务身份验证的文档似乎表明我应该能够通过 Azure CLI 进行身份验证,并且我已经按照步骤通过az login ,select 适当的订阅(我已经完成以防万一,尽管只有一个),并通过az account get-access-token --resource https://vault.azure.net验证访问,它确实返回了一个令牌,但仍然收到上述错误。

假设我应该能够在通过 cli 登录后进行身份验证,我错了吗?

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

假设我应该能够在通过 cli 登录后进行身份验证,我错了吗?

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

...我需要为AZURE_CLIENT_IDAZURE_CLIENT_SECRET提供什么值?

这些将是服务主体的客户端(或“应用程序”)ID,以及它的秘密之一。 azure-keyvault-secrets 文档描述了如何使用 CLI 创建服务主体并配置其对 Key Vault 的访问权限。

在此处简要重申该文档,您可以使用以下命令创建服务主体:

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

从该命令的 output 中,“appId”是AZURE_CLIENT_ID的值,“password”是AZURE_CLIENT_SECRET的值。

然后,授予服务主体访问 Key Vault 机密的权限:

az keyvault set-policy --name <<vaultname>> --spn $AZURE_CLIENT_ID --secret-permissions get set list delete backup recover restore purge

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM