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