SQL 漏洞评估规则参考指南

重要

注意:所有Microsoft Defender for Cloud功能将在中国地区的Azure正式停用每由世纪互联发布的公告

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

适用于: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics SQL Server(所有受支持的版本)

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

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

了解如何在 Azure 中实施漏洞评估。

了解如何查找和修复Azure SQL数据库中的漏洞

了解如何 查询、查看和导出漏洞评估结果

了解如何查看 Defender for SQL 安全警报

规则类别

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

1SQL Server 2012+是指 SQL Server 2012 年及更高版本的所有版本。

2SQL Server 2017+是指 2017 及更高版本的所有 SQL Server版本。

3SQL Server 2016+是指 SQL Server 2016 及更高版本的所有版本。

身份验证和授权

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

SQL Database
数据库用户 GUEST 不应是 SQL 数据库中任何角色的成员 24b8d8dd-4e2e-4cdf-9fb0-b480401a54e0
VA1042 应对除 mastermsdbtempdb 以外的所有数据库禁用数据库所有权链接 跨数据库所有权链接是所有权链接的扩展,只不过它跨越了数据库边界。 此规则检查是否对除 mastermsdbtempdb 以外的所有数据库禁用了此选项。 对于 mastermsdbtempdb,默认情况下启用跨数据库所有权链接。 SQL Server 2012+

SQL Managed Instance
对于 SQL Server 上除“master”、“msdb”和“tempdb”之外的所有数据库,应禁用数据库所有权链接 4ce5114e-d749-4569-b4e0-24853b1422a4
VA1043 主体 GUEST 应无权访问任何用户数据库 中型 来宾用户允许未映射到特定数据库用户的任何登录名访问数据库。 此规则检查来宾用户是否无法连接到任何数据库。 SQL Server 2012+

SQL Managed Instance
主体 GUEST 不应有权访问任何用户 SQL 数据库 9a330556-d9f3-43e5-bade-ca4170e10374
VA1046 应为所有 SQL 登录名启用 CHECK_POLICY CHECK_POLICY 选项允许根据域策略验证 SQL 登录名。 此规则检查是否为所有 SQL 登录名启用了 CHECK_POLICY 选项。 SQL Server 2012+

SQL Managed Instance
应为所有 SQL Server 的 SQL 登录名启用CHECK_POLICY 045516fd-3ec2-4d3f-a519-30f971f1e45f
VA1047 应为所有 SQL 登录名启用密码过期检查 密码过期策略用于管理密码的使用期限。 当SQL Server强制实施密码过期策略时,系统会提醒用户更改旧密码,并禁用已过期密码的帐户。 此规则检查是否为所有 SQL 登录名启用了密码过期策略。 SQL Server 2012+

SQL Managed Instance
应为 SQL Server 上的所有 SQL 登录名启用密码过期检查 a14a9bb7-237c-4dae-9b36-e8b63d47539c
VA1048 不应将数据库主体映射到 sa 帐户 攻击者可以利用映射到 sa 帐户的数据库主体将权限提升到 sysadmin SQL Server 2012+

SQL Managed Instance
不应将数据库主体映射到 SQL 数据库中的 sa 帐户 3cd5e6e8-71bb-40c4-8a08-204959e91a23
VA1052 删除作为服务器登录名的 BUILTIN\Administrators BUILTIN\Administrators 组包含Windows本地管理员组。 在旧版Microsoft SQL Server中,此组默认具有管理员权限。 此规则检查是否已从SQL Server中删除此组。 SQL Server 2012+ 应删除 BUILTIN\Administrators 作为 SQL Server 的服务器登录名 2b31ae5a-28ce-42a7-b80c-6430056978b3
VA1053 应重命名或禁用默认名称为 sa 的帐户 sa 是一个主体 ID 为 1 的已知帐户。 此规则验证是否已重命名或禁用 sa 帐户。 SQL Server 2012+

SQL Managed Instance
应在 SQL Server 上重命名和禁用默认名称为“sa”的帐户 f9be60bc-423f-4462-adb4-e1be62a9ff39
VA1054 不应向 PUBLIC 角色授予对对象或列的过多权限 每个SQL Server登录名都属于公共服务器角色。 如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,用户将继承向 public 角色授予的对该对象的权限。 此规则显示所有用户可通过 PUBLIC 角色访问的所有安全对象或列的列表。 SQL Server 2012+

SQL Database
不应向公共角色授予对 SQL 数据库中的对象或列的过度权限 6aed60ee-9f8a-47f1-a9d1-0305e0ed03ed
VA1058 应禁用 sa 登录名 sa 是一个主体 ID 为 1 的已知帐户。 此规则验证是否已禁用 sa 帐户。 SQL Server 2012+

