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

无法移除ACR镜像隔离标记:PATCH请求返回未授权问题

解决ACR镜像隔离标记移除的未授权问题

以下是排查和解决你遇到的未授权问题的几个关键点:

  • 修复Shell变量引用问题
    你的curl命令中,authorization头里的$acr_access_token被包裹在单引号中,Shell不会对单引号内的变量进行替换,导致实际发送的是字符串$acr_access_token而非真正的访问令牌。把单引号改成双引号即可:

    curl --header "authorization: Bearer $acr_access_token" 
         --header 'Host: cr.azurecr.io' 
         --header 'Content-Type: application/json'
         --request PATCH --url https://cr.azurecr.io/acr/v1/msc-todo/_manifests/sha256:651d76853edb22c702bb30aeb099a411015e92a347182fe6028f81efc8ef47f4 
         --data '{"quarantineState": "Passed",
                  "quarantineDetails": "{\"state\":\"scan passed\",\"link\":\"http://test.io/test\"}" }'
    
  • 添加Content-Type请求头
    发送JSON格式的请求体时,必须指定Content-Type: application/json头,否则ACR服务器可能无法正确解析请求数据,进而导致权限校验失败或请求被拒绝。

  • 验证访问令牌的权限范围
    确认az acr login获取的令牌包含acr:quarantine_write权限。可以通过解码JWT令牌检查scp字段是否包含该权限。如果当前登录身份没有对应权限,需要确保使用的服务主体已被正确授予AcrQuarantineWriter角色,并且在执行az acr login时指定该服务主体:

    az acr login --name cr --service-principal --username <service-principal-id> --password <service-principal-secret> --expose-token --output tsv --query accessToken
    
  • 检查镜像路径的正确性
    确认请求URL中的仓库名称msc-todo和镜像摘要sha256:xxx完全正确,路径错误也可能被服务器返回未授权(部分场景下服务器会用通用错误码隐藏实际问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:31:30