0

我正在按照 Microsoft 文档使用 python sdk 从密钥库中检索机密。

微软提供的代码和解释导致了这个代码:

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


keyvault_name = f'https://<Keyvaultname>.vault.azure.net/'
KeyVaultName = "<Keyvaultname>"
credential = DefaultAzureCredential()
client = SecretClient(vault_url=keyvault_name, credential=credential)



print(" done.")

print(f"Retrieving your secret from {KeyVaultName}.")

retrieved_secret = client.get_secret("test")

print(f"Your secret is '{retrieved_secret.value}'.")

根据我的理解,DefaultCredentials配置的az login那个很好,我的代码运行得很好,但我一直在终端中收到这条消息。

 done.
Retrieving your secret from <KeyvaultName>.
EnvironmentCredential.get_token failed: EnvironmentCredential authentication unavailable. Environment variables are not fully configured.
ImdsCredential.get_token failed: ManagedIdentityCredential authentication unavailable, no managed identity endpoint found.
ManagedIdentityCredential.get_token failed: ManagedIdentityCredential authentication unavailable, no managed identity endpoint found.
SharedTokenCacheCredential.get_token failed: SharedTokenCacheCredential authentication unavailable. Multiple accounts
were found in the cache. Use username and tenant id to disambiguate.

我认为这warnings是因为我在我的 Azure 门户中有多个订阅。

我想知道,我怎样才能摆脱这些并仅为单个订阅设置凭据?

非常感谢您为我提供的任何帮助和解释。

4

1 回答 1

1

一般来说,我不会担心这个警告。当您使用 时DefaultAzureCredential,SDK 会按该顺序 ( ) 尝试以下凭证选项Reference

  • 环境证书
  • 托管身份凭证
  • SharedTokenCacheCredential
  • VisualStudio凭据
  • VisualStudioCodeCredential
  • AzureCliCredential
  • AzurePowerShellCredential
  • InteractiveBrowserCredential

如果该凭证选项失败,SDK 从一个凭证选项转移到另一个。警告消息只是 SDK 告诉您它已尝试的所有凭据选项的一种方式。

但是,如果您仍然想摆脱此消息,您可以使用以下几个选项:

  • 排除您不希望 SDK 在使用时尝试的凭据选项DefaultAzureCredential。您可以通过exclude_xxx_credential构造函数中的选项指定它们。例如,如果要排除EnvironmentCredential,则应exclude_environment_credential=TrueDefaultAzureCredential构造函数中指定。SDK 将跳过那些凭证方法。link有关所有构造函数选项,请参阅此内容。
  • 使用特定的凭据选项。例如,如果您总是想使用 Azure CLI 凭据,则可以使用AzureCliCredential.
于 2021-10-06T16:19:20.200 回答