SQL 漏洞评估规则参考指南

本文列出了一组内置规则,这些规则用于标记安全漏洞,并突出显示不符合最佳做法的情况(如配置错误和权限过多)。 这些规则基于 Microsoft 的最佳做法,并专注于对数据库及其重要数据有最大风险的安全问题。 其中涵盖数据库级别的问题以及服务器级别的安全问题,如服务器防火墙设置和服务器级别的权限。 这些规则还体现了各个监管机构提出的许多要求,旨在满足它们的符合性标准。

适用于: Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics SQL Server(所有支持的版本)

数据库扫描中显示的规则取决于所扫描的 SQL 版本和平台。

若要了解如何在 Azure 中实施漏洞评估,请参阅实施漏洞评估

有关这些规则的变更的列表,请参阅 SQL 漏洞评估规则变更日志

规则类别

SQL 漏洞评估规则有五种类别,分别在以下各部分介绍:

1 SQL Server 2012+ 是指 SQL Server 2012 及以上的所有版本。

2 SQL Server 2017+ 是指 SQL Server 2017 及以上的所有版本。

3 SQL Server 2016+ 是指 SQL Server 2016 及以上的所有版本。

身份验证和授权

规则 ID 规则标题 规则严重性 规则描述 平台
VA1017 应撤销所有用户(dbo 除外)对 xp_cmdshell 的执行权限 xp_cmdshell 扩展存储过程会生成一个 Windows 命令外壳,并传入一个要执行的字符串。 此规则检查是否没有用户(具有 CONTROL SERVER 权限的用户除外,例如 sysadmin 服务器角色的成员)有权执行 xp_cmdshell 扩展存储过程。 SQL Server 2012+1
VA1020 数据库用户 GUEST 不应是任何角色的成员 来宾用户允许未映射到特定数据库用户的任何登录名访问数据库。 此规则检查是否没有为来宾用户分配数据库角色。 SQL Server 2012+

SQL 数据库
VA1042 应对除 mastermsdbtempdb 以外的所有数据库禁用数据库所有权链接 跨数据库所有权链接是所有权链接的扩展,只不过它跨越了数据库边界。 此规则检查是否对除 mastermsdbtempdb 以外的所有数据库禁用了此选项。 对于 mastermsdbtempdb,默认情况下启用跨数据库所有权链接。 SQL Server 2012+

SQL 托管实例
VA1043 主体 GUEST 应无权访问任何用户数据库 中型 来宾用户允许未映射到特定数据库用户的任何登录名访问数据库。 此规则检查来宾用户是否无法连接到任何数据库。 SQL Server 2012+

SQL 托管实例
VA1046 应为所有 SQL 登录名启用 CHECK_POLICY CHECK_POLICY 选项允许根据域策略验证 SQL 登录名。 此规则检查是否为所有 SQL 登录名启用了 CHECK_POLICY 选项。 SQL Server 2012+

SQL 托管实例
VA1047 应为所有 SQL 登录名启用密码过期检查 密码过期策略用于管理密码的使用期限。 如果 SQL Server 实施密码过期策略,则系统会提醒用户更改旧密码,并会禁用密码已过期的帐户。 此规则检查是否为所有 SQL 登录名启用了密码过期策略。 SQL Server 2012+

SQL 托管实例
VA1048 不应将数据库主体映射到 sa 帐户 攻击者可以利用映射到 sa 帐户的数据库主体将权限提升到 sysadmin SQL Server 2012+

SQL 托管实例
VA1052 删除作为服务器登录名的 BUILTIN\Administrators BUILTIN\Administrators 组包含 Windows 本地管理员组。 在旧版 Microsoft SQL Server 中,默认情况下,此组具有管理员权限。 此规则检查是否已从 SQL Server 中删除此组。 SQL Server 2012+
VA1053 应重命名或禁用默认名称为 sa 的帐户 sa 是一个主体 ID 为 1 的已知帐户。 此规则验证是否已重命名或禁用 sa 帐户。 SQL Server 2012+

SQL 托管实例
VA1054 不应向 PUBLIC 角色授予对对象或列的过多权限 每个 SQL Server 登录名都属于 public 服务器角色。 如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,用户将继承向 public 角色授予的对该对象的权限。 此规则显示所有用户可通过 PUBLIC 角色访问的所有安全对象或列的列表。 SQL Server 2012+

SQL 数据库
VA1058 应禁用 sa 登录名 sa 是一个主体 ID 为 1 的已知帐户。 此规则验证是否已禁用 sa 帐户。 SQL Server 2012+

SQL 托管实例
VA1059 应禁用 xp_cmdshell xp_cmdshell 会生成 Windows 命令外壳并向其传递要执行的字符串。 此规则检查是否已禁用 xp_cmdshell。 SQL Server 2012+