SQL Managed Instance
应为 SQL Server 禁用“sa”登录 b1ce48d9-cd89-4d75-84a0-d0dc5505a898
VA1059 应禁用 xp_cmdshell xp_cmdshell生成Windows命令行界面,并将其传递给字符串以供执行。 此规则检查是否已禁用 xp_cmdshell。 SQL Server 2012+

SQL Managed Instance
应为 SQL Server 禁用xp_cmdshell eadae6a8-e9f4-4173-8c12-6f64703f9d01
VA1067 Database Mail未使用 XP 时应禁用 中型 此规则检查未配置database mail配置文件时是否禁用Database Mail。 Database Mail可用于从SQL Server Database Engine发送电子邮件,并且默认禁用。 如果不使用此功能,建议将其禁用以减少外围应用。 SQL Server 2012+ 在 SQL Server 上未使用 XP 时,应禁用Database Mail XP be5465f2-79a8-45aa-bf95-f6106bed0a57
VA1068 不应直接向主体授予服务器权限 服务器级权限与服务器级对象相关联,以规定哪些用户可以访问该对象。 此规则检查是否未直接向登录名授予服务器级权限。 SQL Server 2012+

SQL Managed Instance
不应直接向 SQL Server 的主体授予服务器权限 8f04b48b-b199-45d8-9e5e-c07705a3be2e
VA1070 数据库用户不应使用与服务器登录名相同的名称 数据库用户可能会使用与服务器登录名相同的名称。 此规则验证没有这样的用户。 SQL Server 2012+

SQL Managed Instance
数据库用户不应与模型 SQL 数据库的服务器登录名共享同名 da61956e-b092-4acd-8b89-a78ddc6e6a46
VA1072 身份验证模式应Windows身份验证 中型 有两种可能的身份验证模式:Windows身份验证模式和混合模式。 混合模式意味着SQL Server同时启用Windows authentication和SQL Server身份验证。 此规则检查身份验证模式是否设置为Windows身份验证。 SQL Server 2012+ 身份验证模式应Windows SQL Server 的身份验证 a89c44c5-0c04-4098-bd15-c617443995b6
VA1094 不应直接向主体授予数据库权限 权限是与安全对象关联的规则,用于规定哪些用户可以访问该对象。 此规则检查是否未直接向用户授予 DB 权限。 SQL Server 2012+

SQL Managed Instance
不应直接向 SQL Server 的主体授予数据库权限 f644db73-c0ef-4e1c-846a-5ccf9280b4c1
VA1095 不应向 PUBLIC 角色授予过多权限 中型 每个SQL Server登录名都属于公共服务器角色。 如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,该用户将继承授予该对象的 public 角色的权限。 这会显示向 PUBLIC 角色授予的所有权限的列表。 SQL Server 2012+

SQL Managed Instance

SQL Database
不应向 SQL 数据库中的 PUBLIC 角色授予过多权限 3f2a3bd7-5f36-4d4e-a0a9-f19933ec5bd9
VA1096 不应在数据库中向主体 GUEST 授予权限 每个数据库都包含一个名为 GUEST 的用户。 授予 GUEST 的权限由对数据库具有访问权限,但在数据库中没有用户帐户的用户继承。 此规则检查是否已撤销 GUEST 用户的所有权限。 SQL Server 2012+

SQL Managed Instance

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

SQL Managed Instance

SQL Database
不应向主体 GUEST 授予对 SQL 数据库中的对象或列的权限 063d0390-42cf-4bb5-82a0-72071e1a612f
VA1099 不应向 GUEST 用户授予对数据库安全对象的权限 每个数据库都包含一个名为 GUEST 的用户。 授予 GUEST 的权限由对数据库具有访问权限,但在数据库中没有用户帐户的用户继承。 此规则检查是否已撤销 GUEST 用户的所有权限。 SQL Server 2012+

SQL Managed Instance

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

SQL Managed Instance

SQL Database
不应在 SQL 数据库中使用应用程序角色 123285d4-ef1f-4543-a3ae-3f8656563b38
VA1248 用户定义的数据库角色不应为固定角色的成员 中型 若要轻松管理数据库中的权限SQL Server提供了多个角色,这些角色是将其他主体分组的安全主体。 它们类似于Microsoft Windows作系统中的组。 可将数据库帐户和其他SQL Server角色添加到数据库级角色中。 固定数据库角色的每个成员都可向同一个角色添加其他用户。 此规则检查用户定义的角色是否为固定角色的成员。 SQL Server 2012+

