Azure容器注册表Webhook到应用服务401

qhhrdooz  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(131)

我有一个Azure应用服务,当应用服务启动时,它会从Azure容器注册表(ACR)中提取容器映像。我正在尝试让ACR Webhook通知App Service有新容器可用并自动重新启动。然而,当Webhook在ADO管道中运行良好时,我得到了一个“401未授权”错误。
在应用服务中,我打开了“持续部署”,并将Webhook URL复制到ACR Webhook中的服务URI:

App Service对Container Registry具有“AcrPull”权限:

即使在Webhook上运行Ping也会导致401,配置如下:

我错过了什么?我在Microsoft文档中没有看到任何特别跳过的内容。

gijlo24d

gijlo24d1#

Azure容器注册表Webhook到App Service 401:

  • 需要检查下面:*

验证您添加的权限(用户或服务主体),即使您提供了通过App服务获取注册表的适当权限。
因为要能够从ACR中提取,您必须将AcrPull角色分配给“托管身份或服务主体”。
有时ACR webhook没有访问App服务的授权。要解决此问题,请将ACR Webhook IP地址添加到App Service的IP限制中。
在少数情况下,App Service可能未设置为使用正确的身份验证方法。在设置中检查App Service的Authentication中的身份验证。

如果问题仍然存在,请尝试使用管理员凭据进行身份验证,如图所示。

检查App服务和容器注册表是否存在防火墙或IP限制。
如果上述方法都没有帮助,请通过访问应用服务中部署选项下的部署中心日志来检查日志。

我在我的环境中尝试了同样的方法,其中添加了以下权限,并在Azure AD中注册了一个应用程序,结果如下所示。

其他解决方案,如ACR任务功能或使用Azure事件网格和Azure函数开发自定义解决方案,如果未解决,可能需要。

相关问题