Azure容器注册表(ACR)私有端点访问403禁止问题排查
问题排查:Azure ACR私有端点下Docker登录403 Forbidden
可能的原因及解决方案
1. 私有端点网络ACL限制
ACR的私有端点可能配置了访问控制列表,仅允许特定子网访问:
- 检查ACR私有端点设置,确认VNet A的
vm-agents子网已被加入允许访问列表 - 若私有端点设为"允许特定虚拟网络",需确保VNet A的子网在允许范围内
2. VNet对等连接流量配置异常
VNet对等连接若被手动修改过转发规则,可能导致VNet A到VNet B的流量被阻断:
- 检查VNet A到VNet B的对等连接,确认"允许转发流量"和"允许网关传输"已启用
- 同步检查VNet B到VNet A的对等配置,确保反向流量无限制
3. ACR防火墙规则拦截
即使启用私有端点,ACR的防火墙规则仍可能拒绝VNet A的流量:
- 进入ACR"网络"设置,若勾选"仅允许私有端点访问",需确认关联的VNet B及对等的VNet A被纳入允许范围
- 排查是否存在自定义防火墙规则,排除了VNet A的子网IP段
4. Docker客户端证书验证失败
通过私有端点访问ACR时,Docker客户端可能无法验证SSL证书:
- 在管道代理上执行
openssl s_client -connect <my-own-acr>.azurecr.io:443,检查证书是否正常返回 - 若证书验证失败,需确保代理已安装Azure根证书,测试环境可临时配置Docker跳过证书验证
5. ACR令牌权限或绑定规则问题
虽公网访问正常,但需确认令牌权限适配私有端点场景:
- 检查ACR令牌权限,确保已分配
acrpull(登录至少需要该权限)或其他必要权限 - 确认令牌未被设置为仅允许公网访问的绑定规则
6. 子网路由表异常
VNet A的vm-agents子网若有自定义路由表,可能将ACR流量导向公网而非对等VNet:
- 检查
vm-agents子网关联的路由表,确认无优先级高于VNet对等的路由条目(比如默认路由指向公网) - 确保到ACR私有端点IP段的流量被路由至VNet对等连接
内容的提问来源于stack exchange,提问作者Lucas Scheepers
相关产品推荐
相关产品推荐