SQL 托管实例
VA1067 如果不使用数据库邮件 XPS,应将其禁用 中型 此规则检查未配置数据库邮件配置文件时是否禁用了数据库邮件。 数据库邮件可用于从 SQL Server 数据库引擎发送电子邮件,默认情况下处于禁用状态。 如果不使用此功能,建议将其禁用以减少外围应用。 SQL Server 2012+
VA1068 不应直接向主体授予服务器权限 服务器级权限与服务器级对象相关联,以规定哪些用户可以访问该对象。 此规则检查是否未直接向登录名授予服务器级权限。 SQL Server 2012+

SQL 托管实例
VA1070 数据库用户不应使用与服务器登录名相同的名称 数据库用户可能会使用与服务器登录名相同的名称。 此规则验证没有这样的用户。 SQL Server 2012+

SQL 托管实例
VA1072 身份验证模式应为 Windows 身份验证 中型 有两种可能的身份验证模式:Windows 身份验证模式和混合模式。 混合模式意味着 SQL Server 同时启用 Windows 身份验证和 SQL Server 身份验证。 此规则检查身份验证模式是否设置为 Windows 身份验证。 SQL Server 2012+
VA1094 不应直接向主体授予数据库权限 权限是与安全对象关联的规则,用于规定哪些用户可以访问该对象。 此规则检查是否未直接向用户授予 DB 权限。 SQL Server 2012+

SQL 托管实例
VA1095 不应向 PUBLIC 角色授予过多权限 中型 每个 SQL Server 登录名都属于 public 服务器角色。 如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,该用户将继承授予该对象的 public 角色的权限。 这会显示向 PUBLIC 角色授予的所有权限的列表。 SQL Server 2012+

SQL 托管实例

SQL 数据库
VA1096 不应在数据库中向主体 GUEST 授予权限 每个数据库都包含一个名为 GUEST 的用户。 授予 GUEST 的权限由对数据库具有访问权限,但在数据库中没有用户帐户的用户继承。 此规则检查是否已撤销 GUEST 用户的所有权限。 SQL Server 2012+

SQL 托管实例

SQL 数据库
VA1097 不应向主体 GUEST 授予对对象或列的权限 每个数据库都包含一个名为 GUEST 的用户。 授予 GUEST 的权限由对数据库具有访问权限,但在数据库中没有用户帐户的用户继承。 此规则检查是否已撤销 GUEST 用户的所有权限。 SQL Server 2012+

SQL 托管实例

SQL 数据库
VA1099 不应向 GUEST 用户授予对数据库安全对象的权限 每个数据库都包含一个名为 GUEST 的用户。 授予 GUEST 的权限由对数据库具有访问权限,但在数据库中没有用户帐户的用户继承。 此规则检查是否已撤销 GUEST 用户的所有权限。 SQL Server 2012+

SQL 托管实例

SQL 数据库
VA1246 不应使用应用程序角色 应用程序角色是一个数据库主体,它使应用程序能够用其自身的、类似用户的权限来运行。 借助应用程序角色,只有通过特定应用程序连接的用户才能访问特定数据。 应用程序角色基于密码(应用程序通常对其进行硬编码),而不是基于权限(通过密码猜测将数据库公开给应用角色模拟)。 此规则检查数据库中是否未定义任何应用程序角色。 SQL Server 2012+

SQL 托管实例

SQL 数据库
VA1248 用户定义的数据库角色不应为固定角色的成员 中型 为便于管理数据库中的权限,SQL Server 提供了若干角色,这些角色是用于对其他主体进行分组的安全主体。 它们类似于 Microsoft Windows 操作系统中的组。 可将数据库帐户和其他 SQL Server 角色添加到数据库级角色中。 固定数据库角色的每个成员都可向同一个角色添加其他用户。 此规则检查用户定义的角色是否为固定角色的成员。 SQL Server 2012+

SQL 托管实例

SQL 数据库

Azure Synapse
VA1267 包含用户应使用 Windows 身份验证 中型 包含用户是存在于数据库中并且不需要登录映射的用户。 此规则检查包含用户是否使用 Windows 身份验证。 SQL Server 2012+

SQL 托管实例
VA1280 应最大程度减少授予 public 的服务器权限 中型 每个 SQL Server 登录名都属于 public 服务器角色。 如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,用户将继承向 public 角色授予的对该对象的权限。 此规则检查是否最大程度减少了授予 public 的服务器权限。 SQL Server 2012+

SQL 托管实例
VA1282 应删除孤立角色 孤立角色是指没有成员的用户定义角色。 应消除系统中不需要的孤立角色。 此规则检查是否有任何孤立角色。 SQL Server 2012+

