category
Azure API管理可以部署(注入)在Azure虚拟网络(VNet)中,以访问网络中的后端服务。有关VNet连接选项、要求和注意事项,请参阅:
- 使用Azure API管理的虚拟网络
- API管理注入虚拟网络的网络资源需求
- Using a virtual network with Azure API Management
- Network resource requirements for API Management injection into a virtual network
本文介绍了如何在外部模式下为API管理实例设置VNet连接,其中开发人员门户、API网关和其他API管理端点可以从公共互联网访问,后端服务位于网络中。
连接到外部ExpressRoute
有关特定于内部模式的配置,其中端点只能在VNet中访问,请参阅将Azure API管理实例部署到虚拟网络-内部模式。
笔记
我们建议您使用Azure Az PowerShell模块与Azure进行交互。若要开始,请参阅安装Azure PowerShell。要了解如何迁移到Az PowerShell模块,请参阅将Azure PowerShell从AzureRM迁移到Az。
先决条件
开始之前,请查看将API管理注入虚拟网络的网络资源要求。
根据托管API管理实例的计算平台的版本(stv2或stv1),某些先决条件有所不同。
提示
使用门户创建或更新现有API管理实例的网络连接时,该实例托管在stv2计算平台上。
stv2
- API管理实例。有关更多信息,请参阅创建Azure API管理实例。
- 与API管理实例位于同一区域和订阅中的虚拟网络和子网。
- 用于连接到API管理实例的子网可能包含其他Azure资源类型。
- 子网不应启用任何委派。子网的“将子网委托给服务”设置应设置为“无”。
- 连接到上述子网的网络安全组。需要网络安全组(NSG)明确允许入站连接,因为API管理内部使用的负载平衡器默认情况下是安全的,并拒绝所有入站流量。有关具体配置,请参阅本文后面的配置NSG规则。
- 对于某些情况,将子网中的服务端点启用到依赖服务,如Azure存储或Azure SQL。有关更多信息,请参阅本文后面使用ExpressRoute或网络虚拟设备将隧道流量强制传输到本地防火墙。
- (可选)标准SKU公共IPv4地址。
- 重要的
- 从2024年5月开始,在内部模式下在VNet中部署(注入)API管理实例或将内部VNet配置迁移到新子网时,不再需要公共IP地址。在外部ExpressRoute模式下,指定公共IP地址是可选的;如果不提供,则会自动配置Azure管理的公共IP地址。在外部VNet模式下,公共IP地址用于运行时API流量。
- 目前,如果在内部模式或外部模式下为VNet中的API管理实例启用区域冗余,则必须指定新的公共IP地址。
如果提供,则IP地址必须与API管理实例和虚拟网络位于相同的区域和订阅中。 - 创建公共IP地址资源时,请确保为其分配DNS名称标签。通常,您应该使用与API管理实例相同的DNS名称。如果更改了它,请重新部署您的实例,以便应用新的DNS标签。
- 为了获得最佳的网络性能,建议使用默认的路由首选项:Microsoft网络。
- 在计划为API管理实例启用区域冗余的区域中创建公共IP地址时,请配置区域冗余设置。
- IP地址的值被分配为该区域中API管理实例的虚拟公用IPv4地址。
- 对于多区域API管理部署,请分别为每个位置配置虚拟网络资源。
启用Vnet连接
使用Azure门户(stv2计算平台)启用ExpressRoute连接
- 转到Azure门户以查找您的API管理实例。搜索并选择API管理服务。
- 选择您的API管理实例。
- 选择网络。
- 选择外部访问类型。在Azure门户中选择ExpressRoute。
- 在提供API管理服务的位置(地区)列表中:
- 选择一个位置。
- 选择虚拟网络、子网和(可选)IP地址。
- 在您正在配置的区域中设置的Azure订阅中可用的资源管理器逻辑节点填充到ListView列表中。
- 门户中的ExpressRoute设置。
- 选择应用。API管理实例的“网络”页面将使用新的VNet和子网选项进行更新。
- 继续为API管理实例的其余位置配置VNet设置。
在顶部导航栏中,选择“保存”。
更新API管理实例可能需要15到45分钟。在此过程中,开发人员层中的实例会停机。高级层中的实例在此过程中不会停机。
使用资源管理器模板(stv2计算平台)启用连接
Azure资源管理器模板(API版本2021-08-01)
使用Azure PowerShell cmdlet(stv1平台)启用连接
在VNet中创建或更新API管理实例。
配置NSG规则
在API管理子网中配置自定义网络规则,以筛选来往API管理实例的流量。我们建议遵循以下NSG最低规则,以确保您的实例正常运行和访问。仔细检查您的环境,以确定可能需要的更多规则。
重要的
根据您对缓存和其他功能的使用情况,您可能需要配置下表中最低规则之外的其他NSG规则。有关详细设置,请参阅虚拟网络配置参考。
对于大多数场景,使用指示的服务标签而不是服务IP地址来指定网络源和目标。
将这些规则的优先级设置为高于默认规则的优先级。
stv2
Source / Destination Port(s) | Direction | Transport protocol | Service tags Source / Destination |
Purpose | VNet type |
---|---|---|---|---|---|
* / [80], 443 | Inbound | TCP | Internet / VirtualNetwork | Client communication to API Management | External only |
* / 3443 | Inbound | TCP | ApiManagement / VirtualNetwork | Management endpoint for Azure portal and PowerShell | External & Internal |
* / 6390 | Inbound | TCP | AzureLoadBalancer / VirtualNetwork | Azure Infrastructure Load Balancer | External & Internal |
* / 443 | Inbound | TCP | AzureTrafficManager / VirtualNetwork | Azure Traffic Manager routing for multi-region deployment | External only |
* / 443 | Outbound | TCP | VirtualNetwork / Storage | Dependency on Azure Storage for core service functionality | External & Internal |
* / 1433 | Outbound | TCP | VirtualNetwork / SQL | Access to Azure SQL endpoints for core service functionality | External & Internal |
* / 443 | Outbound | TCP | VirtualNetwork / AzureKeyVault | Access to Azure Key Vault for core service functionality | External & Internal |
* / 1886, 443 | Outbound | TCP | VirtualNetwork / AzureMonitor | Publish Diagnostics Logs and Metrics, Resource Health, and Application Insights | External & Internal |
连接到虚拟网络中托管的web服务
一旦您将API管理服务连接到VNet,您就可以像访问公共服务一样访问其中的后端服务。创建或编辑API时,请在web服务URL字段中键入web服务的本地IP地址或主机名(如果为VNet配置了DNS服务器)。
从VNet添加API
自定义DNS服务器设置
在外部Direct3D模式下,Azure默认管理DNS。您可以选择配置自定义DNS服务器。
API管理服务依赖于几个Azure服务。当API管理托管在具有自定义DNS服务器的VNet中时,它需要解析这些Azure服务的主机名。
- 有关自定义DNS设置的指导,包括转发Azure提供的主机名,请参阅Azure虚拟网络中资源的名称解析。
- 与DNS服务器通信需要端口53上的出站网络访问。有关更多设置,请参阅虚拟网络配置参考。
重要的
如果计划为VNet使用自定义DNS服务器,请在将API管理服务部署到其中之前进行设置。否则,每次通过运行应用网络配置操作更改DNS服务器时,都需要更新API管理服务。
路由
- 保留负载平衡的公共IP地址(VIP),以提供对VNet外部的API管理端点和资源的访问。
- 公共VIP可以在Azure门户的Overview/Essentials刀片上找到。
有关更多信息和注意事项,请参阅Azure API管理的IP地址。
VIP和DIP地址
动态IP(DIP)地址将被分配给服务中的每个底层虚拟机,并用于访问Contoso和对等网络中的端点和资源。API管理服务的公共虚拟IP(VIP)地址将用于访问公共寻址资源。
如果IP限制列出了VNet或对等VNet中的安全资源,我们建议指定部署API管理服务的整个子网范围,以授予或限制对该服务的访问。
了解有关推荐子网大小的更多信息。
使用ExpressRoute或网络虚拟设备强制将隧道流量传输到本地防火墙
强制隧道允许您将所有从子网到互联网的流量重定向或“强制”回本地进行检查和审计。通常,您配置并定义自己的默认路由(0.0.0.0/0),强制来自API管理子网的所有流量通过本地防火墙或流向网络虚拟设备。此流量流中断了与API管理的连接,因为出站流量要么在本地被阻止,要么NAT到无法识别的地址集,这些地址集不再与各种Azure端点一起工作。您可以通过以下方法解决此问题:
在部署API管理服务的子网上启用服务终结点:
- Azure SQL(如果API管理服务部署到多个区域,则仅在主要区域中需要)
- Azure存储
- Azure事件中心
- Azure密钥保管库(在stv2平台上部署API管理时需要)
通过启用从API管理子网直接到这些服务的端点,您可以使用Microsoft Azure骨干网络,为服务流量提供最佳路由。如果使用具有强制隧道化API管理的服务端点,则不会强制隧道化前面Azure服务的流量。但是,其他API管理服务依赖流量仍然是强制隧道化的。请确保防火墙或虚拟设备不会阻止此流量,否则API管理服务可能无法正常工作。
笔记
我们强烈建议将服务端点直接从API管理子网启用到支持它们的从属服务,如Azure SQL和Azure Storage。但是,某些组织可能要求强制从API管理子网中传输所有流量。在这种情况下,请确保将防火墙或虚拟设备配置为允许此流量。您需要允许每个依赖服务的完整IP地址范围,并在Azure基础架构更改时保持此配置最新。由于此网络流量的强制隧道,您的API管理服务也可能会遇到延迟或意外超时。
- 从互联网到API管理服务的管理端点的所有控制平面流量都通过一组特定的入站IP路由,这些IP由API管理托管,包含在ApiManagement服务标签中。当流量被强制隧道传输时,响应不会对称地映射回这些入站源IP,与管理端点的连接也会丢失。为了克服这一限制,请为ApiManagement服务标记配置一个用户定义的路由(UDR),并将下一跳类型设置为“Internet”,以将流量引导回Azure。
笔记
允许API管理流量绕过本地防火墙或网络虚拟设备并不被视为重大安全风险。API管理子网的推荐配置仅允许端口3443上的入站管理流量来自ApiManagement服务标记包含的Azure IP地址集。建议的UDR配置仅适用于此Azure流量的返回路径。
- (外部VNet模式)由于强制隧道传输引入的不对称路由,尝试从互联网到达API管理网关和开发人员门户的客户端的数据平面流量也将在默认情况下被丢弃。对于每个需要访问的客户端,配置一个具有下一跳类型“Internet”的显式UDR,以绕过防火墙或虚拟网络设备。
- 对于其他强制隧道化API管理服务依赖项,请解析主机名并联系端点。这些措施包括:
- 指标和健康监测
- Azure门户诊断
- SMTP中继
- 开发者门户CAPTCHA
- Azure KMS服务器
有关更多信息,请参阅虚拟网络配置参考。
常见的网络配置问题
此部分已移动。请参阅虚拟网络配置参考。
故障排除
将API管理服务初始部署到子网失败
- 将虚拟机部署到同一子网中。
- 连接到虚拟机,并验证与Azure订阅中以下每个资源的连接:
- Azure存储blob
- Azure SQL数据库
- Azure存储表
- Azure密钥保管库(用于托管在stv2平台上的API管理实例)
重要的
验证连接后,在将API管理部署到子网之前删除子网中的所有资源(当API管理托管在stv1平台上时需要)。
验证网络状态
- 将API管理部署到子网后,使用门户检查实例与依赖项(如Azure存储)的连接。
- 在门户的左侧菜单中,在部署和基础架构下,选择网络>网络状态。
Filter | Description |
---|---|
Required | Select to review the required Azure services connectivity for API Management. Failure indicates that the instance is unable to perform core operations to manage APIs. |
Optional | Select to review the optional services connectivity. Failure indicates only that the specific functionality won't work (for example, SMTP). Failure may lead to degradation in using and monitoring the API Management instance and providing the committed SLA. |
要帮助解决连接问题,请选择:
- 指标-审查网络连接状态指标
- 诊断-在指定的时间段内运行虚拟网络验证器
要解决连接问题,请查看网络配置设置并修复所需的网络设置。
增量更新
更改网络时,请参阅NetworkStatus API以验证API管理服务是否未失去对关键资源的访问。连接状态应每15分钟更新一次。
要使用门户将网络配置更改应用于API管理实例,请执行以下操作:
- 在实例的左侧菜单中,在部署和基础架构下,选择网络>虚拟网络。
- 选择应用网络配置。
资源导航链接
托管在stv1计算平台上的API管理实例在部署到Resource Manager VNet子网中时,通过创建资源导航链接来保留子网。如果子网已包含来自其他提供程序的资源,则部署将失败。类似地,当您删除API管理服务或将其移动到其他子网时,资源导航链接将被删除。
将API管理实例重新分配到上一个子网时遇到的挑战
- VNet锁-将API管理实例移回其原始子网时,由于VNet锁,可能无法立即重新分配,这需要长达一个小时的时间才能删除。如果原始子网具有其他基于stv1平台的API管理服务(基于云服务),则需要删除这些服务并等待,以便在同一子网中部署基于stv2平台的服务。
- 资源组锁-另一种需要考虑的情况是,在资源组级别或更高级别存在范围锁,阻碍了资源导航链接删除过程。若要解决此问题,请删除作用域锁定,并允许API管理服务延迟约4-6小时,以便在删除锁定之前解除与原始子网的链接,从而能够部署到所需的子网。
从ExpressRoute内部对与Microsoft Graph的连接进行故障排除
包括用户使用Microsoft Entra身份提供程序登录开发人员门户在内的功能需要与Microsoft Graph的网络连接。
要排除从ExpressRoute内部连接到Microsoft Graph的故障,请执行以下操作:
- 确保为从API管理实例到Microsoft Graph的出站连接配置了NSG和其他网络规则(使用AzureActiveDirectory服务标记)。
- 确保DNS解析和网络访问graph.microsoft.com。例如,在ExpressRoute中配置一个新的VM,连接到它,并尝试GEThttps://graph.microsoft.com/v1.0/从浏览器或使用cURL、PowerShell或其他工具获取$metadata。
下一步
了解更多关于:
- 登录 发表评论
- 13 次浏览
Tags
最新内容
- 11 hours 49 minutes ago
- 14 hours ago
- 14 hours ago
- 3 days 5 hours ago
- 3 days 13 hours ago
- 3 days 13 hours ago
- 3 days 13 hours ago
- 3 days 14 hours ago
- 1 week ago
- 1 week ago