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

配置 Azure AI 服务虚拟网络

Azure AI 服务提供了分层的安全模型。 借助此模型,可保护 Azure AI 服务帐户,使其可供网络的特定子集访问。 配置网络规则后,只有通过指定网络集请求数据的应用程序才能访问该帐户。 你可以使用请求筛选来限制对资源的访问,请求筛选仅允许源自指定 IP 地址、IP 范围或 Azure 虚拟网络的子网列表中的请求。

当网络规则生效时访问 Azure AI 服务资源的应用程序需要授权。 Microsoft Entra ID 凭据或有效的 API 密钥支持授权。

重要

默认情况下,为 Azure AI 服务帐户启用防火墙规则会阻止传入的数据请求。 为了让请求得以通过,需要满足以下任一条件:

  • 请求应来自目标 Azure AI 服务帐户的允许子网列表上的 Azure 虚拟网络中运行的服务。 来自虚拟网络的终结点请求需要设置为 Azure AI 服务帐户的自定义子域
  • 请求应来自允许的 IP 地址列表。

被阻止的请求包括来自其他 Azure 服务、来自 Azure 门户以及来自日志记录和指标服务的请求。

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

方案

要保护 Azure AI 服务资源,应该先配置规则,以便在默认情况下拒绝来自所有网络的流量 (包括互联网流量) 进行访问。 然后,应该配置相应的规则,以便向来自特定虚拟网络的流量授予访问权限。 借助此配置,可为应用程序生成安全网络边界。 你还可以配置规则以向来自所选公共互联网 IP 地址范围的流量授予访问权限,从而支持来自特定互联网或本地客户端的连接。

对于面向 Azure AI 服务的所有网络协议(包括 REST 和 WebSocket),将强制实施网络规则。 若要使用 Azure 测试控制台等工具访问数据,必须配置明确的网络规则。 可以将网络规则应用于现有的 Azure AI 服务资源,也可以在新建 Azure AI 服务资源时应用。 一旦应用网络规则,就会对所有请求强制实施这些规则。

支持的区域和服务产品

虚拟网络在 Azure AI 服务可用的区域中受支持。 Azure AI 服务支持网络规则配置的服务标记。 下面列出的服务包含在 CognitiveServicesManagement 服务标记中。

  • 异常检测器
  • Azure OpenAI
  • 内容审查器
  • 自定义视觉
  • 人脸
  • 语言理解 (LUIS)
  • 个性化体验创建服务
  • 语音服务
  • 语言
  • QnA Maker
  • 翻译器

注意

如果使用的是 Azure OpenAI、LUIS、语音服务或语言服务,则 CognitiveServicesManagement 标记只允许通过 SDK 或 REST API 使用相应服务。 若要从虚拟网络访问和使用 Azure OpenAI Studio、LUIS 门户、Speech Studio 或 Language Studio,需要使用以下标记:

  • AzureActiveDirectory
  • AzureFrontDoor.Frontend
  • AzureResourceManager
  • CognitiveServicesManagement
  • CognitiveServicesFrontEnd
  • Storage(仅限 Speech Studio)

更改默认网络访问规则

默认情况下,Azure AI 服务资源接受来自任何网络上客户端的连接。 若要限制为仅允许选定网络访问,必须先更改默认操作。

警告

更改网络规则可能会使应用程序无法正常连接到 Azure AI 服务。 除非还应用了授予访问权限的特定网络规则,否则将默认网络规则设置为“拒绝”会阻止对数据的所有访问。

在将默认规则更改为拒绝访问之前,务必先使用网络规则向所有许可网络授予访问权限。 如果允许列出本地网络的 IP 地址,请确保添加本地网络中所有可能的传出公共 IP 地址。

管理默认网络访问规则

可以通过 Azure 门户、PowerShell 或 Azure CLI 管理 Azure AI 服务资源的默认网络访问规则。

  1. 转到要保护的 Azure AI 服务资源。

  2. 选择“资源管理”将其展开,然后选择“网络”。

    “网络”页面的屏幕截图,其中显示已选择“所选网络和专用终结点”。

  3. 若要默认拒绝访问,请在“防火墙和虚拟网络”下,选择“所选网络和专用终结点”。

    只有“所选网络”设置,而没有配置的“虚拟网络”或“地址范围”,则所有访问都将被有效拒绝。 当所有访问都被拒绝时,试图使用 Azure AI 服务资源的请求将被禁止。 Azure 门户、Azure PowerShell 或 Azure CLI 仍可用于配置 Azure AI 服务资源。

  4. 若要允许来自所有网络的流量,请选择“所有网络”。

    “网络”页面的屏幕截图,其中显示已选择“所有网络”。

  5. 单击“保存”应用所做的更改。

