允许受信任的服务安全访问受网络限制的容器注册表

使用 Azure 容器注册表,可以允许选择受信任的 Azure 服务来访问配置了网络访问规则的注册表。 允许受信任的服务时,受信任的服务实例可以安全地绕过注册表的网络规则并执行拉取或推送映像等操作。 本文介绍如何通过网络受限的 Azure 容器注册表启用和使用受信任的服务。

使用 Azure Cloud Shell 或 Azure CLI 的本地安装来运行本文中的命令示例。 使用 2.18 或更高版本以在本地运行此命令。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI

限制

关于受信任的服务

Azure 容器注册表具有分层的安全模型,支持使用多个网络配置来限制对注册表的访问。 这些配置包括:

  • 使用 Azure 专用链接的专用终结点。 配置后,注册表的专用终结点只供虚拟网络中的资源使用专用 IP 地址进行访问。
  • 注册表防火墙规则,仅允许从特定的公共 IP 地址或地址范围访问注册表的公共终结点。 使用专用终结点时,还可以将防火墙配置为阻止对公共终结点进行的所有访问。

在虚拟网络中部署注册表或者为其配置防火墙规则时,该注册表会拒绝从这些源的外部访问用户或服务。

有多个多租户 Azure 服务通过无法包含在这些注册表网络设置中的网络运行。 因此,这些服务无法执行向注册表拉取或推送映像等操作。 通过将某些服务实例指定为“受信任”,注册表所有者就可以允许选择 Azure 资源,以便安全地绕过注册表的网络设置来执行注册表操作。

受信任服务

如果启用了注册表的“允许受信任的服务”设置(默认设置),则下列服务的实例可以访问受网络限制的容器注册表。 我们会不断添加更多的服务。

在指示的位置,受信任服务的访问需要在服务实例中额外配置托管标识、分配 RBAC 角色和使用注册表进行身份验证。 有关示例步骤,请参阅本文后面的受信任的服务工作流

受信任服务 支持的使用方案 使用 RBAC 角色配置托管标识
Azure 容器实例 使用托管标识从 Azure 容器注册表部署到 Azure 容器实例 是,系统分配的标识或用户分配的标识
Microsoft Defender for Cloud 通过适用于容器注册表的 Microsoft Defender 执行漏洞扫描
机器学习 使用自定义 Docker 容器映像在机器学习工作区中部署训练模型
Azure 容器注册表 向/从受网络限制的 Azure 容器注册表导入映像

注意

目前,无法为应用服务启用 allow trusted services 设置。

允许受信任服务 - CLI

默认情况下,在新的 Azure 容器注册表中启用“允许受信任的服务”设置。 通过运行 az acr update 命令禁用或启用此设置。

若要禁用此设置,请执行以下命令:

az acr update --name myregistry --allow-trusted-services false

若要在现有注册表或已禁用此设置的注册表中启用此设置,请执行以下命令:

az acr update --name myregistry --allow-trusted-services true

允许受信任的服务 - 门户

默认情况下,在新的 Azure 容器注册表中启用“允许受信任的服务”设置。

若要在门户中禁用或重新启用此设置,请执行以下操作:

  1. 在门户中,导航到容器注册表。
  2. 在“设置”下选择“网络”
  3. 在“允许公用网络访问”中,选择“所选网络”或“禁用”
  4. 执行以下步骤中的一个:
    • 若要禁止受信任的服务进行访问,请在“防火墙例外”下取消选中“允许受信任的 Microsoft 服务访问此容器注册表”
    • 若要允许受信任的服务,请在“防火墙例外”下选中“允许受信任的 Microsoft 服务访问此容器注册表”
  5. 选择“保存”。

受信任服务工作流

下面是一个典型的工作流,它使受信任的服务的实例可以访问受网络限制的容器注册表。 如果使用服务实例的托管标识绕过注册表的网络规则,则需要运行此工作流。

  1. 在 Azure 容器注册表中的一个受信任服务的实例中启用托管标识。
  2. Azure 角色的标识分配到注册表。 例如,为已启用 ABAC 的注册表AcrPull(对于非 ABAC 注册表)分配Container Registry Repository Reader
  3. 在受网络限制的注册表中配置此设置,以允许受信任的服务进行访问。
  4. 使用标识的凭据通过受网络限制的注册表进行身份验证。
  5. 从注册表中拉取映像,或执行角色允许的其他操作。

后续步骤