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

在专用虚拟网络 - 高级 v2 层中注入 Azure API 管理实例

适用于:高级 v2

本文将向你介绍在虚拟网络中注入 Azure API 管理高级 v2(预览版)实例的要求。

注意

要在虚拟网络中注入经典开发人员或高级层实例,要求和配置是不同的。 了解详细信息

在虚拟网络中注入 API 管理高级 v2 实例时:

  • API 管理网关终结点可通过专用 IP 地址的虚拟网络进行访问。
  • API 管理可以向网络中处于隔离状态的 API 后端发出出站请求。

建议将此配置用于要将网络流量隔离到 API 管理实例和后端 API 的方案。

在虚拟网络中注入 API 管理实例以隔离入站和出站流量的关系图。

如果要在标准 v2 或高级 v2 层中启用对 API 管理实例的公共入站访问,但限制对网络隔离后端的出站访问,请参阅与虚拟网络集成以实现出站连接

重要

  • 本文中所述的虚拟网络注入仅适用于高级 v2 层中的 API 管理实例(预览版)。 有关不同层中的网络选项,请参阅将虚拟网络与 Azure API 管理配合使用
  • 目前只能在创建实例时将高级 v2 实例注入虚拟网络。 无法将现有的高级 v2 实例注入虚拟网络。 但可以在创建实例后更新子网设置以进行注入。
  • 目前,对于高级 v2 实例,无法在虚拟网络注入和虚拟网络集成之间切换。

先决条件

  • 高级 v2 定价层中的 Azure API 管理实例。
  • 托管客户端应用和 API 管理后端 API 的虚拟网络。 有关用于 API 管理实例的虚拟网络和子网的要求和建议,请参阅以下部分。

网络位置

  • 虚拟网络必须与 API 管理实例位于同一区域和 Azure 订阅中。

子网要求

  • API 管理实例的子网不能与其他 Azure 资源共享。

子网大小

  • 最小值:/27(32 个地址)
  • 建议:/24(256 个地址)- 以适应 API 管理实例的缩放

网络安全组

网络安全组必须与该子网关联。

子网委托

需要将该子网委派给 Microsoft.Web/hostingEnvironments 服务。

屏幕截图显示子网在门户中委托给 Microsoft.Web/hostingEnvironments。

注意

可能需要在订阅中注册 Microsoft.Web/hostingEnvironments 资源提供程序,以便可以将子网委托给服务。

要详细了解如何配置子网委派,请参阅添加或删除子网委派

addressPrefix 属性

高级 v2 层中的虚拟网络注入要求将 addressPrefix 子网属性设置为有效的 CIDR 块。

如果使用 Azure 门户配置子网,子网将设置一个由地址前缀列表组成的 addressPrefixes(复数)属性。 但是,API 管理需要单个 CIDR 块作为 addressPrefix 属性的值。

要创建或更新具有 addressPrefix 的子网,请使用 Azure PowerShell、Azure 资源管理器模板或 REST API 等工具。 例如,使用 Set-AzVirtualNetworkSubnetConfig Azure PowerShell cmdlet 更新子网:

# Set values for the variables that are appropriate for your environment.

$resourceGroupName = "MyResourceGroup"
$virtualNetworkName = "MyVirtualNetwork"
$subnetName = "ApimSubnet"
$addressPrefix = "10.0.3.0/24"


$virtualNetwork = Get-AzVirtualNetwork -Name $virtualNetworkName -ResourceGroupName $resourceGroupName

Set-AzVirtualNetworkSubnetConfig -Name $subnetName -VirtualNetwork $virtualNetwork -AddressPrefix $addressPrefix

$virtualNetwork | Set-AzVirtualNetwork

权限

必须至少具有子网的以下基于角色的访问控制权限或更高级别权限,才能配置虚拟网络注入:

操作 说明
Microsoft.Network/virtualNetworks/read 读取虚拟网络定义
Microsoft.Network/virtualNetworks/subnets/read 读取虚拟网络子网定义
Microsoft.Network/virtualNetworks/subnets/join/action 加入虚拟网络

在虚拟网络中注入 API 管理

使用 Azure 门户创建高级 v2 实例时,可以选择为虚拟网络注入配置设置。

  1. 在“创建 API 管理服务”向导中,选择“网络”选项卡。
  2. 在“连接类型”中,选择“虚拟网络”。
  3. 在“类型”中,选择“虚拟网络注入”
  4. 在“配置虚拟网络”中,选择要注入的虚拟网络和委派子网。
  5. 完成向导以创建 API 管理实例。

用于访问专用 IP 地址的 DNS 设置

在虚拟网络中注入高级 v2 API 管理实例时,必须管理自己的 DNS 才能启用对 API 管理的入站访问。

虽然可以选择使用自己的自定义 DNS 服务器,但建议:

  1. 配置 Azure DNS 专用区域
  2. 将 Azure DNS 专用区域链接到虚拟网络。

了解如何在 Azure DNS 中设置专用区域

默认主机名上的终结点访问

在高级 v2 层中创建 API 管理实例时,将向以下终结点分配默认主机名:

  • 网关 - 示例:contoso-apim.azure-api.net

配置 DNS 记录

在 DNS 服务器中创建 A 记录,以便从虚拟网络中访问 API 管理实例。 将终结点记录映射到 API 管理实例的专用 VIP 地址。

出于测试目的,可以在连接到部署 API 管理的虚拟网络的子网中的虚拟机上更新主机文件。 假设 API 管理实例的专用虚拟 IP 地址为 10.1.0.5,则可按照以下示例所示映射主机文件。 主机映射文件位于 %SystemDrive%\drivers\etc\hosts (Windows) 或 /etc/hosts(Linux、macOS)。 例如:

内部虚拟 IP 地址 网关主机名
10.1.0.5 contoso-apim.portal.azure-api.net