SQL Managed Instance

SQL Database

Azure Synapse
用户定义的数据库角色不应是 SQL 数据库中固定角色的成员 31c5a284-c8cd-47c3-9242-2429ed5adf7c
VA1267 包含的用户应使用Windows身份验证 中型 包含用户是存在于数据库中并且不需要登录映射的用户。 此规则检查包含的用户是否使用Windows身份验证。 SQL Server 2012+

SQL Managed Instance
包含的用户应在SQL Server数据库中使用Windows身份验证 25cdb02c-6bd8-4444-8318-9df003edc170
VA1280 应最大程度减少授予 public 的服务器权限 中型 每个SQL Server登录名都属于公共服务器角色。 如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,用户将继承向 public 角色授予的对该对象的权限。 此规则检查是否最大程度减少了授予 public 的服务器权限。 SQL Server 2012+

SQL Managed Instance
应最大程度地减少向公共授予的服务器权限 b58b2914-1aec-4469-ae64-21e0078b1729
VA1282 应删除孤立角色 孤立角色是指没有成员的用户定义角色。 应消除系统中不需要的孤立角色。 此规则检查是否有任何孤立角色。 SQL Server 2012+

SQL Managed Instance

SQL Database

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

SQL Managed Instance

SQL Database

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

SQL Managed Instance

SQL Database

Azure Synapse
应向最小主体集授予对 SQL 数据库中的对象或列的 EXECUTE 权限 3bee4ca7-e768-497f-ac60-0322225a93ff2
VA2103 应撤销对扩展存储过程不必要的执行权限 中型 扩展存储过程是SQL Server实例可以动态加载和运行的 DLL。 SQL Server打包了许多扩展存储过程,这些存储过程允许与系统 DLL 交互。 此规则检查是否已撤销对扩展存储过程不必要的执行权限。 SQL Server 2012+

SQL Managed Instance
对于 SQL Server,应撤销对扩展存储过程的不必要的执行权限 0262e851-d99b-4299-bacc-136c92941541
VA2107 最小主体集应是固定Azure SQL数据库主数据库角色的成员 SQL 数据库在可以添加用户帐户的 master 数据库中提供了两个受限的管理角色,这些角色可授予创建数据库或管理登录名的权限。 此规则检查最小主体集是否为这些管理角色的成员。 SQL 数据库

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

SQL Managed Instance

SQL Database

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

SQL Managed Instance

SQL Database

Azure Synapse
最小主体集应该是 SQL 数据库中固定影响较低的数据库角色的成员 267df805-7fa4-415f-8b2e-08deefdb5e1b
VA2110 应撤销用于访问注册表的执行权限 注册表扩展存储过程允许Microsoft SQL Server读取注册表中的写入和枚举值和键。 企业管理员使用它们来配置服务器。 此规则检查是否已撤销所有用户(dbo 除外)执行注册表扩展存储过程的权限。 SQL Server 2012+

SQL Managed Instance
应限制对 SQL Server 访问注册表的执行权限 b66a88e5-8c46-47f2-9107-5ed84da7270f
VA2113 只能向 SSIS 角色授予数据转换服务 (DTS) 权限 中型 数据转换服务 (DTS) 是一组对象和实用工具,它们允许对数据库自动执行提取、转换和加载操作。 这些对象是 DTS 包,其组件和实用工具称为 DTS 工具。 此规则检查是否仅向 SSIS 角色授予了使用 DTS 系统存储过程的权限,以及是否已撤销 PUBLIC 角色使用 DTS 系统存储过程的权限。 SQL Server 2012+

SQL Managed Instance
仅应向 MSDB SQL 数据库中的 SSIS 角色授予数据转换服务 (DTS) 权限 0d9a8166-01b2-434c-9791-c589b119eea8
VA2114 最小主体集应该是影响较大的固定服务器角色的成员 SQL Server提供角色来帮助管理权限。 角色是对其他主体进行分组的安全主体。 服务器级角色的权限范围为服务器范围。 此规则检查最小主体集是否为固定服务器角色的成员。 SQL Server 2012+

SQL Managed Instance
最小主体集应是 SQL Server 的固定服务器角色的成员 d8cfa23e-9485-44a4-831e-757c71e48988
VA2129 对已签名模块的更改应得到授权 可以使用证书或非对称密钥对存储过程、函数或触发器进行签名。 这适用于以下情况:无法通过所有权链接继承权限,或所有权链中断,例如动态 SQL。 此规则检查对已签名模块所做的更改,这可能表明存在恶意使用的情况。 SQL Server 2012+

