【发布时间】:2018-07-12 14:31:34
【问题描述】:
出于安全考虑,我计划不允许 Azure 服务与 Azure 服务进行通信,但只允许它使用的服务。
例如,我有一些使用 Azure SQL 数据库的 Web 应用程序。我应该只在 Azure SQL 服务器防火墙中添加 Azure Web Apps 的出站 IP 地址吗?
还是我需要做点别的?
【问题讨论】:
标签: azure azure-sql-database azure-web-app-service
出于安全考虑,我计划不允许 Azure 服务与 Azure 服务进行通信,但只允许它使用的服务。
例如,我有一些使用 Azure SQL 数据库的 Web 应用程序。我应该只在 Azure SQL 服务器防火墙中添加 Azure Web Apps 的出站 IP 地址吗?
还是我需要做点别的?
【问题讨论】:
标签: azure azure-sql-database azure-web-app-service
这并不像应该的那么容易。 SQL Azure 不是为虚拟网络友好而设计的,因此您唯一的选择是“允许所有 Azure 服务”或硬编码 IP。但是,除非您的 Web 应用程序具有静态 IP,否则如果不为获取 IP 地址更改的数据库编写自定义更新程序,这将是不可能的。
您可以在 VM 上安装 SQL 服务器并使用虚拟专用网络,否则,请确保登录凭据是安全的,并接受来自任何人的 Azure 客户端都可能尝试连接到您的数据库服务器的事实。
【讨论】:
锁定 SQL 数据库的最佳方法是使用 AAD 集成和Managed Service Identities。 Azure 将为您的应用程序预配 AAD 身份,并且只有在该应用程序中运行的代码才能为该身份生成访问令牌。然后您可以将其配置为AAD user in your SQL Server。
这具有从应用程序中删除密码的(大)额外好处,因此您不必使用客户端密码或 SQL 登录名/密码来配置您的应用程序。
您还可以运行 App on a VNet,并将 SQL 防火墙配置为仅允许使用 Virtual Network service Endpoints For Azure SQL Database 从该 VNet 进行访问。
或者使用更新更好的Private Link for Azure SQL Database。
【讨论】:
在这种情况下可以考虑的一些保护与 sql 数据库连接的方法是 -
正如您所提到的,您已经在考虑配置防火墙以将允许的 IP 地址列入白名单。防火墙可以在sql server级别和数据库级别进行配置(我们可以使用SSMS在数据库级别配置防火墙)。
我们可以加密数据。当然,这将是静态加密。好消息是连接到数据库的应用程序无需更改即可查询加密数据。
第三种方式是传统方式(即使我们没有使用 azure db),我们将通过创建用户/角色/权限来防止未经授权的访问。
我发现 Azure db 提供的一个非常好的功能是威胁检测功能。如果您打开它,我们将收到有关当前数据库/服务器设置可能存在的漏洞的通知。还有我们可以在哪里进行改进以解决这些问题。
【讨论】:
【讨论】:
总之是的。
您可以通过从 Web 应用程序创建 vnet 连接并为 SQL 创建服务端点来提高安全性。我不确定这是否可行,但值得一试。
【讨论】: