适用于:Azure SQL 数据库
Azure SQL 数据库是一个完全托管的平台即服务(PaaS)数据库引擎,用于处理数据库管理功能,例如升级、修补、备份和监视,而无需用户参与。 因为它通常存储关键业务数据,包括客户记录、财务信息和知识产权,因此保护 Azure SQL 数据库对于防止数据泄露、未经授权的访问和合规性违规至关重要。
本文提供有关如何最好地保护 Azure SQL 数据库部署的指导。
网络安全
Azure SQL 数据库的网络安全有助于防止未经授权的连接,减少对攻击的暴露,并确保只有受信任的源才能通过适当的网络隔离和访问控制访问数据库。
使用专用终结点增强安全性:使用 Azure 专用链接通过专用 IP 地址连接到 Azure SQL 数据库,以避免将数据库公开到公共 Internet。 专用连接消除了数据外泄的风险,并减少了攻击面。 有关详细信息,请参阅 Azure SQL 数据库的 Azure 专用链接。
选择适当的连接策略:了解代理和重定向连接策略之间的差异。 重定向提供较低的延迟,建议从 Azure 内部进行连接,而来自 Azure 外部的连接需要代理。 有关详细信息,请参阅 Azure SQL 数据库连接体系结构。
配置服务器级防火墙规则:通过配置指定哪些 IP 地址或范围可以连接的 IP 防火墙规则来控制 对 Azure 中逻辑服务器的 访问。 仅允许必要的 IP 地址,使用最低特权原则。 有关详细信息,请参阅 Azure SQL 数据库和 Azure Synapse IP 防火墙规则。
配置数据库级防火墙规则:若要进行更精细的控制,请配置应用于单个数据库的数据库级防火墙规则。 此配置允许实现每个数据库访问策略。 有关详细信息,请参阅 数据库级防火墙规则。
与 Azure 虚拟网络集成:使用虚拟网络规则仅允许来自 Azure 虚拟网络中的特定子网的流量。 此配置提供除基于 IP 的规则之外的其他网络隔离层。 有关详细信息,请参阅 Azure SQL 数据库的虚拟网络规则。
启用连接加密:将所有客户端连接配置为在传输中使用加密。 默认情况下,Azure SQL 数据库支持传输层安全性 (TLS) 1.2,确保在客户端和数据库之间移动时保护数据。 TLS 1.3 也可用。 有关详细信息,请参阅 连接体系结构。
使用专用终结点时禁用公共访问:使用专用终结点时,请完全禁用公用网络访问,以确保所有连接都通过专用终结点。 此配置提供最高级别的网络安全。 有关详细信息,请参阅 “拒绝公用网络访问”。
标识管理
强标识和身份验证控制可确保只有经过授权的用户和应用程序才能访问 Azure SQL 数据库资源,同时提供集中式标识管理和更轻松的帐户生命周期管理。
配置 Microsoft Entra 管理员:为逻辑服务器指定Microsoft Entra(前 Azure Active Directory)管理员,以启用集中式标识管理和高级安全功能。 此管理员可以管理访问和身份验证策略。 有关详细信息,请参阅 配置Microsoft Entra 身份验证。
使用 Microsoft Entra 身份验证:使用 Microsoft Entra 身份验证,而不是使用 SQL 身份验证进行集中式标识管理和更轻松的帐户生命周期管理。 Microsoft Entra ID 提供卓越的安全性,并启用条件访问和多重身份验证等高级功能。 有关详细信息,请参阅 Microsoft Entra 身份验证。
配置条件访问策略:使用条件访问策略根据用户位置、设备符合性和风险级别等条件控制访问。 此方法提供自适应安全性,用于响应每个访问尝试的上下文。 有关详细信息,请参阅 条件访问。
创建包含的数据库用户:尽可能使用映射到 Microsoft Entra 标识或组而不是服务器级登录名的包含数据库用户。 此方法通过消除对服务器级访问的需求,简化了权限管理并提高安全性。 有关详细信息,请参阅 包含的数据库用户。
启用多重身份验证:管理帐户和特权用户需要多重身份验证(MFA),才能在密码之外添加额外的安全层。 Microsoft Entra ID 支持各种 MFA 方法,包括电话验证、验证器应用和 FIDO2 安全密钥。 有关详细信息,请参阅 多重身份验证。
对应用程序使用托管标识:为 Azure 资源启用托管标识,以允许应用程序在不存储凭据的情况下进行身份验证。 此方法无需使用嵌入式密码管理连接字符串,并降低凭据泄露的风险。 有关详细信息,请参阅 Microsoft Entra 中用于 Azure SQL 的托管标识。
强制实施强密码策略:如果使用 SQL 身份验证,则需要无法轻易猜出的复杂密码。 实施密码轮换策略,避免在不同帐户之间重用密码。 有关详细信息,请参阅 密码策略。
尽可能禁用 SQL 身份验证:若要获得最大安全性,请考虑完全禁用 SQL 身份验证,并要求所有连接都使用 Microsoft Entra 身份验证。 此方法消除了弱或泄露的 SQL 密码的风险。 有关详细信息,请参阅 Microsoft Entra 专用身份验证。
特权访问
控制特权访问可防止未经授权的更改,减少被入侵帐户的影响,并确保正确监视和控制管理作。
实现最低特权访问权限:仅向用户授予执行其作业功能所需的最低权限。 定期查看和调整权限,以维护最小特权原则。 有关详细信息,请参阅 数据库引擎权限入门。
单独的管理角色:避免向所有数据库管理员授予管理员权限。 尽可能使用更精细的权限,并实现不同管理功能之间的职责分离。 有关详细信息,请参阅权限。
使用 Azure 基于角色的访问控制(RBAC):实现 Azure RBAC 来控制对 Azure SQL 数据库管理作的访问。 创建自定义角色,这些角色仅提供特定管理任务所需的权限。 有关详细信息,请参阅 适用于 Azure SQL 数据库的 Azure RBAC。
监视特权活动:启用审核以跟踪特权帐户执行的所有操作。 定期查看可疑活动或未经授权的更改的审核日志。 为敏感作配置警报。 有关详细信息,请参阅 Azure SQL 数据库的审核。
使用数据库角色进行访问管理:利用内置数据库角色和创建自定义角色来实现基于角色的安全性。 将用户分配到角色,而不是授予单个权限来简化管理和减少错误。 有关详细信息,请参阅 数据库级角色。
实现实时访问:使用 Microsoft Entra Privileged Identity Management (PIM) 提供对管理角色的限时审批访问权限。 此方法可确保用户在需要时仅拥有提升的权限。 有关详细信息,请参阅 Privileged Identity Management。
数据保护
数据保护通过加密、访问控制和数据分类来保护信息,以防止未经授权的泄露、篡改或丢失敏感信息。
启用透明数据加密(TDE):使用 TDE 加密静态数据库、日志和备份文件。 默认情况下,为所有新创建的 Azure SQL 数据库启用 TDE。 请考虑在 Azure Key Vault 中使用客户管理的密钥,以进一步控制加密密钥。 有关详细信息,请参阅使用客户管理的密钥的透明数据加密(TDE)和 TDE。
为敏感数据实现 Always Encrypted:使用 Always Encrypted 保护使用、静态和传输中的高度敏感数据。 此保护可确保即使是数据库管理员也不能以纯文本方式查看敏感数据。 有关详细信息,请参阅 Always Encrypted。
使用账本进行防篡改数据:使账本能够创建敏感数据更改的不可变记录,从而提供防篡改日志记录。 账本表提供数据完整性的加密证明,有助于满足法规要求。 有关详细信息,请参阅账本。
使用动态数据掩码:应用动态数据掩码来模糊处理非特权用户的敏感数据,同时保留应用程序的数据功能。 此功能有助于防止未经授权的访问敏感信息,而无需更改应用程序。 有关详细信息,请参阅 动态数据掩码。
分类和标记敏感数据:使用 SQL 数据发现和分类来识别、分类和标记数据库中的敏感数据。 此分类可提供更好的保护和符合性报告,并帮助你了解敏感数据所在的位置。 有关详细信息,请参阅 数据发现和分类。
实现列级安全性:授予列级别的权限以限制对敏感数据的访问。 仅向需要访问敏感列的用户提供 SELECT、UPDATE 或 REFERENCES 权限。 有关详细信息,请参阅 列级安全性。
使用 Row-Level 安全性(RLS):实现 RLS 以确保用户只能访问与其相关的数据行。 此功能提供应用程序级安全性,无需重大应用程序更改,非常适合多租户方案。 有关详细信息,请参阅 行级安全性。
备份和恢复
可靠的备份和恢复过程可保护数据免受故障、灾难或攻击造成的损失,同时确保满足恢复时间和时间点目标。
验证自动备份配置:确保自动备份已正确配置,并确保保留期限符合您的业务要求。 默认情况下,Azure SQL 数据库提供自动备份,保留期从 1 到 35 天可配置。 有关更多信息,请参阅自动备份。
配置备份存储冗余:根据可用性和灾难恢复要求选择适当的备份存储冗余选项。 选项包括本地冗余(LRS)、区域冗余(ZRS)和异地冗余(GRS)存储。 有关详细信息,请参阅 备份存储冗余。
使用长期保留进行符合性:为超出默认保留期的符合性要求配置长期备份保留(LTR)。 LTR 允许存储长达 10 年的完整备份。 有关详细信息,请参阅 长期保留。
测试备份和还原过程:定期测试备份和还原过程,以确保它们正常工作并满足恢复时间目标(RTO)。 验证还原的数据库是否完全正常运行,并维护数据完整性。 有关详细信息,请参阅 “恢复数据库”。
监视备份活动:跟踪备份作以确保其成功完成。 使用 Azure Monitor 并配置备份失败的警报。
使用加密保护备份:在源数据库上启用 TDE 时,会自动加密备份文件。 确保启用了 TDE 来保护静态备份数据。 有关详细信息,请参阅 透明数据加密。
实现异地还原以实现灾难恢复:使用异地还原功能将数据库从异地冗余备份还原到任何 Azure 区域。 此功能提供针对区域性中断和灾难的保护。 有关详细信息,请参阅 异地还原。
监视和威胁检测
全面的监视和威胁检测有助于识别安全问题、检测异常活动,并快速响应针对 Azure SQL 数据库的潜在威胁。
启用 Microsoft Defender for SQL:配置 Microsoft Defender for SQL,以检测访问或利用数据库的异常和潜在有害尝试。 此功能提供高级威胁防护功能,包括漏洞评估和威胁检测。 有关详细信息,请参阅 Microsoft Defender for SQL。
与 Microsoft Defender for Cloud 集成:在 Azure 资源中使用 Microsoft Defender for Cloud 进行集中的安全管理和威胁防护。 此功能提供安全建议、法规合规性跟踪和集成威胁防护。 有关详细信息,请参阅 Microsoft Defender for Cloud。
配置高级威胁防护警报:为可疑数据库活动(例如 SQL 注入攻击、异常数据库访问模式和暴力身份验证尝试)设置警报。 配置通知收件人并与 Azure 安全中心集成。 有关详细信息,请参阅 高级威胁防护。
启用审核:配置审核以跟踪数据库事件并将其写入 Azure 存储、Log Analytics 工作区或事件中心中的审核日志。 审核服务器级事件和数据库级事件,以便全面覆盖。 有关详细信息,请参阅 Azure SQL 数据库的审核。
使用 Azure Monitor 进行数据库监视:与 Azure Monitor 集成以收集和分析指标和日志。 为安全相关事件创建自定义仪表板和警报。 有关详细信息,请参阅 监视 Azure SQL 数据库。
定期查看审核日志:建立定期审核日志以识别可疑活动或未经授权的访问尝试的过程。 专注于特权帐户活动、身份验证尝试失败以及对敏感数据的访问。 有关详细信息,请参阅 Azure SQL 数据库的审核。
启用诊断日志:配置诊断设置,以将日志流式传输到 Azure Monitor 日志、事件中心或 Azure 存储,以便进行长期保留和分析。 包括与安全相关的日志类别,例如 SQLSecurityAuditEvents。 有关详细信息,请参阅 诊断设置。
安全评估和威胁缓解
定期评估 Azure SQL 数据库环境有助于识别漏洞并提高安全状况,同时确保符合安全标准。
运行漏洞评估:在 Azure 门户中使用 SQL 漏洞评估发现和修复潜在的数据库漏洞。 计划定期扫描并跟踪修正进度。 有关详细信息,请参阅 SQL 漏洞评估。
分类和标记敏感数据:使用 SQL 数据发现和分类来识别和标记敏感数据,以便更好地保护和符合性。 审核和动态数据掩码等其他安全功能可以使用分类元数据。 有关详细信息,请参阅 数据发现和分类。
查看安全建议:定期查看 Azure 安全中心和 Microsoft Defender for SQL 中的安全建议。 根据严重性和潜在影响确定结果的优先级并修复结果。 有关详细信息,请参阅 Microsoft Defender for SQL。
实现数据库级加密:除 TDE 外,请考虑对高度敏感的列使用 Always Encrypted,并实施适当的密钥管理做法。 使用 Azure Key Vault 进行集中式密钥管理。 有关详细信息,请参阅 Always Encrypted。
防范 SQL 注入:在应用程序中实现参数化查询和存储过程,以防止 SQL 注入攻击。 切勿将用户输入连接到 SQL 语句中。 有关详细信息,请参阅 SQL 注入。
定期评审访问权限:定期进行访问评审,确保用户具有适当的权限。 为不再需要访问权限的用户删除不必要的特权和停用帐户。 有关详细信息,请参阅 数据库引擎权限入门。
为关键数据启用数据库账本:对于包含审核关键或篡改敏感数据的数据库,请启用账本以提供数据完整性的加密证明。 有关详细信息,请参阅账本。
实现深层防御安全性:使用针对不同安全作用域的多个安全功能,为各种威胁提供全面的防护。 结合网络安全、标识管理、数据保护和监视,以实现最大安全性。 有关详细信息,请参阅 安全最佳做法。
遵循Microsoft云安全基准:根据 Azure SQL 数据库的Microsoft云安全基准实施安全控制。 此基准提供与行业标准一致的综合性安全基线。 有关详细信息,请参阅 Azure SQL 数据库的安全基线。