Azure API 管理的 IP 地址
适用于:所有 API 管理层级
本文介绍如何检索 Azure API 管理服务的 IP 地址。 如果该服务位于虚拟网络中,IP 地址可以是公共或专用地址。 可以使用 IP 地址来创建防火墙规则、筛选传入后端服务的流量,或者限制出站流量。
公共 IP 地址
“开发人员”、“基本”、“标准”或“高级”层中的每个 API 管理服务实例具有公共 IP 地址,这些地址专供该服务实例使用(不与其他资源共享)。
可以通过 Azure 门户中资源的概述仪表板检索 IP 地址。
也可以使用以下 API 调用以编程方式提取 IP 地址:
GET https://management.chinacloudapi.cn/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>?api-version=<api-version>
公共 IP 地址将包含在响应中:
{
...
"properties": {
...
"publicIPAddresses": [
"172.31.0.1"
],
...
}
...
}
在多区域部署中,每个区域部署有一个公共 IP 地址。
VNet 中 API 管理服务的 IP 地址
如果 API 管理服务位于虚拟网络中,则有两种类型的 IP 地址:公共和专用。
公共 IP 地址用于端口
3443
上的内部通信 - 用于管理配置(例如,通过 Azure 资源管理器)。 在外部 VNet 配置中,它们也用于运行时 API 流量。 在内部 VNet 配置中,公共 IP 地址仅用于 Azure 内部管理操作,不向 Internet 公开实例。仅在内部 VNet 模式下提供专用虚拟 IP (VIP)地址,用于从网络内部连接到 API 管理终结点-网关、开发人员门户和用于直接 API 访问的管理平面。 可以使用 VIP 在网络内部设置 DNS 记录。
Azure 门户和 API 调用响应中会显示两种类型的地址:
GET https://management.chinacloudapi.cn/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>?api-version=<api-version>
{
...
"properties": {
...
"publicIPAddresses": [
"172.31.0.1"
],
"privateIPAddresses": [
"192.168.1.5"
],
...
},
...
}
重要
内部负载均衡器和 API 管理单元的专用 IP 地址是动态分配的。 因此,在部署 API 管理实例之前,无法预测其专用 IP。 此外,更改为其他子网,然后返回可能会导致专用 IP 地址发生变化。
出站流量的 IP 地址
API 管理对 VNet 或对等互连 VNet 外部的连接使用公共 IP 地址,并对 VNet 或对等互连 VNet 中的连接使用专用 IP 地址。
将 API 管理部署到外部或内部虚拟网络中并且 API 管理连接到专用(面向 Intranet)的后端时,子网中的内部 IP 地址(动态 IP (DIP) 地址)将用于运行时 API 流量。 将请求从 API 管理发送到面向专用后端时,将显示专用 IP 地址作为请求的来源。
因此,如果 IP 限制列出 VNet 或对等互联 VNet 内的安全资源,建议将整个 API 管理子网范围与 IP 规则结合使用,而(在内部模式下)不只是使用与 API 管理资源关联的专用 IP 地址。
将请求从 API 管理发送到公共(面向 Internet)的后端时,将始终显示公共 IP 地址作为请求的来源。
消耗、基本 v2 和标准 v2 层 API 管理服务的 IP 地址
如果在共享基础结构上运行的服务层中创建 API 管理实例,则它没有专用 IP 地址。 目前,以下服务层中的实例在共享基础结构上运行,且没有确定性的 IP 地址:消耗、基本 v2(预览版)、标准 v2(预览版)。
如果需要将消耗、基本 v2 或标准 v2 层实例使用的出站 IP 地址添加到允许列表,可以将实例的数据中心(Azure 区域)添加到允许列表。 可以下载列出所有 Azure 数据中心 IP 地址的 JSON 文件。 然后,查找应用于实例所在运行区域的 JSON 片段。
例如,“中国北部”区域的允许列表可能会如以下 JSON 片段所示:
{
"name": "AzureCloud.chinanorth",
"id": "AzureCloud.chinanorth",
"properties": {
"changeNumber": 18,
"region": "chinanorth",
"regionId": 14,
"platform": "Azure",
"systemService": "",
"addressPrefixes": [
"13.69.0.0/17",
"13.73.128.0/18",
... Some IP addresses not shown here
"213.199.180.192/27",
"213.199.183.0/24"
]
}
}
有关此文件何时更新以及 IP 地址何时更改的信息,请展开下载中心页的“详细信息”部分。
对 IP 地址的更改
在 API 管理的“开发人员”、“基本”、“标准”和“高级”层中,公共 IP 地址 (VIP) 和专用 VIP 地址(如果已在内部 VNet 模式下配置)在服务的整个生存期内是静态的,但存在以下例外情况:
API 管理服务被删除然后重新创建。
服务订阅被禁用或警告(例如,由于未付款),然后恢复。 详细了解订阅状态
(开发人员层级和高级层级)在该服务中添加或删除 Azure 虚拟网络。
(开发人员层级和高级层级)切换 API 管理服务的“外部”和“内部” VNet 部署模式。
(开发者层级和高级层级)API 管理服务移动到了另一个子网、从
stv1
迁移到了stv2
计算平台,或配置了不同的公共 IP 地址资源。(高级层级)可用性区域已启用、添加或删除。
(高级层级)在多区域部署中,如果某个区域搬迁然后重建,则区域 IP 地址将发生变化。
重要
从内部虚拟网络更改为外部虚拟网络,在 VNet 中更新 API 管理实例(从
stv1
迁移到stv2
)或者在网络中更改子网时,必须配置不同的公共 IP 地址。 如果未提供,则会自动配置 Azure 托管的公共 IP 地址。