SQL 托管实例

SQL 数据库

Azure Synapse
VA2020 应向最小主体集授予 ALTER 或 ALTER ANY USER 数据库范围权限 每个 SQL Server 安全对象都有与之关联的权限,可以将这些权限授予主体。 可以将权限的范围设置为服务器级别(分配给登录名和服务器角色)或数据库级别(分配给数据库用户和数据库角色)。 这些规则检查是否仅向最小主体集授予 ALTER 或 ALTER ANY USER 数据库范围权限。 SQL Server 2012+

SQL 托管实例

SQL 数据库

Azure Synapse
VA2033 应向最小主体集授予对对象或列的 EXECUTE 数据库范围权限 此规则检查哪些主体被授予了对对象或列的 EXECUTE 权限,以确保将此权限授予最少的主体。 每个 SQL Server 安全对象都有与之关联的权限,可以将这些权限授予主体。 可以将权限的范围设置为服务器级别(分配给登录名和服务器角色)或数据库级别(分配给数据库用户、数据库角色或应用程序角色)。 EXECUTE 权限同时适用于可以在计算列中使用的存储过程和标量函数。 SQL Server 2012+

SQL 托管实例

SQL 数据库

Azure Synapse
VA2103 应撤销对扩展存储过程不必要的执行权限 中型 扩展存储过程是 SQL Server 实例可以动态加载和运行的 DLL。 SQL Server 与许多扩展存储过程打包在一起,这些存储过程允许与系统 DLL 进行交互。 此规则检查是否已撤销对扩展存储过程不必要的执行权限。 SQL Server 2012+

SQL 托管实例
VA2107 最小主体集应该是固定 Azure SQL DB master 数据库角色的成员 SQL 数据库在可以添加用户帐户的 master 数据库中提供了两个受限的管理角色,这些角色可授予创建数据库或管理登录名的权限。 此规则检查最小主体集是否为这些管理角色的成员。 SQL 数据库

Azure Synapse
VA2108 最小主体集应该是影响较大的固定数据库角色的成员 SQL Server 提供角色来帮助管理权限。 角色是对其他主体进行分组的安全主体。 数据库级角色的权限范围为数据库范围。 此规则检查最小主体集是否为固定数据库角色的成员。 SQL Server 2012+

SQL 托管实例

SQL 数据库

Azure Synapse
VA2109 最小主体集应该是影响较小的固定数据库角色的成员 SQL Server 提供角色来帮助管理权限。 角色是对其他主体进行分组的安全主体。 数据库级角色的权限范围为数据库范围。 此规则检查最小主体集是否为固定数据库角色的成员。 SQL Server 2012+

SQL 托管实例

SQL 数据库

Azure Synapse
VA2110 应撤销用于访问注册表的执行权限 注册表扩展存储过程允许 Microsoft SQL Server 读写和枚举注册表中的值和键。 企业管理员使用它们来配置服务器。 此规则检查是否已撤销所有用户(dbo 除外)执行注册表扩展存储过程的权限。 SQL Server 2012+

SQL 托管实例
VA2113 只能向 SSIS 角色授予数据转换服务 (DTS) 权限 中型 数据转换服务 (DTS) 是一组对象和实用工具,它们允许对数据库自动执行提取、转换和加载操作。 这些对象是 DTS 包,其组件和实用工具称为 DTS 工具。 此规则检查是否仅向 SSIS 角色授予了使用 DTS 系统存储过程的权限,以及是否已撤销 PUBLIC 角色使用 DTS 系统存储过程的权限。 SQL Server 2012+

SQL 托管实例
VA2114 最小主体集应该是影响较大的固定服务器角色的成员 SQL Server 提供角色来帮助管理权限。 角色是对其他主体进行分组的安全主体。 服务器级角色的权限范围为服务器范围。 此规则检查最小主体集是否为固定服务器角色的成员。 SQL Server 2012+

SQL 托管实例
VA2129 对已签名模块的更改应得到授权 可以使用证书或非对称密钥对存储过程、函数或触发器进行签名。 这适用于以下情况:无法通过所有权链接继承权限,或所有权链中断,例如动态 SQL。 此规则检查对已签名模块所做的更改,这可能表明存在恶意使用的情况。 SQL Server 2012+

SQL 数据库

SQL 托管实例
VA2130 跟踪有权访问数据库的所有用户 此检查跟踪有权访问数据库的所有用户。 确保已根据这些用户在组织中的当前角色对其进行了授权。 SQL 数据库

Azure Synapse
VA2201 应禁用具有常用名称的 SQL 登录名 此规则检查具有数据库所有者权限的帐户是否有常用名称。 将常用名称分配给具有数据库所有者权限的帐户会增加暴力攻击成功的可能性。 SQL Server 2012+

