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

使用入站专用终结点以专用方式连接到 API 管理

适用于:开发人员|基本|标准|高级

可以为 API 管理实例配置入站专用终结点,以允许专用网络中的客户端通过 Azure 专用链接安全地访问实例。

  • 专用终结点使用托管它的 Azure VNet 中的 IP 地址。

  • 专用网络上客户端与 API Management 之间的网络流量将通过 VNet 以及 Microsoft 主干网络上的专用链接,从而避免从公共 Internet 公开。

  • 配置自定义 DNS 设置或 Azure DNS 专用区域以将 API Management 主机名映射到终结点的专用 IP 地址。

显示使用专用终结点与 API 管理建立安全入站连接的关系图。

通过专用终结点和专用链接,你可以:

  • 创建到 API Management 实例的多个专用链接连接。

  • 使用专用终结点通过安全的连接发送入站流量。

  • 使用策略来区分来自专用终结点的流量。

  • 将传入流量仅限制到专用终结点,防止数据外泄。

重要

  • 只能为发到 API 管理实例的入站流量配置专用终结点连接。 当前不支持出站流量。

    你可以使用外部或内部虚拟网络模型,从 API 管理实例建立到专用终结点的出站连接。

  • 若要启用入站专用终结点,不能将 API 管理实例注入外部或内部虚拟网络

限制

  • 目前,只有 API 管理实例的网关终结点支持入站专用链接连接。
  • 每个 API 管理实例当前最多支持 100 个专用链接连接。
  • 自托管网关不支持连接。

先决条件

  • 现有的 API 管理实例。 如果还没有实例,请创建一个
    • API Management 实例必须托管在 stv2 计算平台上。 例如,创建一个新的实例,或者,如果在高级服务层级中已有一个实例,请启用区域冗余
    • 请勿将实例(注入)到外部内部虚拟网络中。
  • 用于托管专用终结点的虚拟网络和子网。 子网可以包含其他 Azure 资源。
  • (建议)虚拟网络中相同或不同子网中的虚拟机,用于测试专用终结点。

专用终结点的审批方法

通常,网络管理员将创建专用终结点。 根据你的 Azure 基于角色的访问控制 (RBAC) 权限,你创建的专用终结点将自动获得批准以将流量发送到 API Management 实例,或者需要资源所有者手动批准连接。

