如何在不对存储帐户启用 public 访问的情况下将 Azure 存储帐户连接到逻辑应用程序?

How to connect Azure storage account to Logic apps without enabling public access on storage account?

有人知道如何使用逻辑应用程序连接器和触发器连接到 Azure blob 存储吗?我不想在我的存储帐户上授予 public 访问权限。如果我允许 public 访问,它工作正常,但是当我将访问限制为仅选定的 IP 时,它停止工作并且我无法连接到存储帐户。我附上了截图。

error message

首先,确保您已允许 所有 相关 IP 地址。查找您所在地区 here 的所有出站地址。

其次,我要指出的是 - 正如您在该页面上看到的那样 - 所有逻辑应用程序,无论是租户还是订阅,都使用相同的出站 IP 地址。因此,虽然您确实通过仅将那些列入白名单来创建限制,但仍然存在您可能会或可能不会接受的安全漏洞。

您还可以考虑将逻辑应用程序部署到 integrated service environment,它与 VNET 集成,您还可以将存储帐户连接到该 VNET。

对于这个问题,我建议你使用Frank在他的回答中提到的集成服务环境。但是这里我提供了一些更详细的步骤供大家参考。

1. Create a virtual network 并确保它至少有 4 个子网,您只需单击存储帐户中的 "Add new virtual network" 按钮即可 "Firewalls and virtual networks" 选项卡。 如果您在您的存储帐户 "Firewalls and virtual networks" 中创建虚拟网络,您需要转到新的虚拟网络并添加三个子网以确保它至少有 4 个子网(如下图所示),然后返回您的存储account "Firewall" 选项卡,再次添加虚拟网络(因为添加三个子网后可能会丢失)。

2.然后,我们需要创建一个集成服务环境,在创建页面下方选择刚才创建的虚拟网络。

创建时间会比较长,我花了四个多小时才创建集成服务环境。

3.创建ISE后,我们需要创建逻辑应用,选择创建逻辑应用时创建的ISE。

4. 等待大约20分钟,因为ISE即使创建成功也需要一些时间才能准备就绪。然后在您的逻辑应用中,添加带有 "ISE" 图标 的 "Azure blob storage" 连接器

5. 添加 "create blob" 操作,它会要求您创建连接,像以前一样创建连接,它会生成一个 API 逻辑应用的同一资源组中的连接。 等待几分钟,直到您可以单击并打开 API 连接,因为这种 API 连接(使用 ISE)需要更多时间才能准备就绪。否则,您将在逻辑应用程序 "create blob" 操作中看到类似 "can not find the api azureblob...." 的文本。

6. 现在我们可以在"create blob" 操作中看到存储中的项目。

也可以使用服务端点或专用端点从标准逻辑应用程序连接到存储帐户,这可能是比使用 ISE 更好的解决方案,后者非常昂贵。

article 解释了挑战,以及如何通过服务端点和专用端点设置标准逻辑应用程序和存储帐户之间的连接。