gpt4 book ai didi

azure - 尝试从 Azure 注册表中删除图像标签时是否急于修复 'authentication required'?

转载 作者:行者123 更新时间:2023-12-03 04:09:23 24 4
gpt4 key购买 nike

好的,我需要使用 Azure CLI 从 Azure 注册表 (ACR) 中删除具有特定标记的镜像,并使用服务主体进行身份验证。

我已经尝试使用 bash 脚本首先获取服务主体,然后使用 Azure CLI 登录到 azure,(我可以看到我已成功登录的响应,并且具有正确的订阅 ID),然后当我尝试执行时删除命令,我被问到

This operation will delete the manifest 'sha256:531d60fe70137820c7f9e589' and all the following images: 'sampleImage:1.0.0'.
Are you sure you want to continue? (y/n): y

当我点击 y 时,我得到:错误:需要身份验证。相关ID:****

这是代码:

CLIENT_ID = ****
CLIENT_SECRET = ****
TENANT_ID = ****

az login --service-principal -u $CLIENT_ID -p $CLIENT_SECRET -t $TENANT_ID

REGISTRY_NAME="acrregistryname"

az acr login --name $REGISTRY_NAME

# Delete image from ACR
az acr repository delete --name $REGISTRY_NAME --image sampleImage:1.0.0

我在这里缺少什么?

预期:删除图像成功

实际:需要身份验证

最佳答案

对于你的需求,其实有三个条件你需要注意。

  1. 删除存储库。对于此需求,您只需要具有 ACR 的 AcrDelete 角色即可。

  2. 删除标签的图像。对于此需求,您需要至少拥有 ACR 的两个权限:访问资源管理器(类似于读取角色)和AcrDelete。因此,权限最少的合适角色是贡献者角色,权限较高的角色是所有者。但安全角色是贡献者,也是推荐的。

  3. 通过 list 摘要删除镜像。对于这个需求,和2的情况是一样的。

因此,最后,如果您想删除整个存储库,则需要 ACR 的 AcrDelete 角色。如果您想删除存储库的某些数据,您需要ACR的Contributor角色。

当角色OK时。所有步骤如下:

CLIENT_ID = ****
CLIENT_SECRET = ****
TENANT_ID = ****
REGISTRY_NAME="acrregistryname"

az login --service-principal -u $CLIENT_ID -p $CLIENT_SECRET --tenant $TENANT_ID
az acr login -n $REGISTRY_NAME

您可以根据需要选择以下步骤。

# delete the whole repository
az acr repository delete -n $REGISTRY_NAME --repository repository_name
# delete the image by the tag
az acr repository delete -n $REGISTRY_NAME --image imageName:tag
# delete the image by manifest digest
az acr repository delete -n $REGISTRY_NAME --image imageName@xxxxxxxx

关于azure - 尝试从 Azure 注册表中删除图像标签时是否急于修复 'authentication required'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57658856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com