从任何地方访问 Azure SQL 数据库

use*_*502 3 sql-server azure

我们为 Motorsport 开发了一个基于 SQL 的应用程序,我们的一些客户正在使用 Azure 来保存数据库。问题是他们周游世界参加比赛,因此需要使用他们拥有的任何 Internet 连接访问数据库,并且无法在防火墙规则中预定义 IP 地址。是否可以有效地禁用 Azure 防火墙,以便他们只需要向 SQL 服务器输入登录凭据,而不必在特定的 IP 地址范围内?

鉴于 SQL 数据库的整个想法是在任何地方都可以访问,很难相信您必须根据 IP 地址定义访问,但我找不到任何其他暗示的东西!

Eag*_*Dev 7

在向您提供有关安全性的模式建议之前,回答您的问题,是的,您可以使用以下 T-SQL 允许所有入站到您的 Azure SQL 数据库

EXECUTE sp_set_database_firewall_rule N'Allow Azure', '0.0.0.0', '255.255.255.255';  
Run Code Online (Sandbox Code Playgroud)

上面的范围允许所有。这基本上意味着这个范围可以通过防火墙。这是针对数据库级别的防火墙规则。对于逻辑服务器级别的规则,只需设置如下规则即可

在此处输入图片说明

如果未设置数据库级防火墙规则,则首先应用逻辑服务器级规则。

首先,从安全角度来看,通过 Internet 直接访问您的数据库是一种非常糟糕的做法。企业/最终用户通常没有在安全意识方面接受过良好的培训,而且他们的计算机很可能遭到入侵。您应该考虑采取一些方法来提高安全性:

  • 使用 Azure 中的内置 Azure SQL 数据库安全功能(例如透明数据加密 (TDE))始终对数据库进行加密。如果可能,请使用 Azure Key Vault 存储加密主密钥,为“整个”世界添加更多加密层。另一个功能是动态数据屏蔽,但我认为它没有用,因为您允许数据​​库访问级别。当然,屏蔽一些字段是值得考虑的。另外,启用威胁检测以监控是否有任何异常查询(例如 SQL 注入)。
  • 与 Azure Active Directory 集成以监控访问身份。可以监视和通知通过 Azure AD 身份验证的每个访问。在 Azure AD 中,查看条件访问策略以了解它是否适​​用于您的业务用户。说所有商业用户通常只前往一个国家/地区列表,或者他们使用受管理的计算机。Azure AD (Premium) 还为您提供了登录风险功能,该功能结合了分析和机器学习来确定登录是否具有潜在风险(来自未知人员)。如果将 Azure AD 视为一个选项,并且功能更强大,请考虑具有多重身份验证选项的 Azure AD Universal。
  • 建立 Azure VNET,然后将点到站点 (P2S) VPN 配置到 Azure SQL 数据库。幸运的是,最近 Microsoft 宣布能够在给定 VNET 内控制对 Azure SQL 数据库的入站。设置 P2S VPN 后,给您的企业用户证书。需要在业务用户的笔记本电脑上安装此类证书,然后才能连接到 VNET。无法访问其计算机的攻击者无法连接到您的 Azure SQL 数据库。
  • 添加一个应用程序层(例如 ASP.NET)和登录页面,让您的业务用户从此 Web 应用程序访问。这可能会增加开发工作,但这至少可以帮助消除对数据库连接字符串的一些直接攻击,例如蛮力。在应用中,处理SQL查询以减少直接SQL注入。这种方式需要深入了解开发。

如果财务预算有限,我强烈建议您先应用 Azure AD 和 VNET。以下是成本草图:

  • Azure VPN 网关:29.2 美元/月(0.04 美元/小时 * 730)。基本计划就够了。该计划最多支持 128 个 P2S 连接。如果您的企业用户数大于 128,只需创建一个新的 VPN 网关。
  • Azure AD:如果您的目标是免费计划,您最多可以存储 500,000 个用户。如果您喜欢使用条件访问和报告,则需要为高级 P1 计划支付 6 美元/用户/月
  • Azure SQL 数据库审计和威胁检测:15 美元/逻辑服务器/月。如果启用了审计,您需要支付 Blob 存储费用,但 Blob 的成本应该不是真正的问题。
  • Azure 应用服务:如果添加应用层。小型计划(基本或标准)的费用约为每月 60-70 美元。成本还包括开发和部署工作。

我在这里所说的可能会增加对构建的努力和成本的更多关注。好吧,我会把这个决定留给你考虑。只有一件事,如果发生事件,请考虑数据泄露和您的商业声誉。成本将远高于实施。