azure - 无法使用应用服务上的 Azure MSI 访问 Key Vault

标签 azure azure-webjobs azure-web-app-service azure-keyvault azure-managed-identity

我已在应用服务上启用托管服务身份。但是,我的 WebJobs 似乎无法访问 key 。

他们报告:

尝试了以下3种方法来获取访问 token ,但都不起作用。 参数:连接字符串:[未指定连接字符串],资源:https://vault.azure.net,权限:。异常消息:尝试使用托管服务身份获取 token 。无法连接到托管服务身份 (MSI) 端点。请检查您是否在具有 MSI 设置的 Azure 资源上运行。 参数:连接字符串:[未指定连接字符串],资源:https://vault.azure.net,权限:https://login.microsoftonline.com/common。异常消息:尝试使用 Active Directory 集成身份验证获取 token 。无法获取访问 token 。 password_required_for_managed_user:托管用户需要密码 参数:连接字符串:[未指定连接字符串],资源:https://vault.azure.net,权限:。异常消息:尝试使用 Azure CLI 获取 token 。无法获取访问 token 。 “az”未被识别为内部或外部命令,

Kudo 不显示任何 MSI_ 环境变量。

这应该如何运作?这是现有的应用服务计划。

最佳答案

AppAuthentication 库利用应用服务中的内部端点来代表您的站点接收 token 。该端点是非静态的,因此被设置为环境变量。通过 ARM 为您的站点激活 MSI 后,您的站点将需要重新启动才能在其中设置两个新的环境变量:

MSI_ENDPOINTMSI_SECRET

这些变量的存在对于 MSI 功能在运行时正常工作至关重要,因为 AppAuthentication 库使用它们来获取授权 token 。错误消息反射(reflect)了这一点:

Exception Message: Tried to get token using Managed Service Identity. Unable to connect to the Managed Service Identity (MSI) endpoint. Please check that you are running on an Azure resource that has MSI setup.

如果这些变量不存在,您可能需要重新启动站点。

https://learn.microsoft.com/en-us/azure/app-service/app-service-managed-service-identity

如果设置了环境变量,但您仍然看到相同的错误,上面的文章有一个代码示例,展示了如何手动向该端点发送请求。

public static async Task<HttpResponseMessage> GetToken(string resource, string apiversion)  {
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Secret", Environment.GetEnvironmentVariable("MSI_SECRET"));
return await client.GetAsync(String.Format("{0}/?resource={1}&api-version={2}", Environment.GetEnvironmentVariable("MSI_ENDPOINT"), resource, apiversion));

}

我会尝试一下,看看会得到什么样的回应。

关于azure - 无法使用应用服务上的 Azure MSI 访问 Key Vault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46307365/

相关文章:

azure - 如何使用 REST API 提交代理消息

azure - SQL Azure 限制 - 索引的影响

azure - 当应用服务计划有 7 GiB 时,WebJob 只能访问 2 GiB 内存

azure-web-app-service - Blazor WASM - 尝试让您登录时出错 : 'this._settings.loginMode is undefined'

asp.net-mvc - Azure 网站/应用程序可以确定其实例的 CPU/内存使用情况吗?

azure - 如何从 Azure 应用服务上的 TLS 1.2 配置中删除弱密码?

azure - 如何使用逻辑应用程序中的连接器连接到 Salesforce 的自定义对象

azure - 使用 KQL 查询的日志分析工作区中的默认排序列是什么?

azure - Azure 批处理、调度程序和 Web 作业之间的区别以及何时使用

Azure - 更改 WebJob 详细信息日志的时区