使容器注册表内容可公开提供

为匿名(未经身份验证)拉取访问设置 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 内功能状态的流程。

后续步骤