你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 容器注册表使用专用数据终结点缓解数据外泄

Azure 容器注册表引入了专用数据终结点。 此功能支持将具有严格限制范围的客户端防火墙规则用于特定注册表,从而最大程度地减少数据外泄问题。

专用数据终结点功能在高级服务层中可用。 有关定价的信息,请参阅容器注册表定价

从注册表拉取内容涉及两个终结点:

注册表终结点(通常称为登录 URL),用于进行身份验证和发现内容。 docker pull contoso.azurecr.io/hello-world 等命令发出 REST 请求,该请求对表示所请求的项目的层进行身份验证并进行协商。 数据终结点提供表示内容层的 blob。

展示终结点的示意图。

注册表托管存储帐户

Azure 容器注册表是一项多租户服务。 注册表服务管理数据终结点存储帐户。 托管存储帐户的优点包括负载均衡、连续内容拆分、用于实现更高并发的内容交付的多个副本以及多区域的异地复制支持。

Azure 专用链接虚拟网络支持为 Azure 虚拟网络中的托管注册表服务启用专用终结点。 在这种情况下,可以使用专用 IP 从虚拟网络内部访问注册表和数据终结点。

可安全地从虚拟网络内部访问托管注册表服务和存储帐户后,会立即删除公共终结点。

展示虚拟网络支持的示意图。

遗憾的是,虚拟网络连接并非始终可用。

重要说明

Azure 专用链接是用于控制客户端与注册表之间的网络访问的最安全方法,因为网络流量仅限于使用专用 IP 发送到 Azure 虚拟网络。 专用链接不可用时,专用数据终结点可以提供关于从每个客户端可访问哪些资源的安全知识。

客户端防火墙规则和数据外泄风险

客户端防火墙规则限制对特定资源的访问。 从本地主机、IoT 设备和自定义生成代理连接到注册表时,防火墙规则适用。 当专用链接支持不可用时,规则也适用。

展示客户端防火墙规则的示意图。

当客户锁定其客户端防火墙配置时,他们意识到必须为所有存储帐户创建具有通配符的规则,这引发了对数据外泄的担忧。 恶意行动者可能会部署能够写入他们的存储帐户的代码。

展示客户端数据外泄风险的示意图。

因此,为了解决数据外泄问题,Azure 容器注册表提供了专用数据终结点。

专用数据终结点

专用数据终结点有助于从 Azure 容器注册表服务中检索层,具有表示注册表域的完全限定的域名。

由于任何注册表都可能进行异地复制,因此使用区域模式:[registry].[region].data.azurecr.io

对于 Contoso 示例,添加了多个区域数据终结点,以支持具有附近副本的本地区域。

使用专用数据终结点,可阻止恶意行动者写入其他存储帐户。

示意图展示了具有专用数据终结点的 contoso 示例。

启用专用数据终结点

注意

切换到专用数据终结点会影响已配置对现有 *.blob.core.windows.net 终结点的防火墙访问的客户端,进而导致拉取失败。 为了确保客户端有一致的访问行为,请将新的数据终结点添加到客户端防火墙规则。 完成后,现有注册表可以通过 az cli 启用专用数据终结点。 在映像拉取期间,如果启用了专用数据终结点,则 ACR 在每次需要提取映像层时,都会向客户端提供临时下载链接。 此链接指向专用数据终结点,有效期为 20 分钟,提供用于下载层的安全短期 URL。 20 分钟后,链接过期,如果客户端需要在拉取映像时下载另一层,只需请求一个新的链接。

若要使用本文中所述的 Azure CLI 步骤,需要安装 Azure CLI 版本 2.4.0 或更高版本。 如果需要进行安装或升级,请参阅安装 Azure CLI 或在 Azure Cloud Shell 中运行。

az acr update --name contoso --data-endpoint-enabled
  • 运行 az acr show 命令以查看数据终结点,包括异地复制注册表的区域终结点。
az acr show-endpoints --name contoso

示例输出:

{
  "loginServer": "contoso.azurecr.io",
  "dataEndpoints": [
    {
      "region": "eastus",
      "endpoint": "contoso.eastus.data.azurecr.io",
    },
    {
     "region": "westus",
      "endpoint": "contoso.westus.data.azurecr.io",
    }
  ]
}
     

后续步骤