SQL Database

SQL Managed Instance
对已签名模块的更改应获得 SQL 数据库的授权 e058e189-97da-4c3b-8361-e7097a93131c
VA2130 跟踪有权访问数据库的所有用户 此检查跟踪有权访问数据库的所有用户。 确保已根据这些用户在组织中的当前角色对其进行了授权。 SQL 数据库

Azure Synapse
跟踪有权访问 SQL 数据库的所有用户 eeed5c32-daff-489c-8307-76035ee85274
VA2201 应禁用具有常用名称的 SQL 登录名 此规则检查具有数据库所有者权限的帐户是否有常用名称。 将常用名称分配给具有数据库所有者权限的帐户会增加暴力攻击成功的可能性。 SQL Server 2012+ 应为 SQL Server 禁用具有常用名称的 SQL 登录名 467115f4-5145-43a9-93a8-7dbfaa1eedc4

审核与日志记录

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

SQL Managed Instance
应为 SQL Server 启用默认跟踪 b19610cf-e5f6-4490-83c0-132c9af68e66
VA1091 将“登录审核”设置为跟踪登录时,应对成功和失败的登录尝试都启用审核(默认跟踪) SQL Server登录审核配置使管理员能够跟踪登录到SQL Server实例的用户。 如果用户选择计数“登录审核”来跟踪登录到SQL Server实例的用户,则必须为成功和失败的登录尝试启用它。 SQL Server 2012+ 当“登录审核”设置为跟踪 SQL Server 的登录名时,应同时启用对成功和失败登录尝试(默认跟踪)的审核 96dd0622-2d0d-49ad-9042-d92a228b0e1f
VA1093 错误日志的最大数量应为 12 个或更多 每个SQL Server错误日志都将包含自上次重启SQL Server以来或自上次回收错误日志以来发生的失败/错误的所有信息。 此规则检查错误日志的最大数量是否为 12 个或更多。 SQL Server 2012+ SQL Server 的错误日志的最大数目应为 12 或更多 31e24118-a540-4b40-bef1-952de1af23cb
VA1258 数据库所有者符合预期 数据库所有者可以在数据库上执行所有配置和维护活动,还可以删除SQL Server中的数据库。 跟踪数据库所有者对于避免某些主体拥有过多权限很重要。 创建一个基线,该基线定义数据库的预期数据库所有者。 此规则检查数据库所有者是否符合基线中的定义。 SQL Server 2016+3

SQL Database

Azure Synapse
数据库所有者应与 SQL 数据库的预期一样 f7fde937-a0b2-47a5-89ae-fcb475df5b82
VA1264 应为成功和失败的登录尝试都启用审核 SQL Server审核配置使管理员能够跟踪登录到他们负责SQL Server实例的用户。 此规则检查是否为成功和失败的登录尝试都启用了审核。 SQL Server 2012+

SQL Managed Instance
应为 SQL Server 启用成功和失败登录尝试的审核 2b9eafde-304b-471b-8d9a-7a4966e40db8
VA1265 应为包含 DB 身份验证的成功和失败登录尝试都启用审核 中型 SQL Server审核配置使管理员能够跟踪用户日志记录,以SQL Server他们负责的实例。 此规则检查是否为包含 DB 身份验证的成功和失败登录尝试都启用了审核。 SQL Server 2012+

SQL Managed Instance
应为 SQL 数据库启用成功和失败的登录尝试审核包含的数据库身份验证 e0710b96-f76a-435f-8e0d-3a18703c19a7
VA1281 用户定义角色的所有成员身份应符合预期 中型 用户定义的角色是由用户定义的安全主体,用于对主体进行分组,以便轻松管理权限。 监视这些角色对于避免拥有过多权限很重要。 创建一个基线,为每个用户定义角色定义预期的成员身份。 此规则检查用户定义角色的所有成员身份是否符合基线中的定义。 SQL Server 2012+

SQL Managed Instance

SQL Database

Azure Synapse
用户定义角色的所有成员身份都应在 SQL 数据库中 e8b826e1-d31b-4545-8a0c-8f640d4ad5d3
VA1283 系统中至少应有 1 个活动审核 审核SQL Server Database Engine或单个数据库的实例涉及跟踪和记录Database Engine上发生的事件。 SQL Server Audit 对象收集要监视的服务器或数据库级作和作组的单个实例。 此规则检查系统中是否至少有一个活动审核。 SQL Server 2012+

