当前位置: 首页 > 知识库问答 >
问题:

在Azure Batch中使用托管标识在批处理池中使用Python对密钥库进行身份验证

符允晨
2023-03-14
from azure.keyvault import KeyVaultClient
from msrestazure.azure_active_directory import MSIAuthentication

credentials = MSIAuthentication(resource='https://vault.azure.net')

kvclient = KeyVaultClient(credentials)
res = kvclient.get_secret("https://kv.vault.azure.net/", "secret", "").value

对于较新的azure keyvault包,我使用了以下内容:

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

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

credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)

secretName = "secret"
retrieved_secret = client.get_secret(secretName)

但是它找不到ManagedIdentityCredential。这是错误的一部分:

SharedTokenCacheCredential.get_token failed: Shared token cache unavailable
VisualStudioCodeCredential.get_token failed: Failed to get Azure user details from Visual Studio Code.
AzureCliCredential.get_token failed: Please run 'az login' to set up an account
DefaultAzureCredential failed to retrieve a token from the included credentials.
Attempted credentials:
    EnvironmentCredential: EnvironmentCredential authentication unavailable. Environment variables are not fully configured.
    ManagedIdentityCredential: ManagedIdentityCredential authentication unavailable. No identity has been assigned to this resource.
    SharedTokenCacheCredential: Shared token cache unavailable
    VisualStudioCodeCredential: Failed to get Azure user details from Visual Studio Code.
    AzureCliCredential: Please run 'az login' to set up an account
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

共有1个答案

鲜于裕
2023-03-14

2021-02-17更新答案:

批处理池上的托管标识现在在选择区域中公开预览。请看这位医生。

原文答案:

 类似资料:
  • 面向公共的服务需要api密钥。 “专用”服务只能接受来自群集内部的呼叫,而不能接受外部世界的呼叫。 每个api都标识一个用户,并且用户对象必须可用于rest服务。 在一个JAX-RS应用程序中有什么标准的方法可以做到这一点吗?(我们用的是resteasy。) 我读过关于过滤器、拦截器和基本身份验证的所有内容,但我不清楚什么是最好的方法。

  • HTTP/REST-需要对代码/token/etc进行身份验证,以便将数据传递到keyvault,以便keyvault将使用密钥库中的密钥对数据进行签名。 Azure有很多文档介绍如何注册我的应用程序,在密钥库中为它创建凭据,然后通过OATH2对它进行身份验证(第一步是通过REST获得代码(然后是令牌?)),我一直被重定向登录。 我是不是漏掉了什么?我希望我的python脚本在无人值守的情况下运行

  • 我有一个在Azure VM中托管的php应用程序,在密钥库中有一些秘密。我已经设置了托管身份并获得了进入保险库的权限。 Azure SDK for php不支持密钥库,所以我使用REST接口。 我的问题是当在本地运行时,即我的代码在桌面上以VSCode运行时,我不能调用AIMS来获取令牌,因为我在本地机器上没有托管标识。 我只能想到两个选择: null 请注意,Visual Studio提供了Az

  • 我在Azure中设置了两个应用程序服务。”父级和子级都公开APIendpoint。 子节点有endpointGet。 父节点有endpoint“获取”和“获取儿童”(使用HttpClient在儿童上调用“获取”)。 我希望所有子endpoint都需要通过托管身份和AAD进行身份验证,并且我希望所有父endpoint都允许匿名。但是在Azure中,我希望将父应用服务设置为具有调用子应用服务的权限。因

  • 我刚刚在AKS群集中设置了托管标识,以使用Azure Key Vault资源进行身份验证,使用以下指南:https://dev.to/vivekanandrapaka/access-secrets-from-akv-using-managed-identities-for-aks-91p 在指南中,我们在VMS中设置了系统分配的托管标识。然后,我们将VMS应用程序添加到keyvault中的访问策略