401未经授权签署Azure容器注册表的映像

时间:2019-09-25 07:37:54

标签: azure docker azure-container-registry

我正在尝试将签名的图像推送到Azure容器注册表。我收到错误消息“无法签名:您无权执行此操作:服务器返回401”,即使所有RBAC权限都已到位并且我使用正确的凭据登录。

我已经在个人(开发人员)Azure帐户中创建了一个ACR。我遵循了this article中解释的说明。 我已在Container Registry资源中启用了Content Trust。

我已在Azure AD中注册为用户,并且为容器注册表资源分配了以下角色: -所有者 -AcrImageSigner -AcrPush

我已使用az login登录到Azure,然后使用ac acr login --resource-group <MY_RESOURCE_GROUP> --name <ACR_NAME>登录了我的容器注册表

*编辑-或者,我尝试在ACR上启用管理员帐户,并将docker login与管理员帐户凭据一起使用,

我能够通过Azure CLI查看分配给自己的角色,并且已经检查过我是否使用相同的凭据登录。我也尝试启用和禁用管理员访问密钥

这些是我用来从Windows计算机将签名图像推送到ACR的命令: set DOCKER_CONTENT_TRUST=1

docker push <ACR_SERVER>/<IMAGE_NAME>:<TAG>

图像已推送到存储库,但未签名。这些是日志:

The push refers to repository [MY_ACR_NAME.azurecr.io/appname]
4a85926cec01: Layer already exists
349c7f00d08e: Layer already exists
370f72f4d447: Layer already exists
8dc6654a61c6: Layer already exists
8fa655db5360: Layer already exists
latest: digest: sha256:<A_VERY_LONG_SHA> size: 1375
Signing and pushing trust metadata
Enter passphrase for root key with ID 0c6a1f8:
Enter passphrase for new repository key with ID 96c45d3:
Repeat passphrase for new repository key with ID 96c45d3:
Finished initializing "MY_ACR_NAME.azurecr.io/appname"
failed to sign MY_ACR_NAME.azurecr.io/appname: you are not authorized to perform this operation: server returned 401.

由于我已通过身份验证并且具有适当的角色,因此我希望能够对图像进行签名。我希望有人能帮助我弄清楚我的缺失!

  • 编辑2:我只是尝试从docker提取hello-world映像并对其进行签名,以消除我无法“签署第三方映像”的可能性。结果相同。

1 个答案:

答案 0 :(得分:0)

根据this solution

  

根本原因是ACR无法识别权限列表   如果当前登录用户具有经典订阅管理员   角色,例如服务管理员和共同管理员。

如果用户具有服务管理员凭据,那么使用用户主体(Azure AD帐户)签名容器此时将失败,基本上是在尝试将容器签名到自己的私有存储库时。使用服务主体凭据签名和拉出已签名的容器不是问题。

相关问题