SQL Managed Instance
对于 SQL Server,系统中应至少有 1 个活动审核 c4671054-a31b-4e7e-8393-c62381a933b9
VA2061 应在服务器级别启用审核 Azure SQL Database审核跟踪数据库事件,并将其写入Azure存储帐户中的审核日志。 审核可帮助你了解数据库活动,深入了解可能表明业务问题或疑似安全违规的偏差和异常,并帮助你满足合规性要求。 有关详细信息,请参阅 Azure SQL Auditing。 此规则检查是否已启用审核。 SQL 数据库

Azure Synapse
应在 SQL Server 的服务器级别启用审核 de1a511e-6ccd-4bf0-8d08-49363b1a1085

数据保护

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

SQL Managed Instance

SQL Database

Azure Synapse
应为 SQL 数据库启用透明数据加密 aede6ed5-32a2-489f-94b1-85767847b595
VA1220 应通过 TLS 保护使用 TDS 的数据库通信 Microsoft SQL Server可以使用安全套接字层(SSL)或传输层安全性(TLS)来加密在SQL Server实例与客户端应用程序之间跨网络传输的数据。 此规则检查通过 TLS 加密与SQL Server的所有连接。 SQL Server 2012+

SQL Managed Instance
应通过 SQL Server 的 TLS 保护使用 TDS 的数据库通信 b13ff618-06ab-4cd4-a181-9d56eb6dc76a
VA1221 数据库加密对称密钥应使用 AES 算法 SQL Server使用加密密钥来帮助保护存储在服务器数据库中的数据凭据和连接信息。 SQL Server有两种类型的密钥:对称密钥和非对称密钥。 此规则检查数据库加密对称密钥是否使用 AES 算法。 SQL Server 2012+

SQL Managed Instance

SQL Database

Azure Synapse
数据库加密对称密钥应在 SQL 数据库中使用 AES 算法 df777b52-0d5e-434b-953a-0285f83478c7
VA1222 单元级加密密钥应使用 AES 算法 单元级加密 (CLE) 允许使用对称密钥和非对称密钥对数据进行加密。 此规则检查单元级加密对称密钥是否使用 AES 算法。 SQL Server 2012+

SQL Managed Instance
Cell-Level 加密密钥应在 SQL 数据库中使用 AES 算法 b3d7132d-1fe7-4408-91ae-dc3a188bfd26
VA1223 证书密钥应使用至少 2048 位 RSA 和其他加密算法使用证书密钥来保护数据。 这些密钥必须具有足够的长度才能保护用户数据。 此规则检查所有证书的密钥长度是否至少为 2048 位。 SQL Server 2012+

SQL Managed Instance

SQL Database

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

SQL Server 2014

SQL Database
非对称密钥的长度应在 SQL 数据库中至少为 2048 位 becd2bef-27ac-4d8b-8e2a-73dfbfc7a4f5
VA1279 应为 TDS 启用强制加密 启用Database Engine强制加密选项时,无论是否选中“加密连接”选项(如 SSMS),都会加密客户端和服务器之间的所有通信。 此规则检查是否已启用“强制加密”选项。 SQL Server 2012+ 应为 SQL Server 的 TDS 启用强制加密 5765385f-4da2-4a26-a89e-7cf66a14ad8d
VA2060 应在服务器级别启用 SQL 威胁检测 中型 SQL 威胁检测提供了一个安全层,用于检测数据库中的潜在漏洞和异常活动,例如 SQL 注入攻击和异常行为模式。 检测到潜在威胁时,威胁检测会通过电子邮件和Microsoft Defender for Cloud发送可作的实时警报,其中包括针对特定威胁的明确调查和修正步骤。 有关详细信息,请参阅配置威胁检测。 此检查验证是否已启用 SQL 威胁检测
SQL Managed Instance

SQL Database

Azure Synapse
应在 SQL Server 级别启用 SQL 威胁检测 207ea640-5acf-49ad-92b4-8df60e793fef

安装更新和修补

规则 ID 规则标题 规则严重性 规则描述 平台 推荐标题 评估 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
应为 SQL Server 安装最新更新 fb8ee986-4557-4bb6-9bf7-626abdaa1b72
VA2128 低于 SQL Server 2012 的 SQL Server 版本不支持漏洞评估 若要在SQL Server上运行漏洞评估扫描,服务器需要升级到 SQL Server 2012 或更高版本,SQL Server 2008 R2 及更低版本不再受Microsoft支持。 有关详细信息,请参阅 SQL Server 2012+

SQL Managed Instance

SQL Database

