微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Azure Key Vault 获取机密

如何解决使用 Azure Key Vault 获取机密

我想在 ML 笔记本中使用 Azure Key Vault 来检索机密。我遵循的教程 here 建议使用

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

vault_url = 'https://<myvaulturl>.vault.azure.net'
az_credential = DefaultAzureCredential()
client = SecretClient(vault_url=vault_url,credential=az_credential)

client.get_secret('<mysecret>')

但是我收到此错误 ClientAuthenticationError: DefaultAzureCredential Failed to retrieve a token from the included credentials. Attempted credentials: EnvironmentCredential: EnvironmentCredential authentication unavailable. Environment variables are not fully configured. ManagedIdentityCredential: Unexpected response 'None'
我认为这取决于我没有设置环境变量这一事实:

AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
AZURE_TENANT_ID

我想知道是否有其他方法可以在不使用 DefaultAzureCredential 类的情况下访问保管库。
有人有什么想法吗?

解决方法

尝试使用 ClientSecretCredential 来做到这一点:

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

AZURE_TENANT_ID = ''
AZURE_CLIENT_ID = ''
AZURE_CLIENT_SECRET = ''


cred = ClientSecretCredential(
    client_id = AZURE_CLIENT_ID,client_secret = AZURE_CLIENT_SECRET,tenant_id = AZURE_TENANT_ID
)

keyVaultName = ''
KVUri = f"https://{keyVaultName}.vault.azure.net"

sc = SecretClient(vault_url=KVUri,credential=cred)
print(sc.get_secret('<secret name>').value)

结果: enter image description here

enter image description here

更新:

  1. 您可以在 Azure 门户上找到您的租户 ID:

enter image description here

  1. 按照 this doc 创建 Azure AD 应用,然后按照 this section 创建应用机密。以便您拥有 ClientSecretCredential

    的所有 3 个参数(租户 ID、客户端 ID 和客户端密码)
  2. 按照 this doc 将此应用添加到访问策略,以便此应用有权查询 Azure Key Vault 中的机密。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。