将 Azure 应用服务连接到 Azure SQL Server DB

将 Azure 应用服务连接到 Azure SQL Server DB

我正在尝试安全地让 Azure 应用服务连接到 Azure SQL Server 数据库。

之前,为了“让它正常工作”,我将 SQL Server 防火墙打开到互联网。应用服务从应用服务获取连接字符串,并使用它来连接到 .database.windows.net。

到目前为止,我只能看到两种可能性:

1) 特别让 App Service 的出站 IP 通过 SQL Server 的防火墙。这很危险,因为 IP 可能会改变,每次发生这种情况时我都必须更改它们。

2)将 SQL Server 和 App Service 放入 vnet 中。

我尝试了 2),但有点失败了。我在 SQL Server 防火墙设置中将我的虚拟网络添加到允许的虚拟网络,并拒绝互联网连接。
然后我将应用服务从 B1 升级到 S1,因为显然我的 11 欧元应用服务不允许在虚拟网络上使用(这也是我在这里寻找其他解决方案的原因)。
这以前有效,但现在我改变了一些东西来尝试一些东西,改回来后它就不再起作用了。我不确定为什么,设置是一样的。

所以我一开始的问题还在这里:

如何正确、安全地将应用服务连接到 SQL Server DB?

更新:

因此我暂时采用 vnet/endpoint 解决方案,但它不起作用。

当前架构

  • 我在没有 NSG 的 vnet 子网中拥有 WebAPI,我可以从互联网(swagger)访问它。
  • vnet 已为该子网激活服务端点 Microsoft.Sql。
  • WebAPI 尝试使用连接字符串连接到 SQL Server。一旦我学会了这一点,我就会将其更改为 Azure AD。现在必须让网络正常工作。
  • SQL Server 防火墙:
    • 拒绝公众访问
    • 允许 Azure 资源访问
    • 允许通过子网访问。服务端点状态显示已启用。

SQL Server 防火墙设置:

防火墙设置

答案1

您实际上已经了解了有关此问题的选项:

  1. 使用“允许访问所有 Azure 服务”复选框允许访问,不推荐
  2. 允许访问你的 Web 应用的出站 IP 集
  3. 将您的 Web 应用加入到 vNet,并使用服务端点将 SQL 锁定到该 vNet

除非您想查看应用服务环境(它是在您的 vNet 中部署的单一租户解决方案(并且非常昂贵),否则这些就是您的选择。

我还建议您考虑使用托管标识针对 SQL 数据库对 Web 应用程序进行身份验证,而不是使用连接字符串。

相关内容