审核和日志记录

规则 ID 规则标题 规则严重性 规则描述 平台
VA1045 应启用默认跟踪 中型 默认跟踪可确保数据库管理员在问题首次出现时即具有诊断该问题所需的日志数据,从而为数据库管理员提供了故障排除帮助。 此规则检查是否已启用默认跟踪。 SQL Server 2012+

SQL 托管实例
VA1091 将“登录审核”设置为跟踪登录时,应对成功和失败的登录尝试都启用审核(默认跟踪) SQL Server 登录审核配置允许管理员跟踪登录 SQL Server 实例的用户。 如果用户选择依靠“登录审核”来跟踪登录 SQL Server 实例的用户,则必须为成功和失败的登录尝试都启用审核。 SQL Server 2012+
VA1093 错误日志的最大数量应为 12 个或更多 每个 SQL Server 错误日志都包含自上次重新启动 SQL Server 或自上次回收错误日志以来发生的故障/错误的所有相关信息。 此规则检查错误日志的最大数量是否为 12 个或更多。 SQL Server 2012+
VA1258 数据库所有者符合预期 数据库所有者既可以在数据库上执行所有配置和维护活动,也可以在 SQL Server 中删除数据库。 跟踪数据库所有者对于避免某些主体拥有过多权限很重要。 创建一个基线,该基线定义数据库的预期数据库所有者。 此规则检查数据库所有者是否符合基线中的定义。 SQL Server 2016+3

SQL 数据库

Azure Synapse
VA1264 应为成功和失败的登录尝试都启用审核 SQL Server 审核配置允许管理员跟踪登录到他们所负责的 SQL Server 实例的用户。 此规则检查是否为成功和失败的登录尝试都启用了审核。 SQL Server 2012+

SQL 托管实例
VA1265 应为包含 DB 身份验证的成功和失败登录尝试都启用审核 中型 SQL Server 审核配置允许管理员跟踪登录到他们所负责的 SQL Server 实例的用户。 此规则检查是否为包含 DB 身份验证的成功和失败登录尝试都启用了审核。 SQL Server 2012+

SQL 托管实例
VA1281 用户定义角色的所有成员身份应符合预期 中型 用户定义的角色是由用户定义的安全主体,用于对主体进行分组,以便轻松管理权限。 监视这些角色对于避免拥有过多权限很重要。 创建一个基线,为每个用户定义角色定义预期的成员身份。 此规则检查用户定义角色的所有成员身份是否符合基线中的定义。 SQL Server 2012+

SQL 托管实例

SQL 数据库

Azure Synapse
VA1283 系统中至少应有 1 个活动审核 审核 SQL Server 数据库引擎或单个数据库的实例涉及到跟踪和记录数据库引擎中发生的事件。 SQL Server Audit 对象收集单个服务器实例或数据库级操作和操作组以进行监视。 此规则检查系统中是否至少有一个活动审核。 SQL Server 2012+

SQL 托管实例
VA2061 应在服务器级别启用审核 Azure SQL 数据库审核跟踪数据库事件,并将事件写入 Azure 存储帐户中的审核日志。 审核可帮助你了解数据库活动,深入了解可能表明业务问题或疑似安全违规的偏差和异常,并帮助你满足合规性要求。 有关详细信息,请参阅 Azure SQL 审核。 此规则检查是否已启用审核。 SQL 数据库

Azure Synapse

数据保护

规则 ID 规则标题 规则严重性 规则描述 平台
VA1098 现有的所有 SSB 或 Mirroring 终结点都需要建立 AES 连接 Service Broker 和 Mirroring 终结点支持各种加密算法,包括非加密算法。 此规则检查现有的所有终结点是否都需要进行 AES 加密。 SQL Server 2012+
VA1219 应启用透明数据加密 中型 透明数据加密 (TDE) 通过以下方式帮助保护数据库文件以避免信息泄露:对“静态”的数据库、相关备份和事务日志文件进行实时加密和解密,无需更改应用程序。 此规则检查是否对数据库启用了 TDE。 SQL Server 2012+

SQL 托管实例

SQL 数据库

Azure Synapse
VA1220 应通过 TLS 保护使用 TDS 的数据库通信 Microsoft SQL Server 可以使用安全套接字层 (SSL) 或传输层安全性 (TLS) 对通过网络在 SQL Server 实例与客户端应用程序之间传输的数据进行加密。 此规则检查是否已通过 TLS 对与 SQL Server 建立的所有连接进行加密。 SQL Server 2012+

