【问题标题】:Authenticating to Azure Key Vault locally using DefaultAzureCredential使用 DefaultAzureCredential 在本地对 Azure Key Vault 进行身份验证
【发布时间】:2020-07-22 07:30:25
【问题描述】:

我正在尝试在本地 (Ubuntu 19.10) 运行此 'Retrieve a secret from the vault' 示例以从 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>>")

但是我收到以下错误:

azure.core.exceptions.ClientAuthenticationError:

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

尝试的凭据:

EnvironmentCredential:环境配置不完整。见https://aka.ms/python-sdk-identity#environment-variables 预期的环境变量

ImdsCredential:IMDS 端点不可用

请访问文档

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

了解 DefaultAzureCredential 支持哪些选项

documentation on Service-to-Service authentication to Key Vault 似乎表明我应该能够通过 Azure CLI 进行身份验证,并且我已按照步骤通过az login 登录,选择适当的订阅(我已经这样做以防万一,尽管只有一个),并通过确实返回令牌的az account get-access-token --resource https://vault.azure.net 验证访问权限,但仍然收到上述错误。

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

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

【问题讨论】:

    标签: python azure azure-keyvault azure-sdk-python


    【解决方案1】:

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

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

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

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

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

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

    根据该命令的输出,“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
    

    【讨论】:

      猜你喜欢
      • 2018-04-06
      • 2020-08-21
      • 1970-01-01
      • 2020-09-11
      • 2019-03-13
      • 2019-11-01
      • 2019-02-28
      • 2023-01-10
      • 2021-12-27
      相关资源
      最近更新 更多