使容器注册表内容可公开提供
为匿名(未经身份验证)拉取访问设置 Azure 容器注册表是一项可选功能,可访问 Internet 的任何用户可通过此功能从注册表中拉取任何内容。
匿名拉取访问是一项预览版功能,可在标准和高级服务层级中使用。 若要配置匿名拉取访问,请使用 Azure CLI(2.21.0 或更高版本)更新注册表。 若要安装或升级,请参阅安装 Azure CLI。
关于匿名拉取访问
默认情况下,只有已经过身份验证的用户才拥有从 Azure 容器注册表拉取或推送内容的访问权限。 启用匿名(未经身份验证)拉取访问会导致所有注册表内容可供公开读取(拉取)。 在不需要用户身份验证的方案(例如分发公共容器映像)中,可以使用匿名拉取访问。
- 通过更新现有注册表的属性来启用匿名拉取访问。
- 启用匿名拉取访问后,可以随时禁用这种访问。
- 未经身份验证的客户端只能使用数据平面操作。
- 注册表可能会限制高频未经身份验证的请求。
- 如果你之前已向注册表进行身份验证,请确保在尝试执行匿名拉取操作之前清除凭据。
警告
匿名请求访问当前适用于注册表中的所有存储库。 如果你使用存储库范围的令牌管理存储库访问权限,所有用户都可以从启用了匿名拉取的注册表的存储库中拉取内容。 建议在启用匿名请求访问时删除令牌。
配置匿名拉取访问
用户可以通过 Azure CLI 启用、禁用匿名拉取访问以及查询其状态。 以下示例演示如何启用、禁用匿名拉取访问以及查询其状态。
启用匿名拉取访问
使用 az acr update 命令更新注册表并传递 --anonymous-pull-enabled
参数。 默认已在注册表中禁用匿名拉取。
az acr update --name myregistry --anonymous-pull-enabled
重要
如果你之前已使用 Docker 凭据向注册表进行身份验证,请运行 docker logout
,以确保在尝试执行匿名拉取操作之前清除现有凭据。 否则,你可能会看到类似于“已拒绝拉取访问”的错误消息。
请记住,在使用 docker login azure --cloud-name AzureChinaCloud
以及标记要推送到注册表的映像时,始终指定完全限定的注册表名称(全部小写)。 在提供的示例中,完全限定的名称为 myregistry.azurecr.cn
。
如果你之前已使用 Docker 凭据向注册表进行了身份验证,请运行以下命令以清除现有凭据或清除任何先前的身份验证。
docker logout myregistry.azurecr.cn
这将有助于你尝试匿名拉取操作。 如果遇到任何问题,则可能会看到类似“拉取访问被拒绝”的错误消息。
禁用匿名拉取访问
通过将 --anonymous-pull-enabled
设置为 false
来禁用匿名拉取访问。
az acr update --name myregistry --anonymous-pull-enabled false
查询匿名拉取访问的状态
用户可以使用带 --query 参数的 az acr show 命令查询“anonymous-pull”的状态。 下面是一个示例:
az acr show -n <registry_name> --query anonymousPullEnabled
该命令会返回一个布尔值,指示“匿名拉取”是已启用(true)还是已禁用(false)。 这将简化用户验证 ACR 内功能状态的流程。