SQL 托管实例
VA1221 数据库加密对称密钥应使用 AES 算法 SQL Server 使用加密密钥帮助保护存储在服务器数据库中的数据、凭据和连接信息。 SQL Server 的密钥分为两种:对称和非对称。 此规则检查数据库加密对称密钥是否使用 AES 算法。 SQL Server 2012+

SQL 托管实例

SQL 数据库

Azure Synapse
VA1222 单元级加密密钥应使用 AES 算法 单元级加密 (CLE) 允许使用对称密钥和非对称密钥对数据进行加密。 此规则检查单元级加密对称密钥是否使用 AES 算法。 SQL Server 2012+

SQL 托管实例
VA1223 证书密钥应使用至少 2048 位 RSA 和其他加密算法使用证书密钥来保护数据。 这些密钥必须具有足够的长度才能保护用户数据。 此规则检查所有证书的密钥长度是否至少为 2048 位。 SQL Server 2012+

SQL 托管实例

SQL 数据库

Azure Synapse
VA1224 非对称密钥的长度应至少为 2048 位 数据库非对称密钥用于许多加密算法中,这些密钥需要具有足够的长度才能保护加密数据。此规则检查存储在数据库中的所有非对称密钥的长度是否至少为 2048 位 SQL Server 2012

SQL Server 2014

SQL 数据库
VA1279 应为 TDS 启用强制加密 为数据库引擎启用“强制加密”选项后,无论是否选中“加密连接”选项(例如从 SSMS 中),都会对客户端和服务器之间的所有通信进行加密。 此规则检查是否已启用“强制加密”选项。 SQL Server 2012+
VA2060 应在服务器级别启用 SQL 威胁检测 中型 SQL 威胁检测提供了一个安全层,用于检测数据库中的潜在漏洞和异常活动,例如 SQL 注入攻击和异常行为模式。 检测到潜在威胁时,威胁检测会通过电子邮件和 Microsoft Defender for Cloud 发送可操作的实时警报,其中包含针对特定威胁的清楚的调查步骤和修正步骤。 有关详细信息,请参阅配置威胁检测。 此检查验证是否已启用 SQL 威胁检测
SQL 托管实例

SQL 数据库

Azure Synapse

安装更新和修补

规则 ID 规则标题 规则严重性 规则描述 平台
VA1018 应安装最新更新 Microsoft 会定期发布每个 SQL Server 版本的累积更新 (CU)。 此规则通过传入要执行的字符串,来检查是否为所使用的特定 SQL Server 版本安装了最新的 CU。 此规则检查是否所有用户(dbo 除外)都无权执行 xp_cmdshell 扩展存储过程。 SQL Server 2005

SQL Server 2008

SQL Server 2008

SQL Server 2012

SQL Server 2014

SQL Server 2016

SQL Server 2017


SQL Server 2019


SQL Server 2022
VA2128 低于 SQL Server 2012 的 SQL Server 版本不支持漏洞评估 若要在 SQL Server 上运行漏洞评估扫描,服务器需要升级到 SQL Server 2012 或更高版本,Microsoft 不再支持 SQL Server 2008 R2 及以下版本。 有关详细信息,请参阅 SQL Server 2012+

SQL 托管实例

SQL 数据库

Azure Synapse

外围应用缩减

规则 ID 规则标题 规则严重性 规则描述 平台
VA1022 应禁用即席分布式查询 中型 即席分布式查询使用 OPENROWSETOPENDATASOURCE 函数连接到使用 OLE DB 的远程数据源。 此规则检查是否已禁用即席分布式查询。 SQL Server 2012+
VA1023 应禁用 CLR CLR 允许在 Microsoft SQL Server 环境中托管并运行托管代码。 此规则检查是否已禁用 CLR。 SQL Server 2012+
VA1026 应禁用 CLR 中型 CLR 允许在 Microsoft SQL Server 环境中托管并运行托管代码。 CLR 严格安全性将 SAFE 和 EXTERNAL_ACCESS 程序集视为已标记为 UNSAFE,并要求所有程序集均通过证书或非对称密钥进行签名,且该证书或非对称密钥具有已在 master 数据库中获得 UNSAFE ASSEMBLY 权限的相应登录名。 此规则检查是否已禁用 CLR。 SQL Server 2017+2

SQL 托管实例
VA1027 应删除未跟踪的受信任程序集 标记为 UNSAFE 的程序集必须通过证书或非对称密钥进行签名,且该证书或非对称密钥具有已在 master 数据库中获得 UNSAFE ASSEMBLY 权限的相应登录名。 受信任的程序集可以绕过此要求。 SQL Server 2017+

