我尝试使用Azure AD设置对Azure容器注册表的简单只读访问。
我设法设置了只读访问权限的服务主体,但是在创建AD帐户并在注册表中使用IAM时,我无法使用az acr登录。
我在Azure AD中创建了一个帐户,添加到了注册表IAM,为其分配了读者角色(这与给予服务主体的角色相匹配)但是收到以下错误使用az acr登录
update ITEM_PRICE_HISTORY SET line_price = 4
WHERE item_id IN (SELECT i.item_id FROM ITEM WHERE i.description = 'Spoon');
使用az acr登录的唯一方法是在资源组上分配IAM参与者权限。
有什么东西我不见了吗?
TIA
答案 0 :(得分:1)
这是一个RBAC问题。
您可以尝试使用此docker login
登录ACR吗?
您也可以使用service principal
直接登录。将服务主体的应用程序ID 和密码提供给docker login命令:
docker login myregistry.azurecr.io -u xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p myPassword
使用az acr login
登录时,CLI会使用您执行az login
时创建的令牌来无缝验证您与注册表的会话。
请检查您的服务主体权限,您也可以创建新的服务主体并分配给此组。
az ad sp create-for-rbac -n "http://my-app" --role reader --scopes /subscriptions/11111111-2222-3333-4444-555555555555/resourceGroups/mygroup
可用的角色是:
读者:拉扯 贡献者:拉动和推动 所有者:拉动,推送和为其他用户分配角色
注意:
当您使用az acr login
登录acr时,此命令将使用您执行az login
时创建的令牌来登录它。此令牌不等于您的服务主体(读者)。