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

iyfamqjs  于 2023-02-05  发布在  其他
关注(0)|答案(4)|浏览(152)

我正在尝试设置我的应用程序容器服务,以便它可以使用托管身份从ACR中提取Docker图像,而不是将用户名和密码存储在应用程序设置中(除了我们希望为这些部署编写脚本的其他内容,如果应用程序服务需要用户名和密码,那么我们必须将它们存储在源代码控制中)。
令人难以置信的是,我找不到任何关于此场景的文档。我找到的最接近的文档是使用托管身份从VM[https://learn.microsoft.com/en-us/azure/container-registry/container-registry-authentication-managed-identity]]拉取ACR映像,我不能将其用作指导,因为最后一步(我唯一缺少的一点)是 *SSH进入VM并在命令行运行az acr login --name myContainerRegistry *。
我要去的地方:

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

我不知道下一步该怎么办就像我说的,我找不到任何关于这个场景的指南。

xwbd5t1u

xwbd5t1u1#

现在可以通过设置 acrUseManagedIdentityCreds 属性实现此操作
以下是包含步骤的教程:https://learn.microsoft.com/en-us/azure/app-service/tutorial-custom-container?pivots=container-linux#configure-app-service-to-deploy-the-image-from-the-registry
以下是具体的命令
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

nkhmeac6

nkhmeac62#

要将App Service配置为从ACR拉取,您可以使用服务主体方法并设置访问级别,如之前所做的那样。
https://github.com/Azure/app-service-linux-docs/blob/master/service_principal_auth_acr.md
至于应用程序服务与terraform去,你可以注入服务主体凭据秘密的设置在Azure密钥保管库中使用
https://www.terraform.io/docs/providers/azurerm/r/app_service.html#app_settings

m2xkgtsf

m2xkgtsf3#

您对Web应用的托管标识理解有误,Web应用的托管标识用于访问Web应用容器内部的其他资源,这意味着Web应用容器已经在运行,但是当您拉取映像时,这个容器运行的不好,所以不可能使用管理身份从ACR中提取图像。您只能使用用户名和密码从ACR中提取图像。

6tdlim6h

6tdlim6h4#

对于正在执行Azure ML并收到以下错误的用户:

AzureMLCompute job failed.
AggregatedUnauthorizedAccessError: Failed to pull Docker image aaa.azurecr.io/bbb:latest. 
This error may occur because the compute could not authenticate with the Docker registry to pull the image. 
If using ACR please ensure the ACR has Admin user enabled or a Managed Identity with `AcrPull` access to the ACR is assigned to the compute. 
If the ACR Admin user's password was changed recently it may be necessary to synchronize the workspace keys.
Authentication methods attempted: Anonymous

您需要使用托管身份创建计算,以访问Docker映像进行培训[this and this]。

相关问题