SQL 托管实例
VA1044 除非特别要求,否则应禁用远程管理连接 中型 此规则检查是否禁用了远程专用管理连接(如果它们未用于群集)以减少攻击面。 SQL Server 提供了专用管理员连接 (DAC)。 DAC 允许管理员访问正在运行的服务器,以执行诊断函数或 Transact-SQL 语句,或排查服务器上的问题。如果以远程方式启用了它,它会成为非常有吸引力的攻击目标。 SQL Server 2012+

SQL 托管实例
VA1051 应对所有数据库禁用 AUTO_CLOSE 中型 AUTO_CLOSE 选项指定在最后一个用户断开连接后,数据库是否正常关闭并释放资源。 尽管它有优点,但它可能会通过主动打开和关闭数据库来导致拒绝服务,因此禁用此功能非常重要。 此规则检查是否在当前数据库上禁用了此选项。 SQL Server 2012+
VA1066 应删除未使用的 Service Broker 终结点 Service Broker 为 SQL Server 提供排队和可靠的消息传送。 Service Broker 既适用于使用单个 SQL Server 实例的应用程序,又适用于在多个实例间分配工作的应用程序。 Service Broker 终结点提供用于传输安全性和消息转发的选项。 此规则枚举所有 Service Broker 终结点。 应删除未使用的终结点。 SQL Server 2012+
VA1071 应禁用“扫描启动存储过程”选项 中型 启用“扫描启动过程”后,SQL Server 会扫描服务器上定义的所有自动运行的存储过程,并运行这些过程。 如果启用此选项,SQL Server 会扫描服务器上定义的所有自动运行的存储过程,并运行这些过程。 此规则检查是否已禁用此选项。 SQL Server 2012+
VA1092 SQL Server Browser 服务不应播发 SQL Server 实例 SQL Server 使用 SQL Server Browser 服务来枚举安装在计算机上的数据库引擎实例。 这使客户端应用程序可以浏览服务器,并帮助客户端区分同一台计算机上的多个数据库引擎实例。 此规则检查是否隐藏了 SQL 实例。 SQL Server 2012+
VA1102 应在除 MSDB 以外的所有数据库上禁用可信位 TRUSTWORTHY 数据库属性用于指明 SQL Server 实例是否信任该数据库以及其中的内容。 如果启用此选项,则使用模拟上下文的数据库模块(例如,用户定义函数或存储过程)可以访问数据库外部的资源。 此规则验证是否在除 MSDB 以外的所有数据库上禁用了可信位。 SQL Server 2012+

SQL 托管实例
VA1143 不应将“dbo”用户用于正常服务操作 中型 “dbo”或数据库所有者是一种用户帐户,该帐户拥有执行数据库中所有活动的暗示性权限。 sysadmin 固定服务器角色的成员将自动映射到 dbo。 此规则检查 dbo 是否不是唯一可以访问此数据库的帐户。 请注意,在新创建的干净数据库上,此规则将失败,直到创建其他角色为止。 SQL Server 2012+

SQL 托管实例

SQL 数据库

Azure Synapse
VA1144 模型数据库只能由“dbo”访问 中型 模型数据库用作 SQL Server 实例上创建的所有数据库的模板。 对模型数据库进行的修改(如数据库大小、恢复模式和其他数据库选项)将应用于以后创建的所有数据库。 此规则检查 dbo 是否是唯一可以访问模型数据库的帐户。 SQL Server 2012+

SQL 托管实例
VA1230 应禁用文件流 FILESTREAM 通过将 varbinary(max) 二进制大型对象 (BLOB) 数据作为文件存储在 NTFS 文件系统中,将 SQL Server 数据库引擎与该文件系统集成在一起。 Transact-SQL 语句可插入、更新、查询、搜索和备份 FILESTREAM 数据。 在 SQL Server 上启用文件流会公开额外的 NTFS 流式处理 API,这会增加其攻击面,使其容易遭受恶意攻击。 此规则检查是否已禁用文件流。 SQL Server 2012+
VA1235 应当禁用服务器配置“复制 XPS” 中型 禁用弃用的服务器配置“复制 XPS”以限制攻击面。 这是仅限内部使用的配置设置。 SQL Server 2012+

SQL 托管实例
VA1244 应从 SQL Server 数据库中删除孤立用户 中型 存在于数据库中但在 master 数据库中没有对应登录名或作为外部资源(例如 Windows 用户)的数据库用户称为孤立用户,应将其删除或重新映射到有效的登录名。 此规则检查是否有孤立用户。 SQL Server 2012+

SQL 托管实例
VA1245 目标 DB 与 master 之间的 dbo 信息应保持一致 任何数据库都存在与 dbo 标识有关的冗余信息:存储在数据库本身的元数据,以及存储在 master DB 中的元数据。 此规则检查目标 DB 与 master 之间的此信息是否一致。 SQL Server 2012+

