你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:开发人员 |基本 |标准 |标准 v2 |高级 |高级 v2
可以为 API 管理实例配置入站专用终结点,以允许专用网络中的客户端通过 Azure 专用链接安全地访问实例。
专用终结点使用托管它的 Azure 虚拟网络中的 IP 地址。
专用网络上客户端与 API Management 之间的网络流量将通过虚拟网络以及 Microsoft 主干网络上的专用链接,从而避免从公共 Internet 公开。
配置自定义 DNS 设置或 Azure DNS 专用区域以将 API Management 主机名映射到终结点的专用 IP 地址。
通过专用终结点和专用链接,你可以:
创建到 API Management 实例的多个专用链接连接。
使用专用终结点通过安全的连接发送入站流量。
使用策略来区分来自专用终结点的流量。
将传入流量仅限制到专用终结点,防止数据外泄。
将标准 v2 实例的入站专用终结点与出站虚拟网络集成相结合,为 API 管理客户端和后端服务提供端到端网络隔离。
重要说明
- 只能为发到 API 管理实例的入站流量配置专用终结点连接。
- 配置专用终结点 后 ,只能禁用对 API 管理实例的公共网络访问。
限制
- 只有 API 管理实例的 网关终结点 支持入站专用链接连接。
- 每个 API 管理实例当前最多支持 100 个专用链接连接。
- 自托管网关或工作区网关不支持连接。
- 在经典 API 管理层中,内部或外部虚拟网络中注入的实例不支持专用终结点。
典型方案
使用入站专用终结点可以启用仅限私用的访问,直接连接到 API 管理网关,以限制敏感数据或后端的公开。
支持的配置包括:
通过防火墙传递客户端请求并配置规则,以私下将请求路由到 API 管理网关。
将 Azure Front Door(或 Azure Front Door 与 Azure 应用程序网关)配置为接收外部流量,然后将流量私下路由到 API 管理网关。 例如,请参阅 使用专用链接将 Azure Front Door Premium 连接到 Azure API 管理。
注意
目前不支持将流量从 Azure Front Door 私下路由到 API 管理高级 v2 实例。
Prerequisites
- 现有的 API 管理实例。 如果还没有实例,请创建一个。
- 您的订阅和区域中 API 管理专用终结点类型的可用性。
- 包含用于托管专用终结点的子网的虚拟网络。 子网可以包含其他 Azure 资源,但无法将其委托给另一个服务。
- (建议)虚拟网络中相同或不同子网中的虚拟机,用于测试专用终结点。
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 入门。
如果要在本地运行 CLI 引用命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
如果系统发出提示,则在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 使用和管理 Azure CLI 中的扩展。
运行 az version 以查找所安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
专用终结点的审批方法
通常,网络管理员将创建专用终结点。 根据你的 Azure 基于角色的访问控制 (RBAC) 权限,你创建的专用终结点将自动获得批准以将流量发送到 API Management 实例,或者需要资源所有者手动批准连接。
| 审批方法 | 最低 RBAC 权限 |
|---|---|
| 自动 | Microsoft.Network/virtualNetworks/**Microsoft.Network/virtualNetworks/subnets/**Microsoft.Network/privateEndpoints/**Microsoft.Network/networkinterfaces/**Microsoft.Network/locations/availablePrivateEndpointTypes/readMicrosoft.ApiManagement/service/**Microsoft.ApiManagement/service/privateEndpointConnections/** |
| 手动 | Microsoft.Network/virtualNetworks/**Microsoft.Network/virtualNetworks/subnets/**Microsoft.Network/privateEndpoints/**Microsoft.Network/networkinterfaces/**Microsoft.Network/locations/availablePrivateEndpointTypes/read |
配置专用终结点的步骤
按照以下步骤为 API 管理实例创建和配置专用终结点。
创建专用终结点 - 门户
在经典层中,可以在 Azure 门户中创建 API 管理实例时创建专用终结点,也可以将专用终结点添加到现有实例。
创建 API 管理实例时创建专用终结点
在 “创建 API 管理服务向导”中,选择“ 网络 ”选项卡。
在 “连接类型”中,选择 “专用终结点”。
选择 + 添加。
在 “创建专用终结点 ”页上,输入或选择以下信息:
设置 值 订阅 选择订阅。 资源组 选择现有的资源组,或创建一个新的组。 它必须与你的虚拟网络位于同一区域。 位置 选择专用终结点的位置。 它必须与你的虚拟网络位于同一区域。 它可能与托管 API 管理实例的区域不同。 名称 输入终结点的名称,例如 myPrivateEndpoint。 子资源 选择“网关”。 在 “网络”下,输入或选择专用终结点的虚拟网络和子网。
在 “专用 DNS 集成”下,选择“ 与专用 DNS 区域集成”。 将显示默认 DNS 区域: privatelink.azure-api.net。
选择“确定”。
继续创建 API 管理实例。
为现有 API 管理实例创建专用终结点
在 Azure 门户中转到 API 管理服务。
在左侧菜单中的“部署 + 基础结构”下,选择“网络”。
选择“入站专用终结点连接”>“+ 添加终结点”。
在“基本信息”中,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择现有的资源组,或创建一个新的组。 它必须与你的虚拟网络位于同一区域。 实例详细信息 名称 输入终结点的名称,例如 myPrivateEndpoint。 网络接口名称 输入网络接口的名称,例如 myInterface 区域 选择专用终结点的位置。 它必须与你的虚拟网络位于同一区域。 它可能与托管 API 管理实例的区域不同。 选择屏幕底部的“下一步: 资源”按钮。 以下关于你的 API Management 实例的信息已填充:
- 订阅
- 资源类型
- 资源名称
在“资源”中的“目标子资源”中,选择“网关”。
重要说明
API 管理仅支持网关子资源。 不支持其他子资源。
选择屏幕底部的“下一步: 虚拟网络”按钮。
在“虚拟网络”中,输入或选择以下信息:
设置 值 虚拟网络 选择虚拟网络。 子网 选择子网。 专用 IP 配置 在大多数情况下,可以选择“动态分配 IP 地址”。 应用程序安全组 (可选)选择“应用程序安全组”。 选择屏幕底部的“下一步: DNS”按钮。
在“专用 DNS 集成”中,输入或选择以下信息:
设置 值 与专用 DNS 区域集成 保留默认值“是”。 订阅 选择订阅。 资源组 选择你的资源组。 专用 DNS 区域 显示默认值:(新) privatelink.azure-api.net。 在屏幕底部选择“下一步: 选项卡”。 如果需要,请输入标记来组织 Azure 资源。
选择屏幕底部“下一步:查看 + 创建”。 选择“创建”。
列出到实例的专用终结点连接
创建专用终结点并更新服务后,专用终结点将显示在门户中 API 管理实例的 “入站专用终结点连接 ”页上的列表中。
请注意终结点 的连接状态:
- 已批准指示 API Management 资源已自动批准连接。
- 挂起指示连接必须由资源所有者手动批准。
审批挂起的专用终结点连接
如果专用终结点连接处于挂起状态,则该连接必须由 API Management 实例的所有者手动批准后才能使用。
如果你有足够的权限,请在门户中的 API Management 实例的“专用终结点连接”页上审批专用终结点连接。 在连接的上下文 (...) 菜单中,选择“批准”。
还可以使用 API 管理专用终结点连接 - 创建或更新 REST API 来批准待处理的专用终结点连接。
(可选)禁用公用网络访问
若要仅将传入流量限制到 API 管理实例到专用终结点,请禁用公用网络访问属性。
重要说明
- 配置专用终结点 后 ,可以禁用公用网络访问。
- 可以在 现有 API 管理实例中禁用公共网络访问,此限制不适用于部署过程中。
注意
可以在配置了专用终结点的 API 管理实例中禁用公用网络访问,不能在其他网络配置中禁用。
若要使用 Azure CLI 禁用经典层中的公共网络访问属性,请运行以下 az apim update 命令,替换 API 管理实例和资源组的名称:
az apim update --name my-apim-service --resource-group my-resource-group --public-network-access false
还可以使用 API 管理服务 - 更新 REST API,通过将 publicNetworkAccess 属性设置为 Disabled来禁用公用网络访问。
验证专用终结点连接
创建专用终结点后,请在门户中确认其 DNS 设置。
在 Azure 门户中转到 API 管理服务。
在左侧菜单中的“部署 + 基础结构”下,选择“网络”“入站专用终结点连接”,然后选择所创建的专用终结点>。
在左侧导航的“设置”下,选择“DNS 配置”。
查看专用终结点的 DNS 记录和 IP 地址。 IP 地址是配置专用终结点的子网地址空间中的专用地址。
在虚拟网络中测试
连接到在虚拟网络中设置的虚拟机。
运行 nslookup 或 dig 等实用工具来通过专用链接查找默认网关终结点的 IP 地址。 例如:
nslookup my-apim-service.privatelink.azure-api.net
输出应包括与专用终结点关联的专用 IP 地址。
在虚拟网络中发起的到默认网关终结点的 API 调用应该会成功。
通过 Internet 测试
从专用终结点路径外部,尝试调用 API Management 实例的默认网关终结点。 如果禁用公共访问,输出回包含错误,其中包含状态代码 403 和类似于以下内容的消息:
Request originated from client public IP address 192.0.2.12, 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.
v2 层中自定义域名的限制
目前,在标准 v2 和高级 v2 层中,API 管理需要一个可公开解析的 DNS 名称,以允许流量流向网关终结点。 如果为网关终结点配置自定义域名,则必须公开解析该名称,不限于专用 DNS 区域。
在限制对网关的公共访问并配置专用域名的情况下,可以设置应用程序网关以接收专用域名上的流量,并将其路由到 API 管理实例的网关终结点。 有关示例体系结构,请参阅此 GitHub 存储库。