Azure 从密钥保管库中检索机密
Azure Retrieve Secret from key vault
我正在按照 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 门户中有多个订阅。
我想知道,我怎样才能摆脱这些并为单个订阅设置凭据?
非常感谢您提供的任何帮助和解释。
一般来说,我不会担心这个警告。当您使用 DefaultAzureCredential
时,SDK 会按顺序尝试以下凭据选项 (Reference
):
- 环境证书
- ManagedIdentityCredential
- SharedTokenCacheCredential
- VisualStudioCredential
- VisualStudioCodeCredential
- AzureCliCredential
- AzurePowerShellCredential
- InteractiveBrowserCredential
如果该凭据选项失败,SDK 会从一个凭据选项移动到另一个凭据选项。警告消息只是 SDK 告诉您它已尝试的所有凭据选项的一种方式。
但是,如果您仍想删除此消息,可以使用以下几个选项:
- 排除您不希望 SDK 在使用时尝试的凭据选项
DefaultAzureCredential
。您可以通过构造函数中的 exclude_xxx_credential
选项指定它们。例如,如果要排除 EnvironmentCredential
,则可以在 DefaultAzureCredential
构造函数中指定 exclude_environment_credential=True
。 SDK 将跳过这些凭据方法。请参阅此 link
了解所有构造函数选项。
- 使用特定的凭据选项。例如,如果您始终希望使用 Azure CLI 凭据,则可以使用
AzureCliCredential
. 而不是使用 DefaultAzureCredential
我正在按照 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 门户中有多个订阅。
我想知道,我怎样才能摆脱这些并为单个订阅设置凭据?
非常感谢您提供的任何帮助和解释。
一般来说,我不会担心这个警告。当您使用 DefaultAzureCredential
时,SDK 会按顺序尝试以下凭据选项 (Reference
):
- 环境证书
- ManagedIdentityCredential
- SharedTokenCacheCredential
- VisualStudioCredential
- VisualStudioCodeCredential
- AzureCliCredential
- AzurePowerShellCredential
- InteractiveBrowserCredential
如果该凭据选项失败,SDK 会从一个凭据选项移动到另一个凭据选项。警告消息只是 SDK 告诉您它已尝试的所有凭据选项的一种方式。
但是,如果您仍想删除此消息,可以使用以下几个选项:
- 排除您不希望 SDK 在使用时尝试的凭据选项
DefaultAzureCredential
。您可以通过构造函数中的exclude_xxx_credential
选项指定它们。例如,如果要排除EnvironmentCredential
,则可以在DefaultAzureCredential
构造函数中指定exclude_environment_credential=True
。 SDK 将跳过这些凭据方法。请参阅此link
了解所有构造函数选项。 - 使用特定的凭据选项。例如,如果您始终希望使用 Azure CLI 凭据,则可以使用
AzureCliCredential
. 而不是使用 DefaultAzureCredential