SQL 托管实例
VA1247 不应将 SP 标记为自动启动 将 SQL Server 配置为“扫描启动过程”后,服务器将在 master DB 中扫描标记为自动启动的存储过程。 此规则检查是否有标记为自动启动的 SP。 SQL Server 2012+
VA1256 不应在数据库中定义用户 CLR 程序集 CLR 程序集可用于在 SQL Server 进程上执行任意代码。 此规则检查数据库中是否没有用户定义的 CLR 程序集。 SQL Server 2012+

SQL 托管实例
VA1277 应启用 Polybase 网络加密 PolyBase 是一种技术,用于访问和合并所有来自 SQL Server 的非关系和关系数据。 Polybase 网络加密选项将 SQL Server 配置为在使用 Polybase 时对控件和数据通道进行加密。 此规则验证是否已启用此选项。 SQL Server 2016+
VA1278 创建外部密钥管理提供程序的基线 中型 SQL Server 可扩展密钥管理 (EKM) 使第三方 EKM 供应商可以在 SQL Server 中注册其模块。 当注册的 SQL Server 用户可以使用存储在 EKM 模块上的加密密钥时,此规则会显示系统中正在使用的 EKM 提供程序的列表。 SQL Server 2012+

SQL 托管实例
VA2062 数据库级防火墙规则不应授予过多访问权限 在你指定哪些 IP 地址具有权限之前,Azure SQL 数据库级防火墙会阻止所有对数据库的访问,以帮助保护数据。 数据库级防火墙规则基于每个请求的起始 IP 地址授予对特定数据库的访问权限。 master 数据库和用户数据库的数据库级防火墙规则只能通过 Transact-SQL 创建和管理(这与服务器级防火墙规则不同,后者还可以使用 Azure 门户或 PowerShell 创建和管理)。 有关详细信息,请参阅 Azure SQL 数据库和 Azure Synapse Analytics IP 防火墙规则。 此检查验证数据库级防火墙规则所授权的 IP 地址不能超过 255 个。 SQL 数据库

Azure Synapse
VA2063 服务器级防火墙规则不应授予过多访问权限 在你指定哪些 IP 地址具有权限之前,Azure SQL 服务器级防火墙会阻止所有对数据库的访问,以帮助保护服务器。 服务器级防火墙规则基于每个请求的起始 IP 地址授予对属于该服务器的所有数据库的访问权限。 可以通过 Transact-SQL 以及 Azure 门户或 PowerShell 创建和管理服务器级防火墙规则。 有关详细信息,请参阅 Azure SQL 数据库和 Azure Synapse Analytics IP 防火墙规则。 此检查验证服务器级防火墙规则所授权的 IP 地址不能超过 255 个。 SQL 数据库

Azure Synapse
VA2064 应严格按照最低限度跟踪和维护数据库级防火墙规则 在你指定哪些 IP 地址具有权限之前,Azure SQL 数据库级防火墙会阻止所有对数据库的访问,以帮助保护数据。 数据库级防火墙规则基于每个请求的起始 IP 地址授予对特定数据库的访问权限。 master 数据库和用户数据库的数据库级防火墙规则只能通过 Transact-SQL 创建和管理(这与服务器级防火墙规则不同,后者还可以使用 Azure 门户或 PowerShell 创建和管理)。 有关详细信息,请参阅 Azure SQL 数据库和 Azure Synapse Analytics IP 防火墙规则。 此检查枚举所有数据库级防火墙规则,以便可以识别并处理对其所做的任何更改。 SQL 数据库

Azure Synapse
VA2065 应严格按照最低限度跟踪和维护服务器级防火墙规则 在你指定哪些 IP 地址具有权限之前,Azure SQL 服务器级防火墙会阻止所有对数据库的访问,以帮助保护数据。 服务器级防火墙规则基于每个请求的起始 IP 地址授予对属于该服务器的所有数据库的访问权限。 可以通过 Transact-SQL 以及 Azure 门户或 PowerShell 创建和管理服务器级防火墙规则。 有关详细信息,请参阅 Azure SQL 数据库和 Azure Synapse Analytics IP 防火墙规则。 此检查枚举所有服务器级防火墙规则,以便可以识别并处理对其所做的任何更改。 SQL 数据库

Azure Synapse
VA2111 应删除示例数据库 Microsoft SQL Server 附带了几个示例数据库。 此规则检查是否已删除示例数据库。 SQL Server 2012+

SQL 托管实例
VA2120 应禁用可能影响安全性的功能 SQL Server 能够提供多种功能和服务。 某些默认提供的功能和服务可能是不必要的,启用它们可能会对系统的安全性产生不利影响。 此规则检查是否已禁用这些功能。 SQL Server 2012+

