我在 Azure 中有一个使用 AKS 预览版的 k8s 集群。
我还在虚拟机上启用了 MSI。如果我 ssh 到虚拟机,我可以看到 MSI 服务正在运行:
curl http://localhost:50342/oauth2/token --data "resource=https://vault.azure.net" -H Metadata:true
根据文档,我得到了您所期望的回复。
但是,我无法弄清楚如何让我的 aspnet 核心应用程序AzureServiceTokenProvider
根据需要使用。在本地它可以工作,一旦部署在 kubernetes 的 pod 中,它就找不到所需的授权。
我得到的错误是:
Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException:参数:Connectionstring:[未指定连接字符串],资源:https ://vault.azure.net ,授权:https ://login.windows.net/9d93c307-6856-4bab -8fa9-99690e0fabaf。异常消息:尝试了以下 3 种方法来获取访问令牌,但都没有奏效。参数:连接字符串:[未指定连接字符串],资源:https ://vault.azure.net ,权限:https ://login.windows.net/9d93c307-6856-4bab-8fa9-99690e0fabaf. 异常消息:尝试使用托管服务标识获取令牌。无法连接到托管服务标识 (MSI) 端点。请检查您是否在具有 MSI 设置的 Azure 资源上运行。参数:连接字符串:[未指定连接字符串],资源:https ://vault.azure.net ,权限:https ://login.windows.net/9d93c307-6856-4bab-8fa9-99690e0fabaf 。异常消息:尝试使用 Visual Studio 获取令牌。无法获取访问令牌。未设置环境变量 LOCALAPPDATA。参数:连接字符串:[未指定连接字符串],资源:https ://vault.azure.net ,权限:https ://login.windows.net/9d93c307-6856-4bab-8fa9-99690e0fabaf. 异常消息:尝试使用 Azure CLI 获取令牌。无法获取访问令牌。/bin/bash: az: 没有这样的文件或目录 ```
有没有人能够使用类似代码从 pod 中的 KeyVault 读取?
AzureServiceTokenProvider azureServiceTokenProvider = new
AzureServiceTokenProvider();
KVC = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var baseUrl = config.GetValue<string>("Azure:VaultURL");
var secretLocation = config.GetValue<string>("Azure:SecretLocation");
location = $"{baseUrl}{secretLocation}";
KVC.GetSecretAsync(location).Result.Value;