Azure Synapse
仅应在 2012 年 SQL Server 及更高版本上配置漏洞评估 82735d78-e25e-4dc1-bf02-11136003cd69

Surface面积减少

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

SQL Managed Instance
应为 SQL Server 禁用 CLR ee9b8a8c-2db6-4584-87a5-8567784b4733
VA1027 应删除未跟踪的受信任程序集 标记为 UNSAFE 的程序集必须通过证书或非对称密钥进行签名,且该证书或非对称密钥具有已在 master 数据库中获得 UNSAFE ASSEMBLY 权限的相应登录名。 受信任的程序集可以绕过此要求。           SQL Server 2017+

SQL Managed Instance
应为 SQL Server 删除未跟踪的受信任程序集 04cd2847-1ef5-4f97-be26-9907e3a4b08d
VA1044 除非特别需要,否则应禁用远程管理员连接 此规则检查是否禁用了远程专用管理连接(如果它们未用于群集)以减少攻击面。 SQL Server提供专用管理员连接(DAC)。 DAC 允许管理员访问正在运行的服务器以执行诊断函数或Transact-SQL语句,或者排查服务器上的问题,并在远程启用时成为攻击的有吸引力的目标。         SQL Server 2012+

SQL Managed Instance
除非 SQL 数据库特别需要,否则应禁用远程管理员连接 5b979ba8-b33f-40a6-88f0-aa05f90fbf1f
VA1051 应在所有数据库上禁用AUTO_CLOSE AUTO_CLOSE 选项指定在最后一个用户断开连接后,数据库是否正常关闭并释放资源。 尽管它有优点,但它可能会通过主动打开和关闭数据库来导致拒绝服务,因此禁用此功能非常重要。 此规则检查是否在当前数据库上禁用了此选项。         SQL Server 2012+         应为 SQL 数据库禁用AUTO_CLOSE f5b406da-9b07-4ea5-931e-a15194a61fcf
VA1066 应删除未使用的 Service Broker 终结点 Service Broker 为SQL Server提供队列和可靠的消息传送。 Service Broker 用于使用单个SQL Server实例的应用程序,以及跨多个实例分配工作的应用程序。 Service Broker 终结点提供用于传输安全性和消息转发的选项。 此规则枚举所有 Service Broker 终结点。 应删除未使用的终结点。         SQL Server 2012+         应为 SQL Server 删除未使用的 Service Broker 终结点 76052b85-52f4-4a0f-9f14-ad8e78426578
VA1071 应禁用“扫描启动存储过程”选项 启用“扫描启动过程”时,SQL Server扫描并运行服务器上定义的所有自动运行存储过程。 如果启用此选项SQL Server扫描并运行服务器上定义的所有存储过程。 此规则检查是否已禁用此选项。         SQL Server 2012+         应为 SQL Server 禁用“扫描启动存储过程”选项 3f03bcc2-d66c-4b12-b3bc-406b2cfe3cd5
VA1092 SQL Server Browser 服务不应播发SQL Server实例 SQL Server使用 SQL Server Browser 服务来枚举计算机上安装的Database Engine实例。 这使客户端应用程序能够浏览服务器并帮助客户端在同一台计算机上区分Database Engine的多个实例。 此规则检查是否隐藏了 SQL 实例。         SQL Server 2012+         sql Server SQL Server Browser 服务不应播发SQL Server实例 0fccb942-d1e9-47c7-87cd-c98bcfd8e339
VA1102 应在除 MSDB 之外的所有数据库上禁用可信位 TRUSTWORTHY 数据库属性用于指示SQL Server实例是否信任数据库及其内容。 如果启用此选项,则使用模拟上下文的数据库模块(例如,用户定义函数或存储过程)可以访问数据库外部的资源。 此规则验证是否在除 MSDB 以外的所有数据库上禁用了可信位。         SQL Server 2012+

SQL Managed Instance
应在除 SQL 数据库的 MSDB 以外的所有数据库上禁用可信位 4711c18c-eac4-488d-a9dd-91e0286df063
VA1143 “dbo”用户不应用于正常服务作 “dbo”或数据库所有者是一种用户帐户,该帐户拥有执行数据库中所有活动的暗示性权限。 sysadmin 固定服务器角色的成员将自动映射到 dbo。 此规则检查 dbo 是否不是唯一可以访问此数据库的帐户。 请注意,在新创建的干净数据库上,此规则将失败,直到创建其他角色为止。         SQL Server 2012+

SQL Managed Instance

SQL Database

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