审批方法 最低 RBAC 权限
自动 Microsoft.Network/virtualNetworks/**
Microsoft.Network/virtualNetworks/subnets/**
Microsoft.Network/privateEndpoints/**
Microsoft.Network/networkinterfaces/**
Microsoft.Network/locations/availablePrivateEndpointTypes/read
Microsoft.ApiManagement/service/**
Microsoft.ApiManagement/service/privateEndpointConnections/**
手动 Microsoft.Network/virtualNetworks/**
Microsoft.Network/virtualNetworks/subnets/**
Microsoft.Network/privateEndpoints/**
Microsoft.Network/networkinterfaces/**
Microsoft.Network/locations/availablePrivateEndpointTypes/read

配置专用终结点的步骤

  1. 获取订阅中的可用专用终结点类型
  2. 在子网中禁用网络策略
  3. 创建专用终结点 - 门户
  4. 列出到实例的专用终结点连接
  5. 审批挂起的专用终结点连接
  6. (可选)禁用公用网络访问

获取订阅中的可用专用终结点类型

验证 API Management 专用终结点类型在你的订阅和位置中可用。 在门户中,转到“专用链接中心”来查找此信息。 选择“支持的资源”。

还可以通过使用可用的专用终结点类型 - List REST API 来查找此信息。

GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{region}/availablePrivateEndpointTypes?api-version=2021-03-01

输出应包括 Microsoft.ApiManagement.service 终结点类型:

[...]

      "name": "Microsoft.ApiManagement.service",
      "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Network/AvailablePrivateEndpointTypes/Microsoft.ApiManagement.service",
      "type": "Microsoft.Network/AvailablePrivateEndpointTypes",
      "resourceName": "Microsoft.ApiManagement/service",
      "displayName": "Microsoft.ApiManagement/service",
      "apiVersion": "2021-04-01-preview"
    }
[...]

在子网中禁用网络策略

必须在用于专用终结点的子网中禁用网络安全组等网络策略。

如果使用 Azure PowerShell、Azure CLI 或 REST API 等工具来配置专用终结点,请手动更新子网配置。 相关示例,请参阅管理专用终结点的网络策略

使用 Azure 门户创建专用终结点时(如下一部分中所示),在创建过程中将自动禁用网络策略

创建专用终结点 - 门户

  1. Azure 门户导航到 API 管理服务。

  2. 在左侧菜单中,选择“网络”。

  3. 选择“入站专用终结点连接”>“+ 添加终结点”。

    使用 Azure 门户添加专用终结点

  4. 在“创建专用终结点”的“基本信息”选项卡中,输入或选择以下信息:

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择现有的资源组,或创建一个新的组。 它必须与你的虚拟网络位于同一区域。
    实例详细信息
    名称 输入终结点的名称,例如 myPrivateEndpoint。
    网络接口名称 输入网络接口的名称,例如 myInterface
    区域 选择专用终结点的位置。 它必须与你的虚拟网络位于同一区域。 它可能与托管你的 API Management 实例的区域不同。
  5. 选择“资源”选项卡或页面底部的“下一步: 资源”按钮。 以下关于你的 API Management 实例的信息已填充:

    • 订阅
    • 资源组
    • 资源名称
  6. 在“资源”中的“目标子资源”中,选择“网关”。

    在 Azure 门户中创建专用终结点

  7. 选择“虚拟网络”选项卡或选择屏幕底部的“下一步:虚拟网络”按钮。

  8. 在“网络”中,输入或选择以下信息:

    设置
    虚拟网络 选择你的虚拟网络。
    子网 选择子网。
    专用 IP 配置 在大多数情况下,可以选择“动态分配 IP 地址”。
    应用程序安全组 (可选)选择“应用程序安全组”。
  9. 选择“DNS”选项卡或屏幕底部的“下一步:DNS”按钮。

  10. 在“专用 DNS 集成”中,输入或选择以下信息:

    设置
    与专用 DNS 区域集成 保留默认值“是”。
    订阅 选择订阅。
    资源组 选择你的资源组。
    专用 DNS 区域 显示默认值:(新) privatelink.azure-api.net
  11. 选择“标记”选项卡或屏幕底部的“下一步:标记”按钮。 如果需要,可输入标记以组织 Azure 资源。

  12. 选择“查看 + 创建”。

  13. 选择“创建”。

列出到实例的专用终结点连接

创建专用终结点后,它将显示在门户中 API 管理实例的“入站专用终结点连接”页上的列表中。

还可以使用专用终结点连接 - List By Service REST API 来列出到服务实例的专用终结点连接。

请注意终结点的“连接状态”:

  • 已批准指示 API Management 资源已自动批准连接。
  • 挂起指示连接必须由资源所有者手动批准。

审批挂起的专用终结点连接

如果专用终结点连接处于挂起状态,则该连接必须由 API Management 实例的所有者手动批准后才能使用。

如果你有足够的权限,请在门户中的 API Management 实例的“专用终结点连接”页上审批专用终结点连接。

还可以使用 API Management 专用终结点连接 - Create Or Update REST API。

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{apimServiceName}privateEndpointConnections/{privateEndpointConnectionName}?api-version=2021-08-01

(可选)禁用公用网络访问

若要选择性地将 API Management 实例的传入流量仅限制到专用终结点,请禁用公用网络访问。 使用 API Management 服务 - 创建或更新 REST API 以将 publicNetworkAccess 属性设置为 Disabled

注意

publicNetworkAccess 属性只能用于禁用对使用专用终结点配置的 API 管理实例的公共访问,而不能与其他网络配置(如 VNet 注入)一起使用。

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{apimServiceName}?api-version=2021-08-01
Authorization: Bearer {{authToken.response.body.access_token}}
Content-Type: application/json

使用以下 JSON 体:

{
  [...]
  "properties": {
    "publicNetworkAccess": "Disabled"
  }
}

验证专用终结点连接

创建专用终结点后,请在门户中确认它的 DNS 设置:

  1. Azure 门户导航到 API 管理服务。

  2. 在左侧菜单中,选择“网络”>“入站专用终结点连接”,然后选择所创建的专用终结点。

  3. 在左侧导航栏中,选择“DNS 配置”。

  4. 查看专用终结点的 DNS 记录和 IP 地址。 IP 地址是配置了专用终结点的子网的地址空间中的专用地址。

在虚拟网络中测试

连接到在虚拟网络中设置的虚拟机。

运行 nslookupdig 等实用工具来通过专用链接查找默认网关终结点的 IP 地址。 例如:

nslookup my-apim-service.azure-api.net

输出应包括与专用终结点关联的专用 IP 地址。

在虚拟网络中发起的到默认网关终结点的 API 调用应该会成功。

通过 Internet 测试

从专用终结点路径外部,尝试调用 API Management 实例的默认网关终结点。 如果禁用公共访问,输出将包含错误,其中包含状态代码 403 和类似于以下内容的消息:

Request originated from client public IP address xxx.xxx.xxx.xxx, public network access on this 'Microsoft.ApiManagement/service/my-apim-service' is disabled.
       
To connect to 'Microsoft.ApiManagement/service/my-apim-service', please use the Private Endpoint from inside your virtual network. 

后续步骤