Azure VM 上的SQL Server
本文包括有助于建立对Azure虚拟机(VM)中SQL Server实例的安全访问的总体安全准则。
Azure符合多个行业法规和标准,这些法规和标准使你能够生成一个合规的解决方案,并在虚拟机中运行SQL Server。 有关符合Azure法规的信息,请参阅 Azure 信任中心。
首先查看 SQL Server 和 Azure VMs 的安全最佳做法,然后查看本文,了解专门适用于 Azure VMs 上的 SQL Server 的最佳做法。
若要详细了解 SQL Server VM 最佳做法, 请参阅本系列中的其他文章:Checklist、VM size、HADR 配置和 Collect 基线。
清单
查看以下清单,大致了解文章其余部分更详细介绍的安全最佳做法。
SQL Server特性和功能提供了在数据库级别保护数据的方法,这些数据可与基础结构级别的安全功能相结合。 总之,这些功能为基于云和混合的解决方案在基础结构级别提供了纵深防御。 此外,通过Azure安全措施,可以加密敏感数据,保护虚拟机免受病毒和恶意软件的侵害,保护网络流量,识别和检测威胁,满足合规性要求,并提供单一方法来管理和报告混合云中的任何安全需求。
- 使用 Microsoft Defender for Cloud 评估和采取措施,改善数据环境的安全状况。 可以在混合工作负荷中使用 Azure Advanced Threat Protection (ATP) 等功能来改进安全评估,并能够应对风险。 将 SQL Server 虚拟机注册到 SQL IaaS 代理扩展后,可以在 Azure 门户的 SQL 虚拟机资源中查看 Microsoft Defender for Cloud 的评估。
- 使用 Microsoft Defender for SQL发现和缓解潜在的数据库漏洞,并检测可能指示SQL Server实例和数据库层威胁的异常活动。
- Vulnerability Assessment 是 Microsoft Defender for SQL的一部分,可发现并帮助修正 SQL Server 环境的潜在风险。 它可让用户观察安全状态,并包含用于解决安全问题的可行步骤。
- 如果使用的是 2022 SQL Server,请考虑使用 Microsoft Entra 身份验证连接到SQL Server实例。
- Azure Advisor分析资源配置和使用情况遥测数据,然后建议可帮助你提高Azure资源的成本效益、性能、高可用性和安全性的解决方案。 使用虚拟机、资源组或订阅级别的Azure Advisor来帮助识别和应用最佳做法来优化Azure部署。
- 当您的合规和安全需求要求您对数据进行端到端加密时,请使用Azure Disk Encryption,包括使用您的加密密钥对临时(本地附加的临时)磁盘进行加密。
- 默认情况下,Managed Disks 的静态数据使用 Azure 存储服务加密,加密密钥由 Microsoft 管理并存储在 Azure 中。
- 有关托管磁盘加密选项的比较,请查看 托管磁盘加密比较图表。
- 应在虚拟机上关闭管理端口 - 打开远程管理端口会导致 VM 面临基于 Internet 的攻击的严重风险。 此类攻击试图暴力破解凭据,来获取对计算机的管理员访问权限。
- 为Azure虚拟机启用 实时 (JIT) 访问。
- 通过 Remote Desktop 协议(RDP)使用 Azure Bastion。
- 使用 Azure Firewall 锁定端口,只允许必要的应用流量。这种托管防火墙即服务(FaaS)根据原始 IP 地址授予或拒绝服务器访问权限。
- 使用网络安全组(NSG)筛选进出 Azure 虚拟网络中 Azure 资源的网络流量。
- 使用应用程序安全组将端口筛选要求和功能类似的服务器(例如 Web 服务器和数据库服务器)分组到一起。
- 使用 VM 扩展来帮助实现反恶意软件、所需状态、威胁检测、预防和修正,以解决操作系统、计算机和网络级别的威胁:
- 来宾配置扩展在虚拟机内部执行审核和配置操作。
- Network Watcher 代理虚拟机扩展适用于 Windows 和 Linux,用于监视网络性能、诊断和分析服务,并允许监视 Azure 网络。
Microsoft Windows ,以帮助识别和删除病毒、间谍软件和其他恶意软件,并提供可配置的警报。
- 使用 Azure Policy 创建可应用于环境的业务规则。 Azure策略通过将这些资源的属性与 JSON 格式定义的规则进行比较来评估Azure资源。
- 将备份还原视为高风险操作,且切勿从不受信任的来源还原备份。
有关安全最佳做法的详细信息,请参阅 SQL Server 安全最佳做法和 securing SQL Server。
计算机上 SQL 的Microsoft Defender
Microsoft Defender for Cloud是一种统一的安全管理系统,旨在评估和提供改善数据环境安全状况的机会。 Microsoft Defender 为 Azure 虚拟机上的 SQL Server 提供 Microsoft Defender for SQL on machines 保护。 使用 Microsoft Defender for SQL 来发现和缓解潜在的数据库安全漏洞,并检测可能表明 SQL Server 实例和数据库层受到威胁的异常活动。
SQL Microsoft Defender具有以下优势:
- Vulnerability Assessments可以发现并帮助修正SQL Server环境的潜在风险。 它可让用户观察安全状态,并包含用于解决安全问题的可行步骤。
- 在Microsoft Defender for Cloud中使用 security score。
- 有关更多详细信息,请查看当前可用的计算和数据建议列表。
- 将 SQL Server VM 注册到 SQL Server IaaS 代理扩展后,Azure 门户中的 SQL 虚拟机资源将显示 Microsoft Defender for SQL 的建议。
门户管理
使用 SQL IaaS 代理扩展注册 SQL Server VM 后,可以使用Azure门户中的 SQL 虚拟机资源配置许多安全设置,例如启用Azure Key Vault集成或 SQL 身份验证。
此外,在为计算机上的 SQL 启用 Microsoft Defender后可以直接在 Azure SQL 虚拟机资源中查看Defender for Cloud功能,例如漏洞评估和安全警报。
有关详细信息,请参阅门户中的 Manage SQL Server VM。
Microsoft Entra身份验证
从 SQL Server 2022 开始,可以通过 Microsoft Entra ID(formerly Azure Active Directory)支持的以下任何身份验证方法连接到 SQL Server:
- Password使用Microsoft Entra凭据提供身份验证
- Universal with MFA 增加了多因素身份验证
- Integrated 使用诸如 Active Directory Federation Services(ADFS)这样的联合身份验证提供程序来启用单一登录(SSO)体验。
- Service Principal 启用来自Azure应用程序的身份验证
- 托管身份允许通过分配了 Microsoft Entra 身份的应用程序进行身份验证
若要开始,请查看 为您的 SQL Server VM 配置 Microsoft Entra 身份验证。
Azure 顾问
Azure Advisor是一位个性化的云顾问,可帮助你遵循最佳做法来优化Azure部署。 Azure Advisor分析资源配置和使用情况遥测数据,然后推荐有助于提高Azure资源的成本效益、性能、高可用性和安全性的解决方案。 Azure Advisor可以在虚拟机、资源组或订阅级别进行评估。
Azure Key Vault集成
有多个SQL Server加密功能,例如透明数据加密(TDE)、列级加密(CLE)和备份加密。 这些加密形式要求管理和存储用于加密的加密密钥。
考虑以下情况:
- Azure Key Vault将应用程序机密存储在集中式云位置,以安全地控制访问权限和单独的访问日志记录。
- 将自己的密钥引入Azure时,建议将机密和证书存储在 Azure Key Vault 中。
- Azure Disk Encryption使用 Azure Key Vault 来控制和管理磁盘加密密钥和机密。
访问控制
使用 Azure 镜像库创建 SQL Server 虚拟机时,SQL Server Connectivity 选项提供 Local(在 VM 内部)、Private(在虚拟网络内) 或 Public(互联网)。
为了达到最佳安全性,请为方案选择最严格的选项。 例如,如果要在同一 VM 上运行访问SQL Server的应用程序,则 Local 是最安全的选择。 如果运行的Azure应用程序需要访问SQL Server,则Private仅在指定的Azure虚拟网络内保护与SQL Server的通信。 如果需要Public(互联网)访问 SQL Server VM,请确保遵循本主题中的其他最佳做法以减少攻击面。
在门户中选择的选项使用 VM 网络安全组 (NSG) 上的入站安全规则来允许或拒绝发往虚拟机的网络流量。 可以修改或创建新的入站 NSG 规则,以允许流量流向SQL Server端口(默认为 1433)。 还可以指定允许通过此端口进行通信的 IP 地址。
除了用于限制网络流量的 NSG 规则外,还可以在虚拟机上使用Windows防火墙。
如果您对经典部署模型使用终结点,请删除虚拟机上不使用的终结点。 有关在终结点上使用 ACL 的说明,请参阅管理终结点上的 ACL。 对于使用Azure Resource Manager的 VM 来说,这不是必需的。
请考虑为Azure虚拟机中SQL Server Database Engine实例启用加密连接。 使用签名证书配置SQL Server实例。 有关详细信息,请参阅 Enable Encrypted Connections to the Database Engine and Connection String Syntax。
“保护网络连接或外围”时,请考虑以下事项:
- Azure Firewall:一种有状态且托管的防火墙即服务(FaaS),基于发起的 IP 地址授予/拒绝服务器访问权限,以保护网络资源。
- Network 安全组(NSG):控制 Azure 虚拟网络上 Azure 资源的网络通信。
- 应用程序安全组:提供具有类似端口筛选要求的服务器的分组,并将具有类似功能(如 Web 服务器)的服务器组合在一起。
磁盘加密
托管磁盘提供服务器端加密和Azure Disk Encryption。 服务器端加密可提供静态加密并保护数据,让组织能够信守所做出的安全性与合规性承诺。 Azure Disk Encryption使用 BitLocker 或 DM-Crypt 技术,并与 Azure Key Vault 集成以加密 OS 和数据磁盘。
考虑以下情况:
-
Azure Disk Encryption对Windows和 Linux 虚拟机使用Azure Disk Encryption加密虚拟机磁盘。
- 如果合规性和安全要求要求使用加密密钥(包括临时(本地附加的临时)磁盘的加密,请使用 Azure 磁盘加密来端到端加密数据。
- Azure Disk Encryption(ADE)利用Windows的行业标准 BitLocker 功能和 Linux DM-Crypt 功能来提供 OS 和数据磁盘加密。
- 托管磁盘加密
- 默认情况下,Managed Disks 在静置状态下使用 Azure Storage 服务加密进行加密,加密密钥是由微软管理并存储在 Azure 中的密钥。
- Azure托管磁盘中的数据使用 256 位 AES 加密(可用的最强块加密之一)以透明方式加密,并且符合 FIPS 140-2 标准。
- 有关托管磁盘加密选项的比较,请查看 托管磁盘加密比较图表。
受信任启动
部署第 2 代虚拟机时,可以选择启用受信任启动来防范高级攻击和持续性攻击方法。
采用受信任启动,可以:
- 安全部署其启动加载程序、OS 内核和驱动程序已经过验证的虚拟机。
- 安全保护虚拟机中的密钥、证书和机密。
- 获取整个启动链的完整性的见解和置信度。
- 确保工作负载受信任且可验证。
为 Azure VM 上的SQL Server启用受信任的启动时,当前不支持以下功能:
- Azure Site Recovery
- Ultra Disks
- 托管映像
- 嵌套虚拟化
管理帐户
希望攻击者难以猜测帐户名或密码。 使用以下技巧会有所帮助:
创建未命名为 管理员的唯一本地管理员帐户。
对所有帐户使用复杂的强密码。 有关如何创建强密码的详细信息,请参阅 “创建强密码 ”一文。
默认情况下,Azure在SQL Server虚拟机设置期间选择Windows身份验证。 因此,会禁用 SA 登录名,并由安装程序分配密码。 建议不要使用或启用 SA 登录名。 如果必须使用 SQL 登录名,请使用以下策略之一:
创建一个名称唯一且具有 sysadmin 成员资格的 SQL 帐户。 可通过在预配期间启用 SQL 身份验证,从门户执行此操作。
提示
如果在预配期间未启用 SQL 身份验证,则必须手动将身份验证模式更改为 SQL Server 和Windows身份验证模式。 有关详细信息,请参阅 更改服务器身份验证模式。
如果必须使用 SA 登录名,请在预配后启用该登录名,并分配新的强密码。
注释
不支持使用Microsoft Entra Domain Services连接到SQL Server VM。 请改用Active Directory域帐户。
审核和报告
使用 Log Analytics 记录事件并写入安全Azure Blob Storage帐户中的审核日志。 Log Analytics可用于解密审核日志的详细信息。 审核使你能够将数据保存到单独的存储帐户,并创建所选所有事件的审核线索。 还可以使用 Power BI 对审核日志进行快速数据分析和洞察,以便更好地查看法规合规性。 若要详细了解 VM 和Azure级别的审核,请参阅Azure安全日志记录和审核。
虚拟机级别访问
关闭计算机上的管理端口 - 打开远程管理端口会使 VM 暴露在较高级别的 Internet 攻击风险之下。 此类攻击试图暴力破解凭据,来获取对计算机的管理员访问权限。
- 为Azure虚拟机启用 实时 (JIT) 访问。
- 通过 Remote Desktop 协议(RDP)使用 Azure Bastion。
虚拟机扩展
Azure虚拟机扩展是受信任的Microsoft扩展,可帮助解决防病毒、恶意软件、威胁防护等特定需求和风险。
-
来宾配置扩展
- 若要确保安全配置计算机的来宾内设置,请安装来宾配置扩展。
- 来宾内设置包括操作系统的配置、应用程序配置或状态以及环境设置。
- 安装后,来宾内策略将可用,例如“应启用Windows攻击防护”。
-
网络流量数据收集代理
- Microsoft Defender for Cloud使用Microsoft依赖项代理从Azure虚拟机收集网络流量数据。
- 该代理启用高级网络保护功能,如网络地图上的流量可视化、网络加固建议和特定网络威胁。
- 评估来自 Microsoft 的扩展,以解决操作系统、机器和网络级别的反恶意软件、期望状态、威胁检测、预防和补救等方面的威胁。
从不受信任的源还原备份的安全风险
本部分概述了将备份从不受信任的源还原到任何SQL Server环境(包括本地、Azure SQL Managed Instance、SQL Server on Azure Virtual Machines(VM)和其他任何环境相关的安全风险。
为什么这很重要
如果备份源自不受信任的源,则还原 SQL 备份文件 (.bak) 会带来潜在风险。 当SQL Server环境有多个实例时,安全风险进一步加剧,因为它放大了威胁区域。 虽然保留在受信任边界内的备份不会造成安全问题,但还原恶意备份可能会损害整个环境的安全性。
恶意 .bak 文件可以:
- 接管整个SQL Server实例。
- 提升特权并获取对基础主机或虚拟机的未经授权的访问。
此攻击发生在任何验证脚本或安全检查可以执行之前,这使得它变得极其危险。 还原不受信任的备份相当于在关键服务器或虚拟机上运行不受信任的应用程序,并将任意代码执行引入环境。
最佳做法
遵循以下备份安全最佳做法,减少对SQL Server环境的威胁:
- 将备份还原视为高风险操作。
- 使用独立实例减少威胁服务区域。
- 仅允许受信任的备份:从不从未知源或外部源还原备份。
- 仅允许在受信任的边界内保留的备份:确保备份源自受信任的边界。
- 为方便起见,请勿绕过安全控制。
- 启用 服务器级审核 以捕获备份和还原事件并缓解审核逃避。
相关内容
查看 SQL Server 和 Azure VM 的安全最佳做法,然后查看本文,了解具体适用于Azure VM 上的SQL Server的最佳做法。
有关每个优化区域的详细指南:
- 快速清单 - 查看完整的最佳做法清单
- VM 大小 - 选择正确的 VM 系列和配置
- 存储 - 优化磁盘配置和性能
- HADR 设置 - 配置高可用性和灾难恢复
- 收集基线 - 建立性能基线
- Updating SQL Server - 使SQL Server保持最新状态
在 SQL Server on Azure Virtual Machines 概述查看其他SQL Server虚拟机文章。 如果对 SQL Server 虚拟机有疑问,请参阅 常见问题。