SQL Managed Instance
只有“dbo”才有权访问 Model SQL 数据库 27f8f855-c834-4611-be7c-d8f443cf17ce
VA1230 应禁用 Filestream FILESTREAM 通过将 varbinary (max) 二进制大型对象 (BLOB) 数据存储为文件系统中的文件,将 SQL Server Database Engine 与 NTFS 文件系统集成。 Transact-SQL语句可以插入、更新、查询、搜索和备份 FILESTREAM 数据。 在 SQL Server 上启用文件流会公开额外的 NTFS 流式处理 API,这会增加其攻击面,使其容易遭受恶意攻击。 此规则检查是否已禁用文件流。         SQL Server 2012+         应为 SQL Server 禁用文件流 fe3db657-719e-4134-9de4-e9110e67d23f
VA1235 应禁用服务器配置“复制 XP” 禁用弃用的服务器配置“复制 XPS”以限制攻击面。 这是仅限内部使用的配置设置。         SQL Server 2012+

SQL Managed Instance
应为 SQL Server 禁用服务器配置“复制 XP” 848680cd-73d9-4a5f-8f02-b58b32c00f96
VA1244 应从 SQL Server 数据库中删除孤立用户 数据库用户存在于数据库上,但在 master 数据库中没有相应的登录名或作为外部资源(例如,Windows用户)称为孤立用户,它应被删除或重新映射到有效的登录名。 此规则检查是否有孤立用户。         SQL Server 2012+

SQL Managed Instance
应从 SQL Server 数据库中删除孤立用户 d2f665b3-3cb5-460e-8d52-eb92a57067aa
VA1245 dbo 信息应在目标 DB 和 master 之间保持一致 任何数据库都存在与 dbo 标识有关的冗余信息:存储在数据库本身的元数据,以及存储在 master DB 中的元数据。 此规则检查目标 DB 与 master 之间的此信息是否一致。         SQL Server 2012+

SQL Managed Instance
数据库中的数据库所有者信息应与 SQL 数据库的 master 数据库中相应的数据库所有者信息匹配 ff38d4d1-f98b-4f49-b096-e40ad8898b01
VA1247 不应有标记为自动启动的 SP 当SQL Server配置为“扫描启动 procs”时,服务器将扫描主数据库以查找标记为自动启动的存储过程。 此规则检查是否有标记为自动启动的 SP。         SQL Server 2012+         不应将 SP 标记为 SQL Server 自动启动 7c009298-050f-4ec6-b9ec-2f7761ed031f
VA1256 不应在数据库中定义用户 CLR 程序集 CLR 程序集可用于在SQL Server进程中执行任意代码。 此规则检查数据库中是否没有用户定义的 CLR 程序集。         SQL Server 2012+

SQL Managed Instance
不应在 SQL 数据库中定义用户 CLR 程序集 e34cd505-f157-4dce-84d8-5d38dfb2cb6f
VA1277 应启用 Polybase 网络加密 PolyBase 是一种从 SQL Server 中访问和合并非关系数据和关系数据的技术。 Polybase 网络加密选项配置SQL Server,以在使用 Polybase 时加密控制和数据通道。 此规则验证是否已启用此选项。         SQL Server 2016+         应为 SQL 数据库启用 Polybase 网络加密 6ef039e5-8219-4d20-ab60-7f5c3bad95de
VA1278 创建外部密钥管理提供程序的基线 SQL Server可扩展密钥管理(EKM)使第三方 EKM/硬件安全模块(HSM)供应商能够在SQL Server中注册其模块。 注册SQL Server用户可以使用存储在 EKM 模块上的加密密钥时,此规则将显示系统中正在使用的 EKM 提供程序列表。         SQL Server 2012+

SQL Managed Instance
为 SQL Server 创建外部密钥管理提供程序的基线 b8a39ba4-f129-4656-a089-27ff4c5361d6
VA2062 数据库级防火墙规则不应授予过多的访问权限 Azure SQL Database级防火墙通过阻止对数据库的所有访问来保护数据,直到指定哪些 IP 地址具有权限。 数据库级防火墙规则基于每个请求的起始 IP 地址授予对特定数据库的访问权限。 主数据库和用户数据库的数据库级防火墙规则只能通过Transact-SQL创建和管理(与服务器级防火墙规则不同,这些规则也可以使用Azure门户或 PowerShell 创建和管理)。 有关详细信息,请参阅 Azure SQL Database 和 Azure Synapse Analytics IP 防火墙规则。 此检查验证数据库级防火墙规则所授权的 IP 地址不能超过 255 个。         SQL 数据库