允许从虚拟网络进行访问

可将 Azure AI 服务资源配置为仅允许从特定子网进行访问。 允许的子网可能属于同一订阅中的虚拟网络,也可能属于不同订阅中的虚拟网络。 另一个订阅可以属于不同的 Microsoft Entra 租户。 当子网属于其他订阅时,还需要为该订阅注册 Microsoft.CognitiveServices 资源提供程序。

在虚拟网络中为 Azure AI 服务启用服务终结点。 服务终结点通过最优路径将流量从虚拟网络路由到 Azure AI 服务。 有关详细信息,请参阅虚拟网络服务终结点

子网和虚拟网络的标识也随每个请求进行传输。 管理员随后可以配置 Azure AI 服务资源的网络规则,以允许来自虚拟网络中的特定子网的请求。 通过这些网络规则获得访问权限的客户端必须继续满足 Azure AI 服务资源的授权要求,才能访问数据。

每个 Azure AI 服务资源最多支持 100 条虚拟网络规则,这些规则可与 IP 网络规则组合使用。 有关详细信息,请参阅本文后面的从 Internet IP 范围授予访问权限

设置所需的权限

要向 Azure AI 服务资源应用虚拟网络规则,用户必须对要添加的子网拥有适当的权限。 所需的权限是默认的“参与者”角色或“认知服务参与者”角色。 所需权限还可以添加到自定义角色定义中。

Azure AI 服务资源和获得访问权限的虚拟网络可以位于不同的订阅中,包括属于不同 Microsoft Entra 租户的订阅。

注意

当前仅通过 PowerShell、Azure CLI 和 REST API 支持配置向属于其他 Microsoft Entra 租户的虚拟网络中的子网授予访问权限的规则。 可以在 Azure 门户中查看这些规则,但无法对其进行配置。

配置虚拟网络规则

可以通过 Azure 门户、PowerShell 或 Azure CLI 管理 Azure AI 服务资源的虚拟网络规则。

要通过现有网络规则向虚拟网络授予访问权限,请执行以下操作:

  1. 转到要保护的 Azure AI 服务资源。

  2. 选择“资源管理”将其展开,然后选择“网络”。

  3. 确认选择了“所选网络和专用终结点”。

  4. 在“允许从其访问”下,选择“添加现有虚拟网络”。

    “网络”页面的屏幕截图,其中突出显示已选择“所选网络和专用终结点”和“添加现有虚拟网络”。

  5. 选择“虚拟网络”和“子网”选项,然后选择“启用” 。

    “添加网络”对话框的屏幕截图,可通过该对话框输入虚拟网络和子网。

    注意

    如果之前没有为所选的虚拟网络和子网配置 Azure AI 服务的服务终结点,可以在执行此操作时进行配置。

    目前,只有属于同一 Microsoft Entra 租户的虚拟网络才能在创建规则期间进行选择。 若要向属于其他租户的虚拟网络中的子网授予访问权限,请使用 PowerShell、Azure CLI 或 REST API。

  6. 单击“保存”应用所做的更改。

若要创建新的虚拟网络并向其授予访问权限,请执行以下操作:

  1. 在与上一过程相同的页面上,选择“添加新的虚拟网络”。

    “网络”页面的屏幕截图,其中突出显示已选择“所选网络和专用终结点”和“添加新的虚拟网络”。

  2. 提供创建新的虚拟网络所需的信息,然后选择“创建”。

    显示“创建虚拟网络”对话框的屏幕截图。

  3. 单击“保存”应用所做的更改。

删除虚拟网络或子网规则:

  1. 在与上一过程相同的页面上,选择“... (更多选项)”以打开虚拟网络或子网的上下文菜单,然后选择“删除”。

    显示用于删除虚拟网络的选项的屏幕截图。

  2. 单击“保存”应用所做的更改。

重要

请务必将默认规则设置为“拒绝”,否则网络规则不会有任何效果。

允许从 Internet IP 范围进行访问

可以将 Azure AI 服务资源配置为允许从特定的公共 Internet IP 地址范围进行访问。 此配置允许访问特定的服务和本地网络,有效地阻止了常规网络流量。

可以将 CIDR 格式 (RFC 4632) 用作格式192.168.0.0/16或作为单个 IP 地址 (如 192.168.0.1) 来指定允许的 IP 地址范围。

提示

不支持使用 /31/32 前缀大小的小型地址范围。 请使用单独的 IP 地址规则配置这些范围。