SQL 托管实例
VA2121 应禁用“OLE 自动化过程”功能 SQL Server 能够提供多种功能和服务。 某些默认提供的功能和服务可能是不必要的,启用它们可能会对系统的安全性产生不利影响。 “OLE 自动化过程”选项控制是否可以在 Transact-SQL 批处理中实例化 OLE 自动化对象。 这些过程是扩展存储过程,允许 SQL Server 用户执行 SQL Server 外部的函数。 不管它有何优点,但它可能会被用于漏洞攻击,被认为是一种在目标计算机上植入文件的常用机制。 建议使用 PowerShell 代替此工具。 此规则检查是否已禁用“OLE 自动化过程”功能。 SQL Server 2012+

SQL 托管实例
VA2122 应禁用“用户选项”功能 中型 SQL Server 能够提供多种功能和服务。 某些默认提供的功能和服务可能是不必要的,启用它们可能会对系统的安全性产生不利影响。 用户选项指定了适用于所有用户的全局默认值。 将建立一个用户工作会话期间使用的默认查询处理选项的列表。 用户选项允许你更改 SET 选项的默认值(如果服务器的默认设置不合适)。 此规则检查是否已禁用“用户选项”功能。 SQL Server 2012+

SQL 托管实例
VA2126 应当禁用可能会影响安全性的扩展性功能(如果不需要这些功能) SQL Server 提供了各种功能和服务。 某些默认提供的功能和服务可能是不必要的,启用它们可能会对系统的安全性产生不利影响。 此规则检查是否禁用了允许将数据提取到外部数据源和允许使用某些远程语言扩展来执行脚本的配置。 SQL Server 2016+

删除的规则

规则 ID 规则标题
VA1021 应删除全局临时存储过程
VA1024 应当启用 C2 审核模式
VA1069 应撤销非系统管理员从系统表和视图中进行选择的权限
VA1090 确保所有政府现成的 (GOTS) 和自定义的存储过程都已加密
VA1103 仅使用具有 SAFE_ACCESS 权限的 CLR
VA1229 注册表和 SQL Server 配置中的文件流设置应匹配
VA1231 应禁用文件流 (SQL)
VA1234 应启用通用标准设置
VA1252 通过服务器审核规范审核和集中管理的事件列表。
VA1253 通过服务器审核规范审核和集中管理的 DB 范围事件的列表
VA1263 列出系统中的所有活动审核
VA1266 应对所有 SQL 登录名设置“MUST_CHANGE”选项
VA1276 应禁用代理 XPS 功能
VA1286 不应直接向主体(OBJECT 或 COLUMN)授予数据库权限
VA2000 应向最小主体集授予具有重大影响的数据库范围权限
VA2001 应向最小主体集授予对对象或列具有重大影响的数据库范围权限
VA2002 应向最小主体集授予对各种安全对象具有重大影响的数据库范围权限
VA2010 应向最小主体集授予具有中等影响的数据库范围权限
VA2021 应向最小主体集授予对对象或列的 ALTER 数据库范围权限
VA2022 应向最小主体集授予对各种安全对象的 ALTER 数据库范围权限
VA2030 应向最小主体集授予 SELECT 或 EXECUTE 数据库范围权限
VA2031 应向最小主体集授予 SELECT 数据库范围权限
VA2032 应向最小主体集授予对架构的 SELECT 或 EXECUTE 数据库范围权限
VA2034 应向最小主体集授予对 XML 架构集合的 EXECUTE 数据库范围权限
VA2040 应向最小主体集授予影响较小的数据库范围权限
VA2041 应向最小主体集授予对对象或列影响较小的数据库范围权限
VA2042 应向最小主体集授予对架构影响较小的数据库范围权限
VA2050 应向最小主体集授予 VIEW DEFINITION 数据库范围权限
VA2051 应向最小主体集授予对对象或列的 VIEW DEFINITION 数据库范围权限
VA2052 应向最小主体集授予对各种安全对象的 VIEW DEFINITION 数据库范围权限
VA2100 应向最小主体集授予具有重大影响的服务器范围权限
VA2101 应向最小主体集授予具有中等影响的服务器范围权限
VA2102 应向最小主体集授予影响较小的服务器范围权限
VA2104 应撤销 PUBLIC 对扩展存储过程的执行权限
VA2105 不应轻易猜到登录密码
VA2112 应撤销 PUBLIC 对数据转换服务 (DTS) 的权限
VA2115 最小主体集应该是具有中等影响的固定服务器角色的成员
VA2123 应禁用“远程访问”功能
VA2127 应禁用“外部脚本”功能

后续步骤