如何将安全存储帐户与 Azure Functions 配合使用
本文介绍如何将函数应用连接到安全存储帐户。 有关如何创建具有入站和出站访问限制的函数应用的深入教程,请参阅与虚拟网络集成教程。 若要详细了解 Azure Functions 和网络,请参阅 Azure Functions 网络选项。
将存储帐户限制到虚拟网络中
创建函数应用时,必须创建新的存储帐户或关联到现有存储帐户。 目前,仅 Azure 门户、ARM 模板部署和 Bicep 部署支持使用现有的安全存储帐户创建函数应用。
注意
专用(应用服务)计划和弹性高级计划的所有层都支持安全存储帐户。 Flex 消耗计划也支持它们。 消耗计划不支持虚拟网络。
有关存储帐户的所有限制的列表,请参阅存储帐户要求。
重要
Flex 消耗计划目前为预览版。
在创建函数应用期间保护存储
可以创建一个函数应用,并在虚拟网络后面创建受保护的新存储帐户。 以下部分展示了如何通过使用 Azure 门户或使用部署模板来创建这些资源。
完成“在高级计划中创建函数应用程序”中的步骤。 虚拟网络教程的此部分介绍如何创建通过专用终结点连接到存储的函数应用。
注意
在 Azure 门户中创建函数应用时,还可以在“存储”选项卡中选择现有的安全存储帐户。但是,必须在函数应用上配置适当的网络,以便该应用可以通过用于保护存储帐户的虚拟网络进行连接。 如果无权配置网络或尚未完全准备好网络,请在“网络”选项卡中选择“创建后配置网络”。可以在门户的“设置”>“网络”下为新的函数应用程序配置网络。
保护现有函数应用的存储
拥有现有函数应用时,可以直接在应用程序正在使用的存储帐户上配置网络。 然而,此过程会导致函数应用在配置网络时和函数应用重启时关闭。
为了充分缩短停机时间,可以将现有的存储帐户换成新的安全存储帐户。
1.启用虚拟网络集成
作为先决条件,需要为函数应用启用虚拟网络集成:
选择存储帐户未启用服务终结点或专用终结点的函数应用。
为函数应用启用虚拟网络集成。
2.创建安全存储帐户
为函数应用设置安全存储帐户:
创建第二个存储帐户。 此存储帐户是函数应用要使用的安全存储帐户,而不是不受保护的原存储帐户。 还可以使用 Functions 尚未使用的现有存储帐户。
保存此存储帐户的连接字符串,供以后使用。
在新的存储帐户中创建文件共享。 为方便起见,可以使用原始存储帐户中的文件共享名。 否则,如果使用新的文件共享名,则必须更新应用设置。
通过以下方式之一保护新的存储帐户:
创建专用终结点。 设置专用终结点连接时,请为
file
和blob
子资源创建专用终结点。 对于 Durable Functions,还必须使queue
和table
子资源可以通过专用终结点访问。 如果使用自定义或本地域名系统 (DNS) 服务器,请配置 DNS 服务器以解析为新的专用终结点。将流量限制为特定子网。 确保函数应用与允许的子网相集成,且该子网具有
Microsoft.Storage
的服务终结点。
将文件和 blob 内容从函数应用使用的当前存储帐户复制到新的安全存储帐户和文件共享。 AzCopy 和 Azure 存储资源管理器是常见方法。 如果使用 Azure 存储资源管理器,可能需要允许客户端 IP 地址访问存储帐户的防火墙。
现在,你已准备好将函数应用配置为与新的安全存储帐户通信。
3.启用应用程序和配置路由
现在便可将函数应用的流量路由至经过虚拟网络:
启用应用程序路由将应用的流量路由到虚拟网络:
在函数应用中,展开“设置”,然后选择“网络”。 在“网络”页的“出站流量配置”下,选择与虚拟网络集成关联的子网。
在新页的“应用程序路由”下,选择“出站 Internet 流量”。
启用内容共享路由,使函数应用通过其虚拟网络与新存储帐户通信。 在与上一步相同的页面中,在“配置路由”下选择“内容存储”。
注意
路由到同一计划中多个函数应用共享的存储帐户中的内容共享时,请务必小心。 有关详细信息,请参阅“存储注意事项”一文中的通过虚拟网络实现的一致路由。
4.更新应用程序设置
最后,需要更新应用程序设置,以指向新的安全存储帐户:
在函数应用中,展开“设置”,然后选择“环境变量”。
在“应用设置”选项卡中,更新以下设置,方法是选择每个设置、对其进行编辑,然后选择“应用”:
设置名称 值 注释 AzureWebJobsStorage
存储连接字符串 使用前面保存的新安全存储帐户的连接字符串。 WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
存储连接字符串 使用前面保存的新安全存储帐户的连接字符串。 WEBSITE_CONTENTSHARE
文件共享 使用在项目部署文件所在的安全存储帐户中创建的文件共享的名称。 选择“应用”,然后选择“确认”以保存函数应用中的新应用程序设置。
函数应用即会重启。
函数应用完成重启后,它会连接到安全存储帐户。