【问题标题】:Error when trying to get token using Managed Service Identity in a multi-container azure web app service尝试在多容器 Azure Web 应用服务中使用托管服务标识获取令牌时出错
【发布时间】:2020-04-26 18:18:49
【问题描述】:

我们有以下场景:

当前工作设置

  1. 使用单个 DockerFile 的 Web API 项目
  2. 带有“Azure 应用服务部署”任务的发布管道。

建议的新设置

  1. 使用多容器 Docker Compose 文件的 Web API 项目
  2. 带有“Azure Web App for Containers”任务的发布管道。

部署新设置后,我们会收到以下错误消息:

ERROR - multi-container unit was not started successfully

Unhandled exception. System.AggregateException: One or more errors occurred. 
(Parameters: Connection String: XXX, Resource: https://vault.azure.net, Authority: 
https://login.windows.net/xxxxx. Exception Message: 
Tried to get token using Managed Service Identity. 
Access token could not be acquired. Connection refused)

引发的异常是因为它无法连接到 Azure MSI(托管服务标识)。它这样做是为了在连接到密钥保管库之前获取令牌。

根据其他人发现的一些研究和解决方案,我尝试了以下方法:

  1. "RunAs=App" 连接(这似乎是默认的无参数构造函数)
  2. 通过从机器中拉出"MSI_SECRET" 环境变量自己手动建立连接字符串。这始终是空白的。
  3. 正在重新启动 MSI。
  4. 升级和降级AppAuthentication

MSI 似乎配置正确,因为它与我们当前的工作设置完美配合,因此我们可以排除这种情况。 值得注意的是,这是系统分配的身份,而不是用户分配的身份。

说明哪些服务支持托管标识的文档仅提及“Azure Container Instances”而不是“Azure Managed Container Instances”,这也适用于 Linux/Preview,因此可能不受支持。

Services that support managed identities for Azure resources

我们在配置和部署方面花费了大量时间,如果我们能解决最后一个问题,那就太好了。

任何帮助表示赞赏。

【问题讨论】:

    标签: docker docker-compose azure-devops azure-managed-identity azure-pipelines-release-task


    【解决方案1】:

    很遗憾,目前不支持托管身份的多容器。多容器功能处于预览阶段,因此它的所有功能还没有发挥作用。

    但是,您链接到的文档也不清楚支持的方案,因此我正在努力更新此文档以更好地阐明这一点。完成后我可以更新此答案。

    【讨论】:

    • 非常感谢@nonik 的回复,这使我们免于尝试让它单独完成任务。我在想,如果我们在 API 中填充令牌调用所需的数据(从发布任务环境变量传递下来),它应该可以正常工作。在我们走上这条路之前,您是否会碰巧知道这是否可行?
    • 你好@hutchonoid 你还在为这个问题寻求帮助吗?
    • 嗨@Nishant-MSFTIdentity,是的,请提供一些进一步的信息。我们已经完成了一项工作,其中涉及部署单独的容器实例以便暂时发布。
    • @hutchonoid 感谢您的回复。让我检查一下是否可以找到有关此的更多信息。有东西我会在这里更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 2018-10-27
    • 2021-08-08
    • 2019-10-26
    • 1970-01-01
    相关资源
    最近更新 更多