IP 网络规则仅适用于公共 Internet IP 地址。 IP 规则不允许使用为专用网络保留的 IP 地址范围。 专用网络包括以 10.*172.16.* - 172.31.*192.168.* 开头的地址。 有关详细信息,请参阅专用地址空间 (RFC 1918)

目前仅支持 IPv4 地址。 每个 Azure AI 服务资源最多支持 100 条 IP 网络规则,这些规则可与虚拟网络规则组合使用。

配置来自本地网络的访问

要使用 IP 网络规则授予从本地网络访问 Azure AI 服务资源的权限,必须确定网络所用的面向 Internet 的 IP 地址。 若要获得帮助,请联系网络管理员。

如果在本地使用 Azure ExpressRoute 进行公共对等互连或 Microsoft 对等互连,需要确定 NAT IP 地址。 有关详细信息,请参阅什么是 Azure ExpressRoute

在进行公共对等互连时,每条 ExpressRoute 线路默认使用两个 NAT IP 地址。 当流量进入 Azure 网络主干网时,每个地址都适用于 Microsoft Azure 服务流量。 在进行 Microsoft 对等互连时,所用 NAT IP 地址由客户或服务提供商提供。 若要允许访问服务资源,必须在资源 IP 防火墙设置中允许这些公共 IP 地址。

若要查找公共对等互连 ExpressRoute 线路 IP 地址,请通过 Azure 门户开具 ExpressRoute 支持票证。 有关详细信息,请参阅 Azure 公共对等互连的 NAT 要求

管理 IP 网络规则

可以通过 Azure 门户、PowerShell 或 Azure CLI 管理 Azure AI 服务资源的 IP 网络规则。

  1. 转到要保护的 Azure AI 服务资源。

  2. 选择“资源管理”将其展开,然后选择“网络”。

  3. 确认选择了“所选网络和专用终结点”。

  4. 在“防火墙和虚拟网络”下,找到“地址范围”选项。 若要向 Internet IP 范围授予访问权限,请输入 IP 地址或地址范围 (采用 CIDR 格式)。 只接受有效的公共 IP (非保留) 地址。

    “网络”页面的屏幕截图,其中突出显示已选择“所选网络和专用终结点”和“地址范围”。

    若要删除某个 IP 网络规则,请选择该地址范围旁边的垃圾桶 图标。

  5. 单击“保存”应用所做的更改。

重要

请务必将默认规则设置为“拒绝”,否则网络规则不会有任何效果。

使用专用终结点

可以为 Azure AI 服务资源使用专用终结点,从而允许虚拟网络上的客户端通过 Azure 专用链接安全地访问数据。 专用终结点为你的 Azure AI 服务资源使用虚拟网络地址空间中的 IP 地址。 虚拟网络上客户端与资源之间的网络流量将穿过虚拟网络以及 Microsoft 主干网络上的专用链接,因此不会从公共 Internet 公开。

Azure AI 服务资源的专用终结点允许:

  • 通过将防火墙配置为阻止 Azure AI 服务的公共终结点上的所有连接,保护 Azure AI 服务资源。
  • 阻止数据从虚拟网络泄露,从而提高虚拟网络的安全性。
  • 使用 Azure VPN 网关ExpressRoutes 通过专用对等互连从连接到虚拟网络的本地网络安全地连接到 Azure AI 服务资源。

了解专用终结点

专用终结点是虚拟网络中的 Azure 资源的特殊网络接口。 为 Azure AI 服务资源创建专用终结点可在虚拟网络中的客户端和资源之间提供安全连接。 从虚拟网络的 IP 地址范围为专用终结点分配 IP 地址。 专用终结点与 Azure AI 服务之间的连接使用安全的专用链接。

虚拟网络中的应用程序可以通过专用终结点无缝连接到服务。 连接使用与其他连接相同的连接字符串和授权机制。 语音服务例外,它需要单独的终结点。 有关详细信息,请参阅本文中的语音服务的专用终结点。 专用终结点可以与 Azure AI 服务资源支持的所有协议(包括 REST)一起使用。

可以在使用服务终结点的子网中创建专用终结点。 子网中的客户端可以使用专用终结点连接到某个 Azure AI 服务资源,同时使用服务终结点访问其他存储帐户。 有关详细信息,请参阅虚拟网络服务终结点

在虚拟网络中创建用于 Azure AI 服务资源的专用终结点时,Azure 会将申请批准的请求发送给 Azure AI 服务资源所有者。 如果请求创建专用终结点的用户也是资源的所有者,则此许可请求会自动获得批准。

Azure AI 服务资源所有者可以通过 Azure 门户中 Azure AI 服务资源的“专用终结点连接”选项卡来管理许可请求和专用终结点。

