使用专用终结点保护标准逻辑应用与 Azure 虚拟网络之间的流量

适用于:Azure 逻辑应用(标准)

为了在标准逻辑应用工作流与 Azure 虚拟网络之间以专用且安全的方式进行通信,可为入站流量设置专用终结点,并将虚拟网络集成用于出站流量。

专用终结点是一个网络接口,可以通过专用且安全的方式连接到 Azure 专用链接支持的服务。 此服务可以是 Azure 服务(如 Azure 逻辑应用、Azure 存储、Azure Cosmos DB 和 SQL),也可以是自己的专用链接服务。 专用终结点使用虚拟网络中的专用 IP 地址将服务有效地接入虚拟网络中。

本文介绍如何通过专用终结点为入站流量和通过虚拟网络集成为出站流量设置访问权限。

有关详细信息,请查看以下文档:

先决条件

你需要有一个新的或现有的 Azure 虚拟网络,其中包括一个没有任何委派的子网。 该子网用于在虚拟网络中部署和分配专用 IP 地址。

有关详细信息,请参阅以下文档:

设置通过专用终结点的入站流量

若要保护工作流的入站流量,请完成以下大致步骤:

  1. 使用可接收和处理入站请求的内置触发器(例如请求触发器或 HTTP + Webhook 触发器)启动工作流。 此触发器使用可调用的终结点设置工作流。

  2. 将逻辑应用资源的专用终结点添加到虚拟网络。

  3. 进行测试调用以检查对终结点的访问。 若要在设置此终结点后调用逻辑应用工作流,必须连接到虚拟网络。

通过专用终结点的入站流量的注意事项

  • 如果从虚拟网络外部访问,监视视图无法访问触发器和操作中的输入和输出。

  • 托管 API Webhook 触发器(推送触发器)和操作将不起作用,因为它们在公有云中运行,无法调用到专用网络。 它们需要公共终结点来接收调用。 例如,此类触发器包括 Dataverse 触发器和事件网格触发器。

  • 如果使用 Office 365 Outlook 触发器,工作流只会每小时触发一次。

  • 从 Visual Studio Code 或 Azure CLI 进行的部署只能从虚拟网络内部进行。 可使用部署中心将逻辑应用链接到 GitHub 存储库。 然后,可使用 Azure 基础结构生成和部署代码。

    要使 GitHub 集成正常工作,需在逻辑应用中删除 WEBSITE_RUN_FROM_PACKAGE 设置,或将该值设置为 0

  • 启用专用链接不会影响出站流量,流量仍会流经应用服务基础结构。

通过专用终结点的入站流量的先决条件

除了概要先决条件中的虚拟网络设置外,还需要有一个新的或现有的标准逻辑应用工作流,该工作流使用可接收请求的内置触发器启动。

例如,请求触发器在工作流上创建了一个终结点,可接收和处理来自其他调用方(包括工作流)的入站请求。 此终结点提供了一个 URL,可用于调用和触发工作流。 在本示例中,步骤继续使用请求触发器。

有关详细信息,请参阅使用 Azure 逻辑应用接收和响应入站 HTTP 请求

创建工作流

  1. 如果尚未创建,请创建一个基于单租户的逻辑应用和一个空白工作流。

  2. 设计器打开后,添加请求触发器作为工作流的第一步。

  3. 根据场景要求,添加想要在工作流中运行的其他操作。

  4. 完成后,保存工作流。

有关详细信息,请参阅在 Azure 逻辑应用中创建单租户逻辑应用工作流

复制终结点 URL

  1. 在工作流菜单上,选择“概述”。

  2. 在“概述”页,复制并保存“工作流 URL”,供以后使用 。

    若要触发工作流,请调用此 URL 或向其发送请求。

  3. 通过调用 URL 或向 URL 发送请求,确保 URL 正常工作。 可使用所需的任何工具来发送请求,例如 Postman。

