如何从 Azure 容器应用服务使用 Azure ACR 进行身份验证

Ric*_*ban 10 azure azure-container-registry azure-managed-identity

我正在尝试设置我的应用程序容器服务,以便它可以使用托管身份从我们的 ACR 中提取 docker 映像,而不是将用户名和密码存储在应用程序设置中(除了我们想要编写这些部署的脚本之外,如果应用程序服务需要用户名和密码,那么我们必须将它们存储在源代码管理中)。

令人难以置信的是,我找不到有关此场景的任何文档。我发现的最接近的是使用托管身份从虚拟机中提取 ACR 映像[ https://learn.microsoft.com/en-us/azure/container-registry/container-registry-authentication-management-identity],我不能将其用作指南,因为最后一步(我唯一缺少的一点)是通过SSH 进入虚拟机并az acr login --name myContainerRegistry在命令行中运行。

我必须去的地方:

  • 我已经创建了 ACR 和容器应用服务
  • 我已将该角色授予ACR Pull应用Reader程序服务的系统分配身份
  • 尝试拉取容器映像时,应用程序服务访问被拒绝

我不知道下一步该做什么;就像我说的,我找不到关于这种情况的任何指南。

ToD*_*ond 6

现在可以通过设置acrUseManagedIdentityCreds属性来实现

以下是包含步骤的教程:https: //learn.microsoft.com/en-us/azure/app-service/tutorial-custom-container ?pivots=container-linux#configure-app-service-to-deploy-来自注册表的图像

下面是具体命令

  1. 授予托管标识访问容器注册表的权限:

az role assignment create --assignee <principal-id> --scope /subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/<registry-name> --role "AcrPull"

  1. 配置应用程序以使用托管标识从 Azure 容器注册表中提取

az resource update --ids /subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.Web/sites/<app-name>/config/web --set properties.acrUseManagedIdentityCreds=True


djs*_*sly 4

要将应用服务配置为从 ACR 拉取,您可以使用服务主体方法并设置访问级别,就像您已经完成的那样。

https://github.com/Azure/app-service-linux-docs/blob/master/service_principal_auth_acr.md

就 terraform 的应用服务而言,您可以使用以下命令在 Azure Key Vault 中注入 ServicePrincipal 凭据机密的设置

https://www.terraform.io/docs/providers/azurerm/r/app_service.html#app_settings