指定专用终结点

创建专用终结点时,必须指定它连接到的 Azure AI 服务资源。 有关创建专用终结点的详细信息,请参阅:

连接到专用终结点

注意

Azure OpenAI 服务使用其他专用 DNS 区域和公共 DNS 区域转发器,而不使用 Azure AI 服务。 有关正确的区域和转发器名称,请参阅 Azure 服务 DNS 区域配置

虚拟网络上使用专用终结点的客户端使用的连接字符串为客户端连接到公共终结点时 Azure AI 服务资源的连接字符串。 语音服务例外,它需要单独的终结点。 有关详细信息,请参阅本文中的将专用终结点与语音服务结合使用。 DNS 解析会自动通过专用链接将连接从虚拟网络路由到 Azure AI 服务资源。

默认情况下,Azure 会创建一个附加到虚拟网络的专用 DNS 区域,并带有专用终结点的必要更新。 如果使用自己的 DNS 服务器,则可能需要对 DNS 配置进行更多更改。 有关专用终结点可能需要的更新,请参阅本文中的为专用终结点应用 DNS 更改

将专用终结点与语音服务结合使用

请参阅通过专用终结点使用语音服务

应用专用终结点的 DNS 更改

创建专用终结点时,Azure AI 服务资源的 DNS CNAME 资源记录将更新为子域中具有前缀“privatelink”的别名。 默认情况下,Azure 还会创建一个与 privatelink 子域对应的专用 DNS 区域,其中包含专用终结点的 DNS A 资源记录。 有关详细信息,请参阅什么是 Azure 专用 DNS

使用专用终结点从虚拟网络外部解析终结点 URL 时,它会解析为 Azure AI 服务资源的公共终结点。 从托管专用终结点的虚拟网络进行解析时,终结点 URL 解析为专用终结点的 IP 地址。

对于虚拟网络中托管专用终结点的客户端和虚拟网络外部的客户端,此方法允许使用相同的连接字符串访问 Azure AI 服务资源。

如果在网络上使用自定义 DNS 服务器,客户端必须能够将 Azure AI 服务资源终结点的完全限定的域名 (FQDN) 解析为专用终结点 IP 地址。 配置 DNS 服务器以将专用链接子域委托到虚拟网络的专用 DNS 区域。

提示

使用自定义或本地 DNS 服务器时,应将 DNS 服务器配置为将 privatelink 子域中的 Azure AI 服务资源名称解析为专用终结点 IP 地址。 将 privatelink 子域委托给虚拟网络的专用 DNS 区域。 或者,在 DNS 服务器上配置 DNS 区域并添加 DNS A 记录。

有关配置自己的 DNS 服务器以支持专用终结点的详细信息,请参阅以下资源:

向受信任的 Azure 服务授予 Azure OpenAI 访问权限

可向一部分受信任的 Azure 服务授予对 Azure OpenAI 的访问权限,同时继续对其他应用使用网络规则。 然后,这些受信任的服务将使用托管标识向 Azure OpenAI 服务进行身份验证。 下表列出了当这些服务的托管标识具有适当的角色分配时可访问 Azure OpenAI 的服务。

服务 资源提供程序名称
Azure AI 服务 Microsoft.CognitiveServices
Azure 机器学习 Microsoft.MachineLearningServices
Azure AI 搜索 Microsoft.Search

可使用 REST API 创建网络规则例外,向受信任的 Azure 服务授予网络访问权限:


accessToken=$(az account get-access-token --resource https://management.azure.com --query "accessToken" --output tsv)
rid="/subscriptions/<your subscription id>/resourceGroups/<your resource group>/providers/Microsoft.CognitiveServices/accounts/<your Azure AI resource name>"

curl -i -X PATCH https://management.azure.com$rid?api-version=2023-10-01-preview \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $accessToken" \
-d \
'
{
    "properties":
    {
        "networkAcls": {
            "bypass": "AzureServices"
        }
    }
}
'

注意

受信任的服务功能只能通过使用上述命令行来使用,无法使用 Azure 门户来执行。

若要撤销例外,请将 networkAcls.bypass 设置为 None

若要验证是否已从 Azure 门户启用受信任的服务,请执行以下操作:

  1. 使用 Azure OpenAI 资源概述页面中的 JSON 视图

    显示 Azure 门户中资源的 JSON 视图选项的屏幕截图。

  2. 选择“API 版本”下的最新 API 版本。 只支持最新的 API 版本 2023-10-01-preview

    显示已启用受信任的服务的屏幕截图。

定价

有关定价详细信息,请参阅 Azure 专用链接定价

后续步骤