【发布时间】:2019-09-25 07:37:54
【问题描述】:
我正在尝试将签名的图像推送到 Azure 容器注册表。尽管所有 RBAC 权限都已到位并且我使用正确的凭据登录,但我收到错误“无法签名:您无权执行此操作:服务器返回 401”。
我在个人(开发人员)的 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 映像并对其进行签名,以消除我无法“签署第三方映像”的可能性。结果相同。
【问题讨论】:
标签: azure docker azure-container-registry