💾SQLserver核查清单
2026-5-21
| 2026-6-11
字数 3190阅读时长 8 分钟
type
Post
status
Published
date
May 21, 2026
slug
summary
数据库基线核查checklist
tags
数据库
等保
category
技术分享
icon
password

一、身份认证与账户策略

1.1 认证模式检查

1 (仅 Windows 认证) ,若为混合模式 (0),需确保 sa 已禁用或强密码。
notion image
返回值
含义
身份验证模式
1
仅集成身份验证
Windows 身份验证(只能用 Windows 账号登录,不支持 SQL Server 独立账号密码)
0
混合模式身份验证
SQL Server 和 Windows 身份验证(既可以用 Windows 账号,也可以用 sa 等独立账号登录)

1.2 sa 账户状态

is_disabled = 1 (禁用) ,若必须启用,必须重命名且设置强密码。
notion image

1.3 空账户

默认结果为空 ,严禁存在无密码账户。
notion image

1.4 登录失败锁定【未查看】

使用 Windows 身份验证

  • 当你使用 Windows 账户(如 DOMAIN\User)登录 SQL Server 时,SQL Server 完全依赖 Windows 操作系统进行身份验证。
  • 如果该 Windows 账户因为在其他服务(如远程桌面、文件共享)中密码输入错误过多而触发了 Windows 账户锁定策略,那么该账户在尝试登录 SQL Server 时也会失败,并提示账户已锁定。
  • 此时,SQL Server 只是“传递”了 Windows 的锁定状态。

使用 SQL Server 身份验证 (如 sa 账户)

  • 原生行为:SQL Server 2019 默认没有“连续失败 X 次自动锁定 Y 分钟”的原生配置功能。即使你开启了“强制实施密码策略” (CHECK_POLICY = ON),这也只是强制密码符合 Windows 的复杂性要求(长度、字符种类等),并不包含失败计数锁定功能。
  • 为何会被锁定?
      1. 手动禁用:管理员通过 ALTER LOGIN [name] DISABLE 禁用了账户。
      1. 映射关系:如果该 SQL 登录名实际上映射到了一个 Windows 主体(较少见,通常 SQL 登录名是独立的),则受 Windows 策略影响。
      1. 误解:很多时候,应用报错“登录失败”被误认为是“账户锁定”,实际上只是密码错误。
      1. 第三方扩展/审计:某些企业安全插件或触发器可能模拟了这种行为,但这并非 SQL Server 引擎的标准功能。

1.5 密码复杂度策略

在 Windows Server 2012 及更高版本(包括 2016, 2019, 2022)上,创建新的 SQL 登录名时,CHECK_POLICY 的默认值通常是 ON
如果此策略被启用,密码必须满足以下条件👇:
  1. 不包含用户名:密码不能包含用户账户名(SAM Account Name)或全名的一部分(超过两个连续字符)。
  1. 长度:至少 6 个字符(这是 Windows API 的硬性下限,尽管最佳实践建议更长)。
  1. 字符种类:必须包含以下四类字符中的三类:
      • 英文大写字母 (A-Z)
      • 英文小写字母 (a-z)
      • 数字 (0-9)
      • 非字母数字符号 (例如:! $ # %)
notion image
针对单一用户的检查方式:SQL Server 2019 Management Studio → 安全性 → 登录名 → 属性
notion image

二、权限管理与最小特权

2.1 sysadmin 成员列表

仅限必要管理员加入,严禁应用账号、普通用户加入此角色。
notion image

2.2 公共角色权限 (public)

  • 每个数据库都有 public 角色,所有数据库用户(包括新建的用户)默认自动成为其成员;
  • public 授权 = 给所有用户授权,因此严禁给 public 分配过高权限(如 ALTERCONTROLDELETE 等)。
  • 全新数据库中,public 仅默认拥有 CONNECT(连接数据库)、VIEW ANY COLUMN ENCRYPTION KEY DEFINITION 等基础权限,这是正常的;
  • 若输出中出现 SELECTINSERTEXECUTE 等权限,说明有人给 public 额外授权,存在权限风险。
notion image

2.3 Guest 用户状态

排查 guest 账户(数据库默认来宾账户)权限风险。
notion image
字段名
含义
关键说明
is_disabled
guest 账户是否禁用
0= 启用(高风险),1= 禁用(安全)
type_desc
账户类型
固定为 SQL_USER,是系统内置账户
principal_id
主体 ID
guest 账户的固定 ID 为 2,不可修改

2.4 xp_cmdshell 状态

查看 xp_cmdshell 的启用状态run_value = 1 是高风险状态,生产环境必须设为 0
notion image

2.5 其他扩展存储过程状态查询

notion image

三、网络与表面面积配置

3.1 端口/IP查看

  • 端口建议修改为非常用高位端口。
  • IP仅限非公网地址。
notion image

3.2 检查远程连接开关

notion image
远程DAC查看,run_value = 0 → 合规(仅本地可用,推荐); run_value = 1 → 不合规(允许远程使用DAC,高风险)。
notion image

3.3 加密连接

需要改为 Yes,同时需提前配置服务器证书(否则用自签名证书)。
notion image

四、审计与日志

4.1 登陆审计

notion image

4.2 日志轮转

notion image

4.3 日志信息

查看日志记录了的信息格式
notion image

4.4 默认跟踪配置

默认跟踪是 SQL Server 最轻量化的审计工具,几乎不消耗服务器资源,能自动记录以下关键操作(安全审计必备):
  • 数据库对象的创建 / 修改 / 删除(表、存储过程、视图等);
  • 登录账户的权限变更、创建 / 删除;
  • 数据库备份 / 还原、分离 / 附加操作;
  • 服务器配置选项的修改。
status = 1 (运行中) ,用于记录部分 DDL 操作和性能事件。
notion image

五、数据保护与加密

5.1 数据库加密状态

TDE(透明数据加密)是 SQL Server 对数据库文件的实时加密 / 解密,作用是:
  • 防止攻击者窃取数据库文件(.mdf/.ldf)后直接附加读取数据;
  • TDE 保护的是数据库文件本身,而非传输过程(传输加密需配合 “强制加密连接”);
  • 启用 TDE 后,务必备份加密证书和私钥,这是数据库恢复的关键。
notion image
进阶版:
notion image
字段 / 值
含义 & 合规要求
encryption_state = 3
数据库已启用 TDE 加密(合规状态,核心业务库推荐配置)
encryption_state = 0/NULL
未加密(无加密密钥,非核心库可接受,核心库高风险)
tempdb 加密状态
只要实例中有任意数据库启用 TDE,tempdb 会自动加密(属于正常现象)
encryptor_type
加密器类型:CERTIFICATE(证书,推荐)、ASYMMETRIC KEY(非对称密钥)

5.2 敏感数据列加密

实机核查密码、电话、身份证等敏感信息是否加密。
非通用型手段【根据实际列命名决定】:
notion image

六、补丁安全

6.1 补丁/版本查看

notion image
关键标识说明
  • RTM:初始发布版本(无补丁,必须升级);
  • SPx:服务包(Service Pack,大版本补丁);
  • CUx:累积更新(Cumulative Update,月度安全补丁);
  • GDR:安全更新(仅修复高危漏洞,无功能更新)。
  • 数据库
  • 等保
  • 白加黑上线CobaltStrike通杀主流杀软Mysql核查清单
    Loading...