Azure 虚拟机中 SQL Server 的安全注意事项
本文包括用于帮助与 Azure 虚拟机 (VM) 中的 SQL Server 实例建立安全访问的总体安全准则。
Azure 遵守多个行业法规和标准,使用户能够使用虚拟机中运行的 SQL Server 生成符合规定的解决方案。 有关 Azure 合规性的信息,请参阅 Azure 信任中心。
首先查看适用于 SQL Server 和 Azure VM 的安全最佳做法,然后查看本文了解具体应用于 Azure VM 上 SQL Server 的最佳做法。
若要了解有关 SQL Server VM 最佳做法的详细信息,请参阅本系列其他文章:清单、VM 大小、HADR 配置和收集基线。
清单
查看以下清单,大致了解文章其余部分更详细介绍的安全最佳做法。
SQL Server 特性和功能在数据级别提供安全性方法,并且是在基础结构级别为基于云的解决方案和混合解决方案实现深层防御的方法。 此外,借助 Azure 安全措施,可以加密敏感数据、防范虚拟机遭到病毒和恶意软件的侵害、保护网络流量、识别和检测威胁、满足合规要求,并提供单一的方法来管理和报告混合云中的任何安全需求。
- 使用 Microsoft Defender for Cloud 评估数据环境的安全态势,并采取措施来做出改进。 可以在混合工作负载中利用 Azure 高级威胁防护 (ATP) 等功能来改善安全评估并提供对风险做出反应的能力。 将 SQL Server VM 注册到 SQL IaaS 代理扩展可以在 Azure 门户的 SQL 虚拟机资源中显示 Azure 安全中心评估结果。
- 使用 Microsoft Defender for SQL 发现和缓解潜在的数据库漏洞,以及检测可能表示 SQL Server 实例和数据库层受到威胁的异常活动。
- 漏洞评估是 Microsoft Defender for SQL 的一部分,可以发现并帮助修正 SQL Server 环境面临的潜在风险。 它可让用户观察安全状态,并包含用于解决安全问题的可行步骤。
- Azure 顾问可分析资源配置和遥测使用情况,并推荐解决方案,有助于提高 Azure 资源的经济效益、性能、高可用性和安全性。 在虚拟机、资源组或订阅级别利用 Azure 顾问可以帮助识别和应用最佳做法来优化 Azure 部署。
- 当合规性与安全性政策要求使用加密密钥对数据进行端到端加密(包括加密临时磁盘,即本地附加的临时磁盘)时,可以使用 Azure 磁盘加密。
- 系统默认会使用 Azure 存储服务加密来静态加密托管磁盘,其中,加密密钥是 Azure 中的 Microsoft 托管密钥。
- 有关托管磁盘加密选项的比较,请查看托管磁盘加密比较图表
- 应在虚拟机上关闭管理端口 - 打开远程管理端口会导致 VM 面临基于 Internet 的攻击的严重风险。 此类攻击试图暴力破解凭据,来获取对计算机的管理员访问权限。
- 为 Azure 虚拟机启用实时 (JIT) 访问
- 通过远程桌面协议 (RDP) 使用 Azure Bastion。
- 使用 Azure 防火墙锁定端口并仅允许传送必要的应用程序流量。Azure 防火墙是一个托管的防火墙即服务 (FaaS),它根据来源 IP 地址授予/拒绝服务器访问权限。
- 使用网络安全组 (NSG) 筛选传入和传出 Azure 虚拟网络上的 Azure 资源的网络流量
- 利用应用程序安全组将端口筛选要求和功能类似的服务器(例如 Web 服务器和数据库服务器)分组到一起。
- 使用 VM 扩展来帮助实现反恶意软件、所需状态、威胁检测、预防和修正,以解决操作系统、计算机和网络级别的威胁:
- 来宾配置扩展在虚拟机内部执行审核和配置操作。
- 适用于 Windows 和 Linux 的网络观察程序代理虚拟机扩展可以监视网络性能、诊断和分析服务,从而可以启用 Azure 网络监视。
- 适用于 Windows 的 Microsoft Antimalware 扩展可帮助识别和删除病毒、间谍软件与其他恶意软件,并提供可配置的警报。
- 使用 Azure Policy 创建可应用于环境的业务规则。 Azure 策略通过将这些资源的属性与以 JSON 格式定义的规则进行比较来评估 Azure 资源。
有关安全最佳做法的详细信息,请参阅 SQL Server 安全最佳做法和保护 SQL Server。
计算机上的 Microsoft Defender for SQL
Microsoft Defender for Cloud 是一个统一的安全管理系统,旨在评估数据环境的安全态势,并提供对其进行改进的机会。 Microsoft Defender 为 Azure VM 上的 SQL Server 提供计算机上的 Microsoft Defender for SQL 保护。 使用 Microsoft Defender for SQL 发现和缓解潜在的数据库漏洞,并检测可能表示 SQL Server 实例和数据库层受到威胁的异常活动。
Microsoft Defender for SQL 具有以下优势:
- 漏洞评估可发现并帮助修正 SQL Server 环境面临的潜在风险。 它可让用户观察安全状态,并包含用于解决安全问题的可行步骤。
- 在 Microsoft Defender for Cloud 中使用安全评分。
- 有关更多详细信息,请查看当前可用的计算和数据建议列表。
- 将 SQL Server VM 注册到 SQL Server IaaS 代理扩展会向 Azure 门户中的 SQL 虚拟机资源提供 Microsoft Defender for SQL 建议。
门户管理
向 SQL IaaS 代理扩展注册 SQL Server VM 后,可以在 Azure 门户中使用 SQL 虚拟机资源配置许多安全设置,例如启用 Azure Key Vault 集成或 SQL 身份验证。
请参阅在门户中管理 SQL Server VM 了解详细信息。
Azure 顾问
Azure 顾问是个性化的云顾问程序,可帮助遵循最佳做法来优化 Azure 部署。 顾问可分析资源配置和遥测使用情况,并推荐解决方案,有助于提高 Azure 资源的经济效益、性能、高可用性和安全性。 Azure 顾问可在虚拟机、资源组或订阅级别进行评估。
Azure 密钥保管库集成
SQL Server 加密功能多种多样,包括透明数据加密 (TDE)、列级加密 (CLE) 和备份加密。 这些加密形式要求管理和存储用于加密的加密密钥。 Azure 密钥保管库服务专用于在一个高度可用的安全位置改进这些密钥的安全性和管理。 SQL Server 连接器使 SQL Server 能够使用 Azure 密钥保管库中的这些密钥。
考虑以下情况:
- Azure 密钥保管库将应用程序机密存储在集中式云位置,以安全地控制访问权限,并单独记录访问。
- 将自己的密钥引入 Azure 时,建议将机密和证书存储在 Azure 密钥保管库。
- Azure 磁盘加密使用 Azure 密钥保管库来控制和管理磁盘加密密钥和机密。
访问控制
使用 Azure 库映像创建 SQL Server 虚拟机时,可以使用“SQL Server 连接”选项来选择“本地(VM 内部)”、“专用(虚拟网络内部)”或“公共(Internet)”。
为了达到最佳安全性,请为方案选择最严格的选项。 例如,如果正在运行访问同一 VM 上的 SQL Server 的应用程序,则“本地”选项最安全。 如果正在运行需要访问 SQL Server 的 Azure 应用程序,则选择“专用”选项可确保与 SQL Server 的通信仅在指定的 Azure 虚拟网络内安全地进行。 如果需要使用“公共(Internet)”选项访问 SQL Server VM,请确保遵照本主题中的其他最佳做法,以减小受攻击面。
在门户中选择的选项使用 VM 网络安全组 (NSG) 上的入站安全规则来允许或拒绝发往虚拟机的网络流量。 可修改或创建新的入站 NSG 规则,允许到 SQL Server 端口(默认为 1433)的流量。 还可指定允许通过此端口进行通信的特定 IP 地址。
除了使用 NSG 规则限制网络流量外,还可以对虚拟机使用 Windows 防火墙。
如果通过经典部署模型使用终结点,不使用它们时,请删除虚拟机上的所有终结点。 有关在终结点上使用 ACL 的说明,请参阅管理终结点上的 ACL。 对于使用 Azure 资源管理器的 VM 来说,无需执行此操作。
请考虑针对 Azure 虚拟机中的 SQL Server 数据库引擎实例启用加密连接。 使用签名证书配置 SQL Server 实例。 有关详细信息,请参阅启用到数据库引擎的加密连接和连接字符串语法。
“保护网络连接或外围”时,请考虑以下事项:
- Azure 防火墙 - 一种有状态、托管的防火墙即服务 (FaaS),它基于原始 IP 地址授予/拒绝服务器访问,以保护网络资源。
- 网络安全组 (NSG) - 筛选传入和传出 Azure 虚拟网络上的 Azure 资源的网络流量
- 应用程序安全组 - 提供对具有类似端口筛选要求的服务器的分组,以及将具有类似功能的服务器分组在一起,例如 Web 服务器。
磁盘加密
托管磁盘提供服务器端加密和 Azure 磁盘加密。 服务器端加密可提供静态加密并保护数据,让组织能够信守所做出的安全性与合规性承诺。 Azure 磁盘加密使用 BitLocker 或 DM-Crypt 技术并与 Azure Key Vault 集成,可对 OS 磁盘和数据磁盘进行加密。
考虑以下情况:
- Azure 磁盘加密 - 使用适用于 Windows 和 Linux 虚拟机的 Azure 磁盘加密来加密虚拟机磁盘。
- 当合规性与安全性政策要求使用加密密钥对数据进行端到端加密(包括加密临时磁盘,即本地附加的临时磁盘)时,请使用 Azure 磁盘加密。
- Azure 磁盘加密 (ADE) 利用 Windows 的行业标准 BitLocker 功能和 Linux 的 DM-Crypt 功能,来提供 OS 和数据磁盘加密。
- 托管磁盘加密
- 系统默认会使用 Azure 存储服务加密来静态加密托管磁盘,其中,加密密钥是存储在 Azure 中的 Microsoft 托管密钥。
- Azure 托管磁盘中的数据使用 256 位 AES 加密(可用的最强大分组加密之一)以透明方式加密,且符合 FIPS 140-2 规范。
- 有关托管磁盘加密选项的比较,请查看托管磁盘加密比较图表。
受信任启动
部署第 2 代虚拟机时,可以选择启用受信任启动来防范高级攻击和持续性攻击方法。
采用受信任启动,你可以:
- 安全部署其启动加载程序、OS 内核和驱动程序已经过验证的虚拟机。
- 安全保护虚拟机中的密钥、证书和机密。
- 获取整个启动链的完整性的见解和置信度。
- 确保工作负载受信任且可验证。
在 Azure VM 上为 SQL Server 启用受信任启动时,当前不支持以下功能:
- Azure Site Recovery
- 超级磁盘
- 托管映像
- 嵌套虚拟化
管理帐户
希望攻击者难以猜测帐户名或密码。 使用以下技巧会有所帮助:
创建一个唯一的本地管理员帐户,不要命名为 Administrator。
对所有帐户使用复杂的强密码。 若要深入了解如何创建强密码,请参阅创建强密码一文。
默认情况下,Azure 在 SQL Server 虚拟机安装期间会选择 Windows 身份验证。 因此,会禁用 SA 登录名,并由安装程序分配密码。 建议不要使用或启用 SA 登录名。 如果必须使用 SQL 登录名,请使用以下策略之一:
创建一个名称唯一且具有 sysadmin 成员资格的 SQL 帐户。 可通过在预配期间启用 SQL 身份验证,从门户执行此操作。
提示
如果预配期间未启用 SQL 身份验证,则必须手动将身份验证模式更改为 SQL Server 和 Windows 身份验证模式。 有关详细信息,请参阅 更改服务器身份验证模式。
如果必须使用 SA 登录名,请在预配后启用该登录名,并分配新的强密码。
审核和报告
使用 Log Analytics 审核可记录事件,并将其写入到安全 Azure Blob 存储帐户中的审核日志。 Log Analytics 可用于破译审核日志的详细信息。 审核使你能够将数据保存到单独的存储帐户,并创建所选所有事件的审核线索。 你还可以利用针对审核日志的 Power BI,以获取有关数据的快速分析和见解,并提供法规符合性的视图。 若要详细了解 VM 和 Azure 级别的审核,请参阅 Azure 安全日志记录和审核。
虚拟机级别访问
关闭计算机上的管理端口 - 打开远程管理端口会使 VM 暴露在较高级别的 Internet 攻击风险之下。 此类攻击试图暴力破解凭据,来获取对计算机的管理员访问权限。
- 为 Azure 虚拟机启用实时 (JIT) 访问。
- 通过远程桌面协议 (RDP) 利用 Azure Bastion。
虚拟机扩展
Azure 虚拟机扩展是受信任的 Microsoft 扩展,可帮助解决特定需求和风险,如防病毒、恶意软件、威胁防护等。
- 来宾配置扩展
- 若要确保安全配置计算机的来宾内设置,请安装来宾配置扩展。
- 来宾内设置包括操作系统的配置、应用程序配置或状态以及环境设置。
- 安装后,来宾内策略将可用,如“应启用 Windows 攻击防护”。
- 网络流量数据收集代理
- Microsoft Defender for Cloud 使用 Microsoft 依赖项代理从 Azure 虚拟机收集网络流量数据。
- 该代理启用高级网络保护功能,如网络地图上的流量可视化、网络加固建议和特定网络威胁。
- 评估来自 Microsoft 的扩展来处理反恶意软件、所需状态、威胁检测、预防和修正,以解决操作系统、计算机和网络级别的威胁。
后续步骤
首先查看适用于 SQL Server 和 Azure VM 的安全最佳做法,然后查看本文了解具体应用于 Azure VM 上 SQL Server 的最佳做法。
若要了解与在 Azure VM 中运行 SQL Server 相关的其他主题,请参阅 Azure 虚拟机上的 SQL Server 概述。 如果对 SQL Server 虚拟机有任何疑问,请参阅常见问题解答。
有关详细信息,请参阅本最佳做法系列中的其他文章: