Azure SQL 槽 VNet 的 Azure 函数连接字符串

Posted

技术标签:

【中文标题】Azure SQL 槽 VNet 的 Azure 函数连接字符串【英文标题】:Azure function connectionstring for Azure SQL trough VNet 【发布时间】:2018-05-29 01:48:56 【问题描述】:

我想知道如何从我的 Azure Function App 以安全的方式访问我的 Azure SQL 数据库,而不是通过公共 Internet。

我有一个使用 VNET/网关集成的功能应用程序(功能应用程序计划 - 标准层)。我已经为 Microsoft.SQL 指定了一个服务 EndPoint ...我在 Azure SQL 数据库上启用了虚拟网络访问 ....

当 Azure 函数尝试连接到 sql db 时,它使用“正常”连接字符串,其中包含 sql 数据库服务器名称作为 dns 标签,然后我收到错误,我的 ip 地址不允许访问。 ip 地址是 Azure 函数应用的出站 IP 地址。

我认为此错误意味着函数应用正在尝试通过公共 Internet 连接到 Azure SQL 数据库。这个想法是,这个请求应该通过 VNet 到达 Azure SQL 数据库。

我的猜测是连接字符串应该不同。有什么建议吗?

【问题讨论】:

您可以使用 VNET 集成简单地创建从您的函数到虚拟网络的点到站点专用 *** 连接:codehollow.com/2016/12/… 安德烈斯,感谢您的出色指点。这有帮助! 【参考方案1】:

当 Azure 函数尝试连接到 sql db 时,它使用 'normal' 连接字符串,包括 sql 数据库服务器名称 作为 dns 标签,然后我收到我的 ip 地址不允许的错误 访问。

当我们尝试连接sql数据库时,网络流量会通过互联网。 因为 Azure 服务资源可以保护到您的虚拟网络。将服务资源保护到虚拟网络可通过完全消除对资源的公共 Internet 访问仅允许来自您的虚拟网络的流量来提高安全性。

这样,Internet 网络流量将无法访问此服务(SQL 数据库):

如果你想连接Azure函数应用和Azure SQL数据库,我们应该在Azure Vnet中部署Azure函数应用,我们应该使用应用服务环境来部署它。

更多关于应用服务环境的信息,请参考这个article。

【讨论】:

谢谢 Jason,是的,这正是我正在处理的场景。我将应用服务计划标准与 Azure 功能应用程序的网关一起使用。在这种情况下,流量会通过网关吗?然后的问题是.. 要使用的适当连接字符串是什么,或者.. 如何从函数应用程序连接到 Sql 数据库。 感谢您的回复更新。不幸的是,ASE 的价格一开始就很高。对于我们的用例,这不是一个选项。 对不起@jason-ye-msft,所以这意味着在这种情况下允许访问 Azure SQL 的唯一方法是在 ASE 中部署函数应用程序?谢谢!

以上是关于Azure SQL 槽 VNet 的 Azure 函数连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

Azure vNet

Azure vNet

Azure *** - 没有连接到 VNET

Azure Vnet Blob 存储

VNET 上的 Azure Functions 无法与本地资源通信

用于 postgresql 的 Azure 专用终结点无法与多个 Vnet 一起使用