未验证的匿名拉取权限

默认情况下,只有已经过身份验证的用户才拥有从 Azure 容器注册表拉取或推送内容的访问权限。 启用匿名(未经身份验证)拉取访问会导致所有注册表内容可供公开读取(拉取)。 在不需要用户身份验证的方案(例如分发公共容器映像)中,使用匿名拉取访问。

匿名拉取访问是一项预览版功能,可在标准和高级服务层级中使用。 若要配置匿名拉取访问,请使用 Azure CLI(2.21.0 或更高版本)更新注册表。 有关安装或升级的信息,请参阅安装 Azure CLI

  • 通过更新现有注册表的属性来启用匿名拉取访问。
  • 启用匿名拉取访问后,可以随时禁用这种访问。
  • 未经身份验证的客户端只能使用数据平面操作。
  • 注册表可能会限制高频未经身份验证的请求。
  • 如果你之前已向注册表进行身份验证,请确保在尝试执行匿名拉取操作之前清除凭据。

警告

匿名请求访问当前适用于注册表中的所有存储库。 如果您使用非Microsoft Entra令牌机制的存储库权限基于Microsoft Entra的存储库权限来管理存储库访问,那么在启用未验证的匿名拉取的注册表中,所有用户仍可以从这些存储库中进行拉取。 启用未经身份验证的匿名拉取访问时,请注意这一点。

配置匿名拉取访问

用户可以通过 Azure CLI 启用、禁用匿名拉取访问以及查询其状态。 以下示例演示如何启用、禁用匿名拉取访问以及查询其状态。

启用匿名拉取访问

使用 az acr update 命令更新注册表并传递 --anonymous-pull-enabled 参数。 默认已在注册表中禁用匿名拉取。

az acr update --name myregistry --anonymous-pull-enabled

重要

如果你之前已使用 Docker 凭据向注册表进行身份验证,请运行 docker logout,以确保在尝试执行匿名拉取操作之前清除现有凭据。 否则,你可能会看到类似于“已拒绝拉取访问”的错误消息。 请记住,在使用 docker login 以及标记要推送到注册表的映像时,始终指定完全限定的注册表名称(全部小写)。 在提供的示例中,完全限定的名称为 myregistry.azurecr.cn

如果之前使用 Docker 凭据向注册表进行了身份验证,请运行以下命令以清除现有凭据或任何先前的身份验证。

   docker logout myregistry.azurecr.cn

此步骤有助于尝试匿名拉取操作。 如果遇到任何问题,则可能会看到类似“拉取访问被拒绝”的错误消息。

禁用匿名拉取访问

通过将 --anonymous-pull-enabled 设置为 false 来禁用匿名拉取访问。

az acr update --name myregistry --anonymous-pull-enabled false

查询匿名拉取访问的状态

可以使用带 参数的 --query查询“anonymous-pull”的状态。 下面是一个示例:

az acr show -n <registry_name> --query anonymousPullEnabled

该命令会返回一个布尔值,指示“匿名拉取”是已启用(true)还是已禁用(false)。 此命令简化了验证 ACR 中功能状态的过程。

后续步骤