读取专用终结点连接

  1. 在逻辑应用菜单的“设置”下,选择“网络” 。

  2. 在“网络”页上的“入站流量”卡上,选择“专用终结点” 。

  3. 在“专用终结点连接”中选择“添加” 。

  4. 在打开的“添加专用终结点”窗格中,提供所请求的有关终结点的信息。

    有关详细信息,请查看专用终结点属性

  5. Azure 成功预配专用终结点后,请重试调用工作流 URL。

    此时会收到一个预期的 403 Forbidden 错误,表示专用终结点已设置并正常工作。

  6. 若要确保连接正常工作,请在具有专用终结点的同一虚拟网络中创建虚拟机,然后尝试调用逻辑应用工作流。

使用虚拟网络集成设置出站流量

若要保护来自逻辑应用的出站流量,可将逻辑应用与虚拟网络集成。 首先,创建并测试一个示例工作流。 然后,可以设置虚拟网络集成。

通过虚拟网络集成的出站流量的注意事项

  • 设置虚拟网络集成只会影响出站流量。 若要保护继续使用应用服务共享终结点的入站流量,请查看通过专用终结点设置入站流量

  • 由于不能在分配后更改子网大小,因此请使用足够大的子网来容纳应用可能会达到的规模。 若要避免子网容量出现任何问题,请使用包含 64 个地址的 /26 子网。 如果创建子网是用于虚拟网络与 Azure 门户的集成,则子网大小最小必须为 /27

  • 要使 Azure 逻辑应用运行时正常工作,与后端存储的连接不能中断。 如果后端存储通过专用终结点暴露给虚拟网络,请确保打开以下端口:

    源端口 目标端口 Source 目标 协议 目的
    * 443 与标准逻辑应用集成的子网 存储帐户 TCP 存储帐户
    * 445 与标准逻辑应用集成的子网 存储帐户 TCP 服务器消息块 (SMB) 文件共享
  • 若要使 Azure 托管的托管连接器正常工作,则与托管 API 服务的连接不能间断。 通过虚拟网络集成,确保没有防火墙或网络安全策略阻止这些连接。 如果虚拟网络使用网络安全组 (NSG)、用户定义的路由表 (UDR) 或防火墙,请确保虚拟网络允许出站连接到相应区域中的所有托管连接器 IP 地址。 否则,Azure 托管连接器将不起作用。

有关详细信息,请参阅以下文档:

创建并测试工作流

  1. 如果尚未创建,请在 Azure 门户中创建一个基于单租户的逻辑应用和一个空白工作流。

  2. 设计器打开后,添加请求触发器作为工作流的第一步。

  3. 添加 HTTP 操作以调用无法通过 Internet 使用的内部服务,并使用专用 IP 地址(如 10.0.1.3)运行。

  4. 完成后,保存工作流。

  5. 从设计器中,手动运行工作流。

    HTTP 操作失败,因为工作流在云中运行并且无法访问你的内部服务,这是设计使然,也是意料中的。

设置虚拟网络集成

  1. 在 Azure 门户的逻辑应用资源菜单中的“设置”下,选择“网络”。

  2. 在“网络”窗格的“出站流量”卡片上,选择“VNet 集成”。

  3. 在“VNet 集成”窗格上,选择“添加 VNet”。

  4. 在“添加 VNet 集成”窗格上,选择连接到内部服务的订阅和虚拟网络。

    添加虚拟网络集成后,在“VNet 集成”窗格中,“全部路由”设置默认启用。 此设置将通过虚拟网络来路由所有出站流量。 启用此设置时,将忽略 WEBSITE_VNET_ROUTE_ALL 应用设置。

  5. 如果你将自己的域名服务器 (DNS) 用于虚拟网络,请将逻辑应用资源的 WEBSITE_DNS_SERVER 应用设置指定为 DNS 的 IP 地址。 如果你有辅助 DNS,请添加名为 WEBSITE_DNS_ALT_SERVER 的另一个应用设置,并将值也设置为 DNS 的 IP。

  6. Azure 成功预配虚拟网络集成后,尝试再次运行工作流。

    HTTP 操作现在成功运行。

后续步骤