Azure Synapse
数据库级防火墙规则不应为 SQL Server 授予过度访问权限 2caca086-d941-413f-90ef-d8a593c8b900
VA2063 服务器级防火墙规则不应授予过度访问权限 Azure SQL服务器级防火墙通过阻止对数据库的所有访问来保护服务器,直到指定哪些 IP 地址具有权限。 服务器级防火墙规则基于每个请求的起始 IP 地址授予对属于该服务器的所有数据库的访问权限。  只能通过Transact-SQL以及Azure门户或 PowerShell 创建和管理服务器级防火墙规则。 有关详细信息,请参阅 Azure SQL Database 和 Azure Synapse Analytics IP 防火墙规则。 此检查验证服务器级防火墙规则所授权的 IP 地址不能超过 255 个。         SQL 数据库

Azure Synapse
服务器级防火墙规则不应为 SQL Server 授予过多的访问权限 0412d153-1963-4d9d-866b-5fe0c61c2a05
VA2064 应至少跟踪和维护数据库级防火墙规则 Azure SQL Database级防火墙通过阻止对数据库的所有访问来保护数据,直到指定哪些 IP 地址具有权限。 数据库级防火墙规则基于每个请求的起始 IP 地址授予对特定数据库的访问权限。 主数据库和用户数据库的数据库级防火墙规则只能通过Transact-SQL创建和管理(与服务器级防火墙规则不同,这些规则也可以使用Azure门户或 PowerShell 创建和管理)。 有关详细信息,请参阅 Azure SQL Database 和 Azure Synapse Analytics IP 防火墙规则。 此检查枚举所有数据库级防火墙规则,以便可以识别并处理对其所做的任何更改。         SQL 数据库

Azure Synapse
应至少跟踪和维护 SQL Server 的数据库级防火墙规则 a0f95121-3aa8-40da-a803-d7dda3e53dee
VA2065 应至少跟踪和维护服务器级防火墙规则 Azure SQL服务器级防火墙通过阻止对数据库的所有访问来保护数据,直到指定哪些 IP 地址具有权限。 服务器级防火墙规则基于每个请求的起始 IP 地址授予对属于该服务器的所有数据库的访问权限。 可以通过Transact-SQL以及Azure门户或 PowerShell 创建和管理服务器级防火墙规则。 有关详细信息,请参阅 Azure SQL Database 和 Azure Synapse Analytics IP 防火墙规则。 此检查枚举所有服务器级防火墙规则,以便可以识别并处理对其所做的任何更改。         SQL 数据库

Azure Synapse
应在 SQL Server 上至少跟踪和维护服务器级防火墙规则 8bde1a6b-a583-4a91-b1b5-0366e605cdf4
VA2111 应删除示例数据库 Microsoft SQL Server随附了多个示例数据库。 此规则检查是否已删除示例数据库。         SQL Server 2012+

SQL Managed Instance
应删除 SQL Server 的示例数据库 aca36760-8cab-4b04-84d8-9826757bb3ca
VA2120 应禁用可能影响安全性的功能 SQL Server能够提供各种功能和服务。 某些默认提供的功能和服务可能是不必要的,启用它们可能会对系统的安全性产生不利影响。 此规则检查是否已禁用这些功能。         SQL Server 2012+

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

SQL Managed Instance
应为 SQL Server 禁用“OLE 自动化过程”功能 eaafd365-6eb2-4e02-90b4-43e0f0a86638
VA2122 应禁用“用户选项”功能 SQL Server能够提供各种功能和服务。 某些默认提供的功能和服务可能是不必要的,启用它们可能会对系统的安全性产生不利影响。 用户选项指定了适用于所有用户的全局默认值。 将建立一个用户工作会话期间使用的默认查询处理选项的列表。 用户选项允许你更改 SET 选项的默认值(如果服务器的默认设置不合适)。 此规则检查是否已禁用“用户选项”功能。         SQL Server 2012+

SQL Managed Instance
应为 SQL Server 禁用“用户选项”功能 927e9d4f-3f7c-495c-9d69-05cd47ee0369
VA2126 如果需要,应禁用可能影响安全性的扩展性功能 SQL Server提供各种功能和服务。 某些默认提供的功能和服务可能是不必要的,启用它们可能会对系统的安全性产生不利影响。 此规则检查是否禁用了允许将数据提取到外部数据源和允许使用某些远程语言扩展来执行脚本的配置。         SQL Server 2016+         如果 SQL Server 不需要,则应禁用可能影响安全性的扩展性功能 199a4141-7a0f-4d06-8eac-12431a6655ea

删除的规则

规则 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 应禁用“外部脚本”功能

后续步骤