【问题标题】:Azure App Service stops working after enabling Managed Identity启用托管标识后 Azure 应用服务停止工作
【发布时间】:2019-12-11 11:09:55
【问题描述】:

我在 Azure 应用服务中部署了一个 Docker 容器。我有一个可以调用的公共 API,它返回“Hello world”。

我想在我的应用程序中使用 Azure 托管标识,因此我在 Azure 门户中启用了它。我按照以下文档启用了“系统分配”:https://docs.microsoft.com/en-us/azure/app-service/overview-managed-identity?tabs=dotnet

启用托管标识后,我的网络应用程序停止工作。重新启动它没有帮助。禁用托管标识可以解决此问题。

如果我尝试调用我的 API,我会收到错误消息: ":( 应用程序错误 如果您是应用程序管理员,则可以访问诊断资源。”

不仅仅是我的 API,整个应用程序都停止了工作。如果我尝试导航到 https://[myApp].azurewebsites.net 我会得到同样的错误。如果没有托管身份,我在导航到此地址时会收到“404 页面未找到”。

有人遇到过吗?如何解决?

更新:我无法使用示例“静态站点”容器重现它,因此它必须与我们部署的容器有某种关联。但我不明白是什么原因造成的 - 启用托管身份是否会以某种方式改变(减少)应用程序可以做的事情?

更新 2: 容器包含使用 Azure SDK 向 AAD 进行身份验证的 Go 应用程序。在我们看来,如果启用了托管身份,这种身份验证尝试会使整个应用程序在启动期间崩溃。我们的目的是使用托管标识从 Azure Key Vault 获取机密。然后使用此密钥向 AAD 进行身份验证。现在我们的应用甚至没有尝试与 Managed Identity 服务对话。

【问题讨论】:

  • 现在我们的应用甚至没有尝试与托管身份服务进行对话。 - 这到底是什么意思?您可以查看容器日志(stdout/stderr 和 docker 主机),这应该为您提供调试的起点,docs.microsoft.com/en-us/azure/app-service/…。顺便说一句,应用程序设置在静态应用服务中加密,以防万一这是您使用 Key Vault 解决的攻击媒介。
  • 我的意思是,我们只是在 Azure 门户中为这个 Web 应用启用了托管标识。但是我们的应用程序还没有任何逻辑来使用它。简单地激活它似乎改变了一些东西。我们检查了日志,并且在尝试使用 Azure SDK for Go 对 AAD 进行身份验证时,我们的应用程序在启动时崩溃了。我们现在正试图绕过 Azure SDK for Go,看看它是否有帮助,或者至少提供更有意义的故障模式。是的,使用 Managed Identity & Key Vault 的目的是避免在环境变量中存储机密。
  • 有趣,可能是 Azure SDK for Go 特有的东西。以前没见过这个。如果你能找到更多的失败细节,我会在their repo 中打开一个问题。
  • 这是我们发现的:当我们将 MSI_SECRET 定义为空白(存在,但空白;不存在很好)的那一刻,SDK 崩溃。看来我们现在可以解决这个问题了。
  • @Nikolaos 可以进一步详细说明您的解决方案吗?您是否自己定义了 MSI_SECRET?你在哪里定义的?

标签: azure azure-web-app-service azure-managed-identity


【解决方案1】:

将评论汇总成回复,让其他人更清楚地找到解决办法。

当我们将MSI_SECRET 定义为空白(存在,但空白;不存在很好)的那一刻,SDK 崩溃。

所以定义 MSI_SECRET 值,因为它在 KUDU 环境中显示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 2020-08-10
    • 2018-09-05
    • 2021-06-01
    • 2019-10-26
    相关资源
    最近更新 更多