Azure 虚拟机中 SQL Server 的安全注意事项

适用于: Azure VM 上的 SQL Server

本主题包括总体安全指南,可帮助建立对 Azure 虚拟机 (VM) 中 SQL Server 实例的安全访问。

Azure 遵守多个行业法规和标准,使用户能够使用虚拟机中运行的 SQL Server 生成符合规定的解决方案。 有关 Azure 合规性的信息,请参阅 Azure 信任中心

首先查看适用于 SQL ServerAzure VM 的安全最佳做法,然后查看本文了解具体应用于 Azure VM 上 SQL Server 的最佳做法。

若要了解有关 SQL Server VM 最佳做法的详细信息,请参阅本系列其他文章:清单VM 大小HADR 配置收集基线

清单

查看以下清单,大致了解文章其余部分更详细介绍的安全最佳做法。

SQL Server 特性和功能在数据级别提供安全性方法,并且是在基础结构级别为基于云的解决方案和混合解决方案实现深层防御的方法。 此外,借助 Azure 安全措施,可以加密敏感数据、防范虚拟机遭到病毒和恶意软件的侵害、保护网络流量、识别和检测威胁、满足合规要求,并提供单一的方法来管理和报告混合云中的任何安全需求。

  • 使用 Microsoft Defender for Cloud 评估数据环境的安全态势,并采取措施来做出改进。 可以在混合工作负载中利用 Azure 高级威胁防护 (ATP) 等功能来改善安全评估并提供对风险做出反应的能力。 向 SQL IaaS 代理扩展注册 SQL Server VM 会在 Azure 门户的 SQL 虚拟机资源中显示 Microsoft Defender for Cloud 评估。
  • 利用 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 扩展来帮助实现反恶意软件、所需状态、威胁检测、预防和修正,以解决操作系统、计算机和网络级别的威胁:
  • 利用 Azure Policy 创建可应用于环境的业务规则。 Azure 策略通过将这些资源的属性与以 JSON 格式定义的规则进行比较来评估 Azure 资源。

Microsoft Defender for SQL

Microsoft Defender for SQL 启用 Microsoft Defender for Cloud 安全功能,例如漏洞评估和安全警报。 请参阅启用 Microsoft Defender for SQL 了解详细信息。

利用 Microsoft Defender for SQL 发现和缓解潜在的数据库漏洞,以及检测可能表示 SQL Server 实例和数据库层受到威胁的异常活动。 漏洞评估是 Microsoft Defender for SQL 的一项功能,可以发现并帮助修正 SQL Server 环境面临的潜在风险。 它可让用户观察安全状态,并包含用于解决安全问题的可行步骤。 将 SQL Server VM 注册到 SQL Server IaaS 代理扩展会向 Azure 门户中的 SQL 虚拟机资源提供 Microsoft Defender for SQL 建议。

门户管理

向 SQL IaaS 扩展注册 SQL Server VM 后,可以在 Azure 门户中使用 SQL 虚拟机资源配置许多安全设置,例如启用 Azure 密钥保管库集成或 SQL 身份验证。

此外,启用 Microsoft Defender for SQL 后,可以直接在 Azure 门户的 SQL 虚拟机资源中查看 Defender for Cloud 功能,例如漏洞评估和安全警报。

请参阅在门户中管理 SQL Server VM 了解详细信息。

Microsoft Defender for Cloud

Microsoft Defender for Cloud 是一个统一的安全管理系统,旨在评估数据环境的安全态势,并提供对其进行改进的机会。 Microsoft Defender for Cloud 授予混合云中所有资产的安全运行状况的综合视图。

  • 在 Microsoft Defender for Cloud 中使用安全评分
  • 有关更多详细信息,请查看当前可用的计算数据建议列表。
  • 向 SQL Server IaaS 代理扩展注册 SQL Server VM 会向 Azure 门户中的 SQL 虚拟机资源显示 Microsoft Defender for Cloud 建议。

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)”。

SQL Server 连接

为了达到最佳安全性,请为方案选择最严格的选项。 例如,如果正在运行访问同一 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 规范。
  • 有关托管磁盘加密选项的比较,请查看托管磁盘加密比较图表

管理帐户

希望攻击者难以猜测帐户名或密码。 使用以下技巧会有所帮助:

  • 创建一个唯一的本地管理员帐户,不要命名为 Administrator

  • 对所有帐户使用复杂的强密码。 若要深入了解如何创建强密码,请参阅创建强密码一文。

  • 默认情况下,Azure 在 SQL Server 虚拟机安装期间会选择 Windows 身份验证。 因此,会禁用 SA 登录名,并由安装程序分配密码。 建议不要使用或启用 SA 登录名。 如果必须使用 SQL 登录名,请使用以下策略之一:

    • 创建一个名称唯一且具有 sysadmin 成员资格的 SQL 帐户。 可通过在预配期间启用 SQL 身份验证,从门户执行此操作。

      提示

      如果预配期间未启用 SQL 身份验证,则必须手动将身份验证模式更改为 SQL Server 和 Windows 身份验证模式。 有关详细信息,请参阅 更改服务器身份验证模式

    • 如果必须使用 SA 登录名,请在预配后启用该登录名,并分配新的强密码。

注意

不支持使用 Azure Active Directory 或 Azure Active Directory 域服务连接到在 Azure 虚拟机 (VM) 上运行的 SQL Server 实例。 请改用 Active Directory 域帐户。

审核和报告

使用 Log Analytics 审核可记录事件,并将其写入到安全 Azure BLOB 存储帐户中的审核日志。 Log Analytics 可用于破译审核日志的详细信息。 审核使你能够将数据保存到单独的存储帐户,并创建所选所有事件的审核线索。 你还可以利用针对审核日志的 Power BI,以获取有关数据的快速分析和见解,并提供法规符合性的视图。 若要详细了解 VM 和 Azure 级别的审核,请参阅 Azure 安全日志记录和审核

虚拟机级别访问

关闭计算机上的管理端口 - 打开远程管理端口会使 VM 暴露在较高级别的 Internet 攻击风险之下。 此类攻击试图暴力破解凭据,来获取对计算机的管理员访问权限。

虚拟机扩展

Azure 虚拟机扩展是受信任的 Microsoft 扩展,可帮助解决特定需求和风险,如防病毒、恶意软件、威胁防护等。

  • 来宾配置扩展
    • 若要确保安全配置计算机的来宾内设置,请安装来宾配置扩展。
    • 来宾内设置包括操作系统的配置、应用程序配置或状态以及环境设置。
    • 安装后,来宾内策略将可用,如“应启用 Windows 攻击防护”。
  • 网络流量数据收集代理
    • Microsoft Defender for Cloud 使用 Microsoft 依赖项代理从 Azure 虚拟机收集网络流量数据。
    • 该代理启用高级网络保护功能,如网络地图上的流量可视化、网络加固建议和特定网络威胁。
  • 评估来自 Microsoft 的扩展来处理反恶意软件、所需状态、威胁检测、预防和修正,以解决操作系统、计算机和网络级别的威胁。

后续步骤

首先查看适用于 SQL ServerAzure VM 的安全最佳做法,然后查看本文了解具体应用于 Azure VM 上 SQL Server 的最佳做法。

若要了解与在 Azure VM 中运行 SQL Server 相关的其他主题,请参阅 Azure 虚拟机上的 SQL Server 概述。 如果对 SQL Server 虚拟机有任何疑问,请参阅常见问题解答

有关详细信息,请参阅本最佳做法系列中的其他文章: