繁体   English   中英

从 Azure Container Registry 拉取镜像到 Azure Container Instances 时如何使用 SystemAssigned identity?

[英]How can I use a SystemAssigned identity when pulling an image from Azure Container Registry into Azure Container Instances?

我想在Azure Container Instances中创建一个容器(或容器组),从Azure Container Registry中提取图像 - 但使用SystemAssigned身份。 因此,我想避免使用 ACR 登录凭据、服务主体或UserAssigned身份。

当我运行此脚本时(PowerShell 中的 Azure CLI) ...

$LOC = "westeurope"
$RG = "myresourcegroup"
$ACRNAME = "myacr"

az configure --defaults location=$LOC group=$RG

$acr = az acr show -n $ACRNAME -o json | ConvertFrom-Json -Depth 10

az container create --name app1 --image $($acr.loginServer+"/app1") `
    --assign-identity --role acrpull --scope $acr.id `
    --debug

... ACI 似乎没有意识到它应该已经获得 ACR 授权并显示此提示:

Image registry username:

Azure CLI 版本:2.14.0

这有意义吗? ACR 是否支持 ACI 托管身份?

从 2022 年 1 月起,Azure 容器实例支持托管身份以访问 Azure 容器注册表: https://learn.microsoft.com/en-us/azure/container-instances/using-azure-container-registry-mi

在您的代码中,当您使用在 ACI 创建时创建的托管标识创建 Azure 容器以对 ACR 进行身份验证时。 恐怕你不能这样做,因为有限制

创建容器组时,不能使用托管标识从 Azure 容器注册表中拉取映像。 该身份仅在正在运行的容器中可用。

此解决方案将不使用托管标识,重要的是要注意,我们将需要至少在资源组级别上的所有者角色。

主要思想是使用服务主体通过 acrpull 角色获取访问权限。 请参阅以下 PowerShell 脚本:


$resourceGroup = (az group show --name $resourceGroupName | ConvertFrom-Json )

$containerRegistry = (az acr show --name $containerRegistryName | ConvertFrom-Json)

$servicePrincipal = (az ad sp create-for-rbac `
    --name "${containerRegistryName}.azurecr.io" `
    --scopes $containerRegistry.id `
    --role acrpull `
    | ConvertFrom-Json )

az container create `
    --name $containerInstanceName `
    --resource-group $resourceGroupName `
    --image $containerImage `
    --command-line "tail -f /dev/null" `
    --registry-username $servicePrincipal.appId `
    --registry-password $servicePrincipal.password    


请注意,我们已经创建了一个服务主体,因此我们还需要删除它:


az ad sp delete --id $servicePrincipal.appId

有一个关于如何做到这一点的文档:

从 Azure 容器注册表部署到 Azure 容器实例

@minus_one - 解决方案在我的情况下不起作用。 用于制作容器注册表的操作手册。 它确实需要比此处所述更多的权限... https://github.com/Azure/azure-powershell/issues/3215

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM