【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题

本文涉及的产品
云防火墙,500元 1000GB
简介: 【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题

问题描述

使用 Azure 虚拟网络,Azure APIM 可以管理无法通过 Internet 访问的 API,达到以保护企业内部的后端API的目的。在虚拟网络中,启用网络安全组(NSG:Network Security Group)来控制出站,入站的端口,我们可以形象的把它比喻成一道门,需要满足条件的流量才能通过这道安全的大门。

通过安全大门以后,我们就需要有路,才能达到目的。而默认的网络路径由Azure的骨干网络控制,如果需要通过公司自己的防火墙(Azure Firewall或企业自己的防火墙)。在虚拟网络中,通过路由表(Route Table)来指定下一跳(Next Pod),通过使用0.0.0.0/0的配置方式(UDRs:user-defined routes),把虚拟网络中的所有流量都导入并经过防火墙。实现企业级的安全保护。

以上两句总结起来就是:NSG是门,UDR是路。解决方案架构图为:

但是,在搭建APIM VNET时候,却遇见了各种各样的错误。

1)因为NSG的缘故,必须的端口不通。导致APIM的网络连接状态“Network connectivity status”页面中状态显示为 Error

 

2)因为配置了自定义路由(UDR), 导致了APIM页面中的APIs,Repository等页面错误,且门户一直弹出Failed to connect to management endpoint错误消息

 

问题分析

首先:以上的两个问题,都可以在" 如何将 Azure API 管理与虚拟网络配合使用:常见网络配置问题 "一文中找到答案。

问题一端口问题:添加上文档中所列出的所有必要端口,就可以实现网络连接状态全部Success的状态。

API 管理所需的端口:可以使用 网络安全组控制其中部署了 API 管理的子网的入站和出站流量。 如果其中的任一端口不可用,API 管理可能无法正常工作且不可访问。 将 API 管理与 VNET 配合使用时,另一个常见的错误配置问题是阻止了这些端口中的一个或多个。

VNET 中托管 APIM服务实例时,将使用下表中的端口。

源/目标端口 方向 传输协议 服务标记
源/目标
目的 (*) 虚拟网络类型
* / [80], 443 入站 TCP INTERNET/VIRTUAL_NETWORK 客户端与 API 管理的通信 外部
* / 3443 入站 TCP ApiManagement / VIRTUAL_NETWORK Azure 门户和 PowerShell 的管理终结点 外部和内部
* / 443 出站 TCP VIRTUAL_NETWORK / Storage 与 Azure 存储的依赖关系 外部和内部
* / 443 出站 TCP VIRTUAL_NETWORK / AzureActiveDirectory Azure Active Directory 和 Azure KeyVault 依赖项 外部和内部
* / 1433 出站 TCP VIRTUAL_NETWORK / SQL 访问 Azure SQL 终结点 外部和内部
* / 443 出站 TCP VIRTUAL_NETWORK / AzureKeyVault 访问 Azure KeyVault 外部和内部
* / 5671, 5672, 443 出站 TCP VIRTUAL_NETWORK / EventHub 事件中心策略日志和监视代理的依赖项 外部和内部
* / 445 出站 TCP VIRTUAL_NETWORK / Storage 与适用于 GIT 的 Azure 文件共享的依赖关系 外部和内部
* / 443, 12000 出站 TCP VIRTUAL_NETWORK / AzureCloud 运行状况和监视扩展 外部和内部
* / 1886、443 出站 TCP VIRTUAL_NETWORK / AzureMonitor 发布诊断日志和指标资源运行状况Application Insights 外部和内部
* / 25、587、25028 出站 TCP VIRTUAL_NETWORK/INTERNET 连接到 SMTP 中继以发送电子邮件 外部和内部
* / 6381 - 6383 入站和出站 TCP VIRTUAL_NETWORK/VIRTUAL_NETWORK 访问 Redis 服务以获取计算机之间的缓存策略 外部和内部
* / 4290 入站和出站 UDP VIRTUAL_NETWORK/VIRTUAL_NETWORK 同步用于计算机之间的速率限制策略的计数器 外部和内部
* / * 入站 TCP AZURE_LOAD_BALANCER/VIRTUAL_NETWORK Azure 基础结构负载均衡器 外部和内部

配置完成NSG后,一定要记住,在APIM中去Apply Network Configration,以实现网络配置双边同步。

 

问题二自定义路由问题:情况要复杂一些。需要开启服务终结点,在路由表中放行所在中国区的IP地址(控制平面 IP 地址

使用 Express Route 或网络虚拟设备强制隧道流量发往本地防火墙:客户的常用配置是定义自己的默认路由 (0.0.0.0/0),强制来自 API 管理所委托子网的所有流量流经本地防火墙或流向网络虚拟设备。 此流量流一定会中断与 Azure API 管理的连接,因为出站流量会在本地被阻止,或者通过“网络地址转换”功能发送到不再与各种 Azure 终结点一起工作的一组无法识别的地址。

此解决方案要求执行以下三项操作:

第一项:在部署 API 管理服务的子网上启用服务终结点。 需为 Azure SQL、Azure 存储、Azure 事件中心和 Azure 服务总线启用服务终结点直接从 API 管理委托的子网启用这些服务的终结点可以让它们使用 Azure 主干网络,为服务流量提供优化的路由。 如果将服务终结点与强制隧道 API 管理配合使用,则不会将上述 Azure 服务流量进行强制隧道传输。 其他 API 管理服务依赖项流量会通过强制隧道重定向,不能丢失,否则 API 管理服务会功能失常。


第二项:所有控制平面流量(从 Internet 到 API 管理服务的管理终结点)都会通过特定的一组由 API 管理托管的入站 IP 进行路由。 当流量被强制进行隧道传输时,响应不会对称地映射回这些入站源 IP。 为了克服此限制,我们需要添加以下用户定义的路由 (UDR),通过将这些主机路由的目标设置为“Internet”来将流量传回 Azure。 用于控制平面流量的入站 IP 集是记录在案的控制平面 IP 地址

 

第三项:对于被强制进行隧道传输的其他 API 管理服务依赖项,应该有一种方法来解析主机名并访问该终结点。 其中包括:

  • 指标和运行状况监视到 Azure 监视终结点的出站网络连接,可在内网中解析,这些 URL 在 AzureMonitor 服务标记下表示,用于网络安全组。
  1. mooncake.warmpath.chinacloudapi.cn
  2. global.prod.microsoftmetrics.com(新增)
  3. shoebox2.prod.microsoftmetrics.com(新增)
  4. shoebox2-red.prod.microsoftmetrics.com
  5. shoebox2-black.prod.microsoftmetrics.com
  6. shoebox2-red.shoebox2.metrics.nsatc.net
  7. shoebox2-black.shoebox2.metrics.nsatc.net
  8. prod3.prod.microsoftmetrics.com(新增)
  9. prod3-red.prod.microsoftmetrics.com
  10. prod5.prod.microsoftmetrics.com
  11. prod5-black.prod.microsoftmetrics.com
  12. prod5-red.prod.microsoftmetrics.com
  13. gcs.prod.warm.ingestion.monitoring.azure.cn
  • Azure 门户诊断若要在从虚拟网络内部使用 API 管理扩展时从 Azure 门户启用诊断日志流,需要允许在端口 443 上对 dc.services.visualstudio.com 进行出站访问。
  • SMTP 中继 :在主机 smtpi-co1.msn.comsmtpi-ch1.msn.comsmtpi-db3.msn.comsmtpi-sin.msn.comies.global.microsoft.com 下解析的 SMTP 中继的出站网络连接
  • 开发人员门户验证码:在主机 client.hip.live.compartner.hip.live.com 下解析的开发人员门户 CAPTCHA 的出站网络连接。

 

问题解决

对比NSG列表,添加缺少的端口。特别是:1433,5671, 5672,12000,1886,25028, 6381 - 6383等不常配置的端口。

在Route Table中添加中国区两个被标记为全球的IP地址。这是必须的地址,也是在配置中常常忽略的问题。也是产生此问题的根源。

 

 

参考资料

 

在内部虚拟网络中使用 Azure API 管理服务:https://docs.azure.cn/zh-cn/api-management/api-management-using-with-internal-vnet

APIM常见网络配置问题:https://docs.azure.cn/zh-cn/api-management/api-management-using-with-vnet#common-network-configuration-issues

 

相关文章
|
3月前
|
XML 安全 API
【Azure APIM】API Management的Policy是否支持 SAML assertion?
本文探讨了API Management是否支持通过策略(如validate-jwt)验证SAML assertion的问题。结论是API Management目前不支持SAML assertion验证,因其为XML-based token,而validate-jwt仅适用于JWT tokens。文章进一步介绍了SAML(安全断言标记语言)的基本原理、Assertion的组成及用途,包括单点登录(SSO)、跨组织身份验证、云服务集成和安全性增强等方面,帮助读者深入了解SAML的工作机制及其应用场景。
67 23
|
9月前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
109 10
|
9月前
|
人工智能 安全 网络安全
揭秘网络危机模拟:现场vs.虚拟,未来创新何在?
揭秘网络危机模拟:现场vs.虚拟,未来创新何在?
|
9月前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
116 11
|
存储 安全 网络安全
云计算与网络安全的博弈:保护数据在虚拟世界中的安全移动应用开发之旅:从新手到专家
【8月更文挑战第27天】随着云计算技术的飞速发展,企业和个人用户越来越多地将数据和服务迁移到云端。然而,这一转变同时带来了新的安全挑战。本文旨在探讨云计算环境下的网络安全问题,并分析如何通过技术和策略保障信息安全。我们将从云服务的基础知识出发,逐步深入到网络安全和信息安全的高级概念,最后讨论如何实施有效的安全措施来抵御网络威胁。文章不仅涵盖了理论框架,还提供了实际案例分析,旨在为读者提供一套全面的云计算安全指南。
|
29天前
|
JSON API 数据格式
淘宝/天猫图片搜索API接口,json返回数据。
淘宝/天猫平台虽未开放直接的图片搜索API,但可通过阿里妈妈淘宝联盟或天猫开放平台接口实现类似功能。本文提供基于淘宝联盟的图片关联商品搜索Curl示例及JSON响应说明,适用于已获权限的开发者。如需更高精度搜索,可选用阿里云视觉智能API。
|
27天前
|
JSON API 数据安全/隐私保护
深度分析淘宝卖家订单详情API接口,用json返回数据
淘宝卖家订单详情API(taobao.trade.fullinfo.get)是淘宝开放平台提供的重要接口,用于获取单个订单的完整信息,包括订单状态、买家信息、商品明细、支付与物流信息等,支撑订单管理、ERP对接及售后处理。需通过appkey、appsecret和session认证,并遵守调用频率与数据权限限制。本文详解其使用方法并附Python调用示例。
|
1月前
|
监控 算法 API
电商API接口对接实录:淘宝优惠券接口对接处理促销监控系统
在电商开发中,淘宝详情页的“券后价计算”是极易出错的环节。本文作者结合实战经验,分享了因忽略满减券门槛、有效期、适用范围等导致的踩坑经历,并提供了完整的解决方案,包括淘宝API签名生成、券后价计算逻辑、常见坑点及优化建议,助力开发者精准实现券后价功能,避免业务损失。
|
1月前
|
JSON 算法 API
淘宝商品评论API接口核心解析,json数据返回
淘宝商品评论API是淘宝开放平台提供的数据服务接口,允许开发者通过编程方式获取指定商品的用户评价数据,包括文字、图片、视频评论及评分等。其核心价值在于:
|
1月前
|
域名解析 JSON API
【干货满满】如何处理requests库调用API接口时的异常情况
在调用 API 时,网络波动、服务器错误、参数异常等情况难以避免。本文提供一套系统化的异常处理方案,涵盖 requests 库常见异常类型、处理策略、实战代码与最佳实践,通过分类处理、重试机制与兜底策略,提升接口调用的稳定性与可靠性。

热门文章

最新文章