You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Rest API重新生成ACR访问密钥时遇未授权问题求助

解决ACR Rest API重新生成访问密钥的未授权问题

问题核心

调用ACR Rest API重新生成访问密钥时返回Forbidden错误,明确提示客户端缺少Microsoft.ContainerRegistry/registries/regenerateCredential/action权限,或请求的资源范围无效。错误详情:

Microsoft.Azure.Deployment.Express.Server.Common.Management.AzureResourceManagementException: Failed to regenerate Password: 'password'. HttpStatusCode 'Forbidden', Reason phrase:'Forbidden' and Content:'{"error":{"code":"AuthorizationFailed","message":"The client 'xxxxxxxxxxxxxxx' with object id 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx' does not have authorization to perform action 'Microsoft.ContainerRegistry/registries/regenerateCredential/action' over scope '/subscriptions/xxxxxxxxxxxxx/resourceGroups/xxxxxxxxxxxxxxxxx/providers/Microsoft.ContainerRegistry/registries/xxxxxxxxxxxx' or the scope is invalid. If access was recently granted, please refresh your credentials."}}'

解决步骤

  • 配置对应RBAC权限
    针对对象ID为xxxxxxxxxxxxxxxxxxxxxxxxxxxxx的客户端,在目标ACR资源范围内分配包含Microsoft.ContainerRegistry/registries/regenerateCredential/action权限的角色:

    • 推荐使用内置角色:ACR管理员(包含ACR全管理权限);若需最小权限,可创建自定义角色仅添加该动作权限
    • 确保权限分配的范围严格匹配错误信息中的ACR资源路径,避免选错订阅、资源组或注册表名称
  • 确认权限生效

    • 刚分配的RBAC权限可能需要5-10分钟同步,等待后重新尝试;或刷新客户端的身份凭据(如重新获取OAuth2 token)
    • 可通过Azure CLI验证权限分配:
      az role assignment list --assignee <客户端对象ID> --scope <ACR资源范围> --query "[].roleDefinitionName"
      
      检查输出是否包含有权限的角色名称
  • 验证资源范围有效性
    核对请求中使用的scope路径:

    • 确认订阅ID、资源组名称、ACR注册表名称与Azure门户中实际资源完全一致,避免拼写错误
    • 确保路径格式正确,层级为/subscriptions/{订阅ID}/resourceGroups/{资源组名}/providers/Microsoft.ContainerRegistry/registries/{注册表名}
  • 排查特殊身份问题

    • 若使用服务主体,检查服务主体是否处于启用状态,凭据未过期
    • 若使用托管身份,确认身份已正确关联到调用方资源,且身份本身已被分配对应ACR权限

内容的提问来源于stack exchange,提问作者user23556637

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 21:33:21