默认情况下,只有已经过身份验证的用户才拥有从 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 中功能状态的过程。
- 了解如何使用 基于 Microsoft Entra 的存储库权限。
- 了解如何使用 基于非Microsoft Entra 令牌的存储库权限。
- 了解用于向 Azure 容器注册表进行身份验证的选项。