# 05、SQL Server数据库测评

> SQL Server 数据库三级等保现场测评：登录与口令策略、Server Audit 三级审计对象、TDE 与 Always Encrypted 加密、 Always On 高可用与备份恢复的核查命令、判定标准与证据留存要求。

---

LLMS index: [llms.txt](/wikis/llms.txt)

---

> 定位：SQL Server 数据库作为测评对象的**现场核查方法与判定标准**，按控制点给出实测判据（示例环境 Windows 10 + SQL Server 2019 RTM 15.0.2000.5）。
> 适用版本：SQL Server 2012~2022（`sp_configure` / C2 审计 / SSMS 路径基本一致；口令哈希算法在 2025 起有变化，见数据保密性 b)）。
> 配套测评：[05、SQL Server 测评命令单](../数据库测评命令/05-sql-server/)；配套加固：本板块暂无 SQL Server 加固专篇，口令/锁定策略联动操作见 [05、Windows操作系统安全加固](../../../reinforce/服务器/05windows操作系统安全加固/)；高风险口径：[22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。

<div class="alert alert-warning" role="alert">


文中出现的「默认」「一般」等表述均为**初判倾向**，不是结论。
现场必须经上机核查 + 访谈 + 配置/制度核对三方印证后定论，并在报告中写明取证来源。
</div>


<div class="alert alert-danger" role="alert">


**SQL Server 的口令策略与账户锁定策略依赖 Windows 操作系统**：数据库侧只有
`CHECK_POLICY` / `CHECK_EXPIRATION` 两个开关，实际的复杂度、最小长度、锁定阈值全部由
Windows 账户策略提供。**数据库开关与 OS 策略须同时成立才生效**，
只看数据库侧或只看 OS 侧都会得出错误结论。
</div>


> 使用说明：
>
> - 本文所有命令均为**只读取证**命令，不修改配置、不重启服务、不执行清除类操作；确需变更由被测单位运维方在授权下实施。
> - 命令回显本身即证据，须连同命令行一起截图；示例中的地址、账户、路径均为演示值，现场须替换为真实取证结果，并对个人信息与内网管理地址脱敏后再入报告。
> - 命令不存在或输出与示例差异较大时，先确认产品版本与部署形态（单机/集群/容器/云托管），再换用等效命令或转入配置文件、管理控制台取证，**不得据命令缺失直接判不符合**。
> - 文中「默认」「一般」等表述均为**初判倾向**，须经上机核查 + 访谈 + 配置/制度核对三方印证后定论，并在报告中写明取证来源。
>
> 不适用标识说明：
>
> - 使用 `【不适用】` 明确标记现场可判定为不适用的控制点，并写明判定依据。
> - 依据 GB/T 28448-2019「按测评对象实际承载功能与数据处理范围判定」原则：控制能力由上层应用、统一认证平台、前置代理、堡垒机、宿主操作系统或云托管平台承载时，应注明测评单元边界后判定不适用或转由上位组件核查，不得机械按缺失判不符合。
> - 产品版本确实不提供该能力（如社区版无审计插件）时，须核查替代措施并按替代措施的实际效果定档，不得直接判不适用。

## 一、SQL Server 数据库介绍

SQL Server 是美国 Microsoft 公司推出的关系型数据库系统，是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统。

## 二、基础信息

> **对应控制点**：非独立控制点（测评对象与资产确认）；部署形态、版本与冗余情况佐证 8.1.2.1 网络架构 e) 关键设备硬件冗余
>
> **判定要点**：本节为测评对象确认，不单独出结论；版本、监听端口、运行账户、数据目录、部署形态（单机/集群/容器）未取全时，后续控制点的判定口径无法确定，应先补齐再进入控制点核查。
>
> **取证要求**：版本回显截图、监听端口与进程截图、运行账户截图、配置文件与数据目录路径截图、集群拓扑或部署说明。

```sql
SELECT @@VERSION;                                              -- 版本与补丁级别（对照漏洞通告）
SELECT name, LOGINPROPERTY([name], 'PasswordLastSetTime') AS PasswordChanged
  FROM sys.sql_logins;                                          -- 口令最后修改时间
SELECT name, is_policy_checked, is_expiration_checked, is_disabled
  FROM sys.sql_logins;                                          -- 强制密码策略 / 强制过期 / 是否禁用
SELECT * FROM sys.sql_logins;                                   -- 仅 SQL Server 身份验证登录名
SELECT name, type_desc, is_disabled FROM sys.server_principals;  -- 含 Windows 登录名在内的全部主体
EXEC sp_configure 'remote login timeout';                       -- 远程登录超时
EXEC sp_configure 'remote query timeout';                       -- 远程查询超时
EXEC sp_configure;                                              -- 全部参数（含 c2 audit mode：0 未开启 / 1 开启）
```

```powershell
net accounts                 # Windows 口令长度最小值、锁定阈值等（SQL Server 策略的实际来源）
```

- 备注：`sys.sql_logins` **只返回 SQL Server 身份验证登录名**，Windows 登录名需查 `sys.server_principals`。
- 预期证据：版本截图、两个登录名视图的输出、`net accounts` 或本地安全策略截图。

![SQL Server 版本信息核查界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/54f62f8e5a3415604623d236a847343e_MD5.png)

## 三、测评实施

### 身份鉴别

> **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别 a)~d)
>
> **判定要点**：账户唯一且非默认口令、鉴别信息复杂度与有效期均已配置、远程管理走加密通道、失败处理与会话超时已启用 → 符合；仅满足其中一部分（如有口令但无复杂度、无失败锁定、无空闲超时）→ 部分符合；管理入口无鉴别、存在空口令或沿用出厂口令 → 不符合（高风险）。
>
> **取证要求**：账户清单截图、口令策略参数截图、加密通道配置截图、失败锁定与会话超时参数截图、弱口令实测记录；由统一认证平台承载时补平台侧配置与对接截图。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


数据库管理端口（Oracle 1521、SQL Server 1433、MySQL/MariaDB 3306、PostgreSQL/KingbaseES/UXDB 5432、MongoDB 27017、达梦 5236、DB2 50000、Redis 6379）对全网开放且存在空口令、默认口令或弱口令账户时，按《高风险判定指引》可直接判高风险；远程管理未启用传输加密、抓包可还原明文口令时同样按高风险处理。

判定口径详见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


#### a) 应对登录的用户进行身份标识和鉴别，身份标识具有唯一性，身份鉴别信息具有复杂度要求并定期更换

- 核查要点：
  1. **区分两类登录名**：`sys.sql_logins` 只涵盖 SQL Server 身份验证登录名，密码策略仅对其生效；Windows 登录名须查 `sys.server_principals`，由 OS 账户策略控制，与 `is_policy_checked` 无关。
  2. 查数据库侧开关：`SELECT name, is_policy_checked, is_expiration_checked FROM sys.sql_logins;`（`is_policy_checked` = 检查密码策略，`is_expiration_checked` = 检查密码过期）。
  3. 查 OS 侧策略：SQL Server 调用 **Windows 的校验函数**校验口令，须同时核查本地安全策略的「密码必须符合复杂性要求」与「密码长度最小值」。
  4. 查更换时间：`LOGINPROPERTY([name], 'PasswordLastSetTime')`。
  5. 查免认证路径：若登录名中加入了操作系统账户且未被禁用，则**无需口令即可登录**——须核查服务器身份验证模式（Windows 身份验证 / 混合模式）与登录名清单。
  6. 实测：尝试创建弱口令登录名，验证策略是否真正生效。
- 判定标准：
  - 符合：全部 SQL 登录名 `is_policy_checked = 1` 且 `is_expiration_checked = 1`、OS 侧已启用复杂性要求并设置了最小长度、口令有更换记录、账号可对应自然人、无免口令即可登录的残留账户。
  - 部分符合：数据库侧已开两个开关但 OS 侧未设最小长度（原稿指出的「仍可设 6 位口令」即属此档）；或有过期策略但无更换记录。
  - 不符合：存在可免口令登录的账户、`is_policy_checked = 0` 且实测可建弱口令、存在空口令。
- 常见不符合项：**只看 `is_policy_checked = 1` 就判符合**——SQL Server 调用的是 Windows 校验函数，若 OS 侧「密码长度最小值」为 0 或「复杂性要求」未启用，实际仍可设 6 位口令；另一处是只查 `sys.sql_logins` 而漏掉 Windows 登录名。
- 证据留存：`sys.sql_logins` 输出（含两个开关）、`sys.server_principals` 输出、本地安全策略或 `net accounts` 截图、`PasswordLastSetTime` 清单、弱口令实测结果、访谈纪要。

![SQL Server 操作系统密码策略界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/5bdb6429bff5710923d54c1ff731b522_MD5.png)

![SQL Server 服务器身份验证模式界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/80b29f382d23a282642e639f9153c566_MD5.png)

![SQL Server 登录名清单界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/faa4217e967f70893e42bc2676de1cac_MD5.png)

![SQL Server 登录名属性界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/5d6e23ba24fb6eaf722f74a0d1d2a404_MD5.png)

![SQL Server 强制实施密码策略界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/127adb50c74a56f8301b269a73ac2d07_MD5.png)

#### b) 应具有登录失败处理功能，应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施

- 核查要点：
  1. 失败锁定：SQL Server 登录名的锁定同样依赖 **Windows 账户锁定策略**，且需 `CHECK_POLICY = ON` 才会应用。核查 OS 侧「账户锁定阈值 / 账户锁定时间 / 重置账户锁定计数器」；查 `sys.sql_logins` 的 `is_disabled` 识别被锁定/禁用的账户。
  2. 三类超时：`remote login timeout`（远程登录超时）、`remote query timeout`（远程查询超时）、客户端连接超时与查询执行超时（SSMS 选项）。
  3. 实测：故意连续输错口令验证是否触发锁定；核查空闲会话是否自动断开。
- 判定标准：
  - 符合：OS 侧账户锁定阈值已配置且 SQL 登录名 `CHECK_POLICY = ON`，实测连续输错会锁定；超时参数已配置并生效。
  - 部分符合：仅有超时配置；或 OS 侧锁定策略已配但 SQL 登录名未开 `CHECK_POLICY`（**策略不会生效**）；或有锁定无超时退出。
  - 不符合：两者均未配置。
- 常见不符合项：把数据库的 `CHECK_POLICY` 开关与 OS 的锁定阈值割裂看——**两者须同时成立**才会锁定。该口径与 GaussDB 的 `failed_login_attempts` + `password_lock_time`、达梦的 `FAILED_LOGIN_ATTEMPS` + `PASSWORD_LOCK_TIME` 一致（参见 10 号与 30 号）。
- 证据留存：`sp_configure` 超时输出、`sys.sql_logins` 的 `is_disabled` / `is_policy_checked`、OS 账户锁定策略截图、锁定实测结果。

![SQL Server 强制密码过期界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/6a81067bacfa246b9a0e3932fae0be67_MD5.png)

![SQL Server 远程登录超时配置界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/6536e5f47aef86eefa299bdaecc62566_MD5.png)

![SQL Server 客户端连接超时配置界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/4eab147e3d08138934269bbcfce93421_MD5.png)

![SQL Server 查询执行超时配置界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/dda7c025bafef459df9731268aad658f_MD5.png)

#### c) 当进行远程管理时，应采取必要措施防止鉴别信息在网络传输过程中被窃听

- 核查要点：
  1. **Force Encryption**：在 SQL Server Configuration Manager 的「SQL Server 网络配置 → 协议」中配置，客户端与服务器端两侧均有该选项。**默认为 No，即 SQL Server 对收发的数据包不加密**；设为 Yes 才加密。
  2. 证书来源：SQL Server 自动生成的是**自签名证书**，对中间人攻击（man-in-the-middle）不具有抵抗能力；生产环境应手动配置证书。
  3. 抓包验证鉴别信息是否明文。
- 判定标准：
  - 不适用：仅本地管理（实例仅监听本地且管理员只从本机连接），需在报告写明依据。
  - 符合：Force Encryption = Yes 且使用手动配置的可信证书，抓包无法还原明文。
  - 部分符合：Force Encryption = Yes 但使用自动生成的自签证书（不抗中间人攻击）。
  - 不符合：Force Encryption 为默认 No，明文传输。
- 常见不符合项：看到「SQL Server 支持 SSL」就判符合——**默认不加密**，必须核查 Force Encryption 与证书来源。
- 重要更正：原稿在数据完整性与数据保密性两节中据「SQL Server 已使用 SSL 来加密」直接判加密成立，该结论**不成立**——默认配置为 No，须以 Force Encryption 的实际值为准。
- 证据留存：客户端与服务器端加密配置截图、证书信息截图、抓包结果。

![SQL Server 客户端加密配置界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/7ca8dacdb91f1763469bae948b731631_MD5.png)

![SQL Server 服务器端加密配置界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/f688acdd392d7cfda0a4f2bb4d4a06a7_MD5.png)

#### d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别，且其中一种鉴别技术至少应使用密码技术来实现

- 核查要点：访谈并验证是否采用双因子。Windows 身份验证基于 Kerberos，本身属密码技术；若采用混合模式的 SQL 登录名，通常为「用户名 + 口令」单因子。双因子多由堡垒机或统一认证平台承载。
- 判定标准：
  - 符合：经堡垒机/统一认证实现双因子（如口令 + 证书或动态口令）且可现场演示。
  - 部分符合：双因子由外部平台实现，但未见配置或无法演示。
  - 不符合：仅口令单一因子。
- 证据留存：堡垒机或统一认证接入说明、双因子登录演示记录。

### 访问控制

> **对应控制点**：GB/T 22239-2019 8.1.4.2 访问控制 a)~g)
>
> **判定要点**：账户与权限一一对应、默认账户已处置、无多余与共享账户、管理权限已分离、有书面授权策略、授权粒度达到用户级与表级 → 符合；有权限划分但存在越权高权限账户或粒度仅到角色级 → 部分符合；统一使用超级账户或应用账户持最高权限 → 不符合。
>
> **取证要求**：账户与角色对照表、权限清单查询输出、默认账户处置记录、访问控制策略文件与授权审批记录、粒度核查（对象级/列级/行级）输出。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


应用账户或运维账户直接持有最高权限（`DBA`/`sysadmin`/`superuser`/`SYSDBA`/`root`），或系统、安全、审计三类管理职责未分离由同一账户兼任，属高风险线索；默认示例账户（`SCOTT`、`HR`、`test` 等）处于可用状态且沿用出厂口令时按高风险处理。

判定口径详见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


#### a) 应对登录的用户分配账户和权限

- 核查要点：`SELECT * FROM sys.syslogins;` 与 `EXEC sp_helplogins;` 查账户与权限；访谈确认是否设立系统管理员、安全管理员、审计管理员等分立账户并分配对应权限。
- 判定标准：
  - 符合：每名管理员有独立账户、按职责授权、可对应到自然人。
  - 部分符合：有独立账户但同时共用一个管理账户。
  - 不符合：全部共用 `sa`，无法区分自然人。
- 证据留存：账户清单与职责对照表、访谈纪要。

![SQL Server 用户清单界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/c5335b2322af1b51ebe29cec753dd0ff_MD5.png)

![SQL Server 登录名与权限界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/1cc720e37bbd45af4e03c9f09bb3f520_MD5.png)

#### b) 应重命名或删除默认账户，修改默认账户的默认口令

- 核查要点：查 `sa` 是否重命名或禁用；查 `BUILTIN\Administrators` 等预置登录名是否仍在；数据库一般不存在默认口令，重点核查权限过大的账户（SQL Server 预置账户较多）。
- 判定标准：
  - 符合：`sa` 已重命名或已禁用且实测不可登录，无其他可登录的默认账户，无权限过大的通用账户。
  - 部分符合：保留 `sa` 但已设强口令并限制使用范围与来源。
  - 不符合：`sa` 保留默认名且弱口令或被广泛共用。
- 常见不符合项：把 `##MS_SQLResourceSigningCertificate##`、`##MS_PolicyEventProcessingLogin##` 等 `##` 包裹的系统主体当作「未处理的默认账户」——它们是内部用途的证书/策略主体，**默认禁用且不可登录**。
- 注意：原稿提到「很多 `sa` 账户不能重命名或禁用，检查中需权衡业务需求」——业务需要**不构成判定豁免**，应判部分符合并在报告中记录风险与已采取的补偿措施（如强口令 + 来源限制 + 禁用后改用独立管理账户）。
- 证据留存：登录名清单（含 `is_disabled`）、`sa` 重命名或禁用证明、登录实测截图。

#### c) 应及时删除或停用多余的、过期的账户，避免共享账户的存在

- 核查要点：核对登录名清单与在岗人员名单；查 `is_disabled` 与 `PasswordLastSetTime` 识别长期未用账户；确认网络管理员、安全管理员、系统管理员是否使用不同账户；确认是否存在共用的应用/运维账户。
- 判定标准：
  - 符合：无多余/过期账户、无共享账户，账户与人员一一对应。
  - 部分符合：存在停用账户但未删除（已禁用）。
  - 不符合：存在共享账户，或离职/调岗人员账户未清理仍可登录。
- 证据留存：账户台账、人员对照表、清理记录、访谈纪要。

#### d) 应授予管理用户所需的最小权限，实现管理用户的权限分离

- 核查要点：`EXEC sp_helplogins;` 查登录用户信息与权限；`SELECT * FROM sys.sql_logins;` 查 `is_disabled`（1 = 登录被锁定）；`SELECT * FROM sys.syslogins;` 查 `denylogin`（1 = 拒绝连接到数据库引擎）与 `sysadmin`（1 = 具有系统管理员权限）；核查固定服务器角色成员。原则：`sa` 之类的系统管理员账户不负责操作业务数据库，业务数据库管理员不应具备系统管理权限（如删除数据库、表和存储过程等）。
- 判定标准：
  - 符合：三类管理角色齐备且互不兼任，管理用户仅授予必需权限，无应用账号持 `sysadmin`。
  - 部分符合：有角色划分但仍存在越权的 `sysadmin` 成员，或系统管理员直接操作业务库。
  - 不符合：所有运维账户均为 `sysadmin`，或应用账号具备系统管理权限。
- 证据留存：`sp_helplogins` 输出、`sysadmin` 成员清单、角色与成员对照表。

![SQL Server 登录用户信息与权限界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/87a1c8f78b45581fa9272fbcd13c1475_MD5.png)

![SQL Server 登录账户状态界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/4750e2dcf15679ccdc7aa420b74e1abb_MD5.png)

![SQL Server 服务器角色成员界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/dc410c9ef1b9857580e3b8d2dfefd1df_MD5.png)

#### e) 应由授权主体配置访问控制策略，访问控制策略规定主体对客体的访问规则

- 核查要点：查阅访问控制策略文件（授权主体、主体/客体访问规则），核对线上授权与策略是否一致，抽查授权审批记录。
- 判定标准：
  - 符合：有书面策略、明确授权主体，实际授权与策略一致且经审批。
  - 部分符合：有策略但授权未走审批，或个别授权与策略不符。
  - 不符合：无访问控制策略，授权由运维人员自行决定。
- 注意：原稿称「数据库已启用身份鉴别且具备权限分离即可判符合」——那是 a)/d) 项的判据，不能替代本项对**策略文档与授权审批**的要求。
- 证据留存：访问控制策略文件、授权审批记录、策略与实际授权比对表。

#### f) 访问控制的粒度应达到主体为用户级或进程级，客体为文件、数据库表级

- 核查要点：SQL Server 支持对象级与列级授权（`GRANT ... ON OBJECT::库.架构.表`、列级 `GRANT ... (列)`），查 `sys.database_permissions` 确认实际粒度；在 SSMS 中右键查看重要表的权限亦可取证。
- 判定标准：
  - 符合：授权按用户分别授予且可精确到表级，重要数据到列级。
  - 部分符合：授权仅到库/架构级。
  - 不符合：统一使用 `sysadmin` 固定角色或 `db_owner`，无法区分客体。
- 注意：原稿称「此测评点多数测评机构默认判定为符合」——不应默认，须以 `sys.database_permissions` 的实际授权为据。
- 证据留存：`sys.database_permissions` 输出、重要表权限截图。

#### g) 应对重要主体和客体设置安全标记，并控制主体对有安全标记信息资源的访问

- 核查要点：SQL Server **不具备原生安全标记（强制访问控制）能力**；核查是否由操作系统强制访问控制或第三方数据标签/脱敏系统实现并演示。
- 判定标准：
  - 符合：由 OS 或第三方实现安全标记并能演示基于标记的访问裁决。
  - 部分符合：仅在管理制度层面定义密级，系统层面无强制裁决。
  - 不符合：无任何实现。
- 注意：原稿「SQL Server 自身应该很难实现这个功能」表述含糊，应明确为**原生不具备**，未部署即判不符合，不得判不适用。
- 证据留存：第三方方案说明与演示记录、访谈纪要。

### 安全审计

> **对应控制点**：GB/T 22239-2019 8.1.4.3 安全审计 a)~d)
>
> **判定要点**：审计功能已启用且实际产生记录、记录含时间/用户/事件类型/结果四要素、覆盖特权账户、审计数据受保护并留存 ≥6 个月、非审计管理员无法变更或清除 → 符合；开关已开但无审计策略、记录要素不全、仅本地留存或留存不足 → 部分符合；审计未启用且无第三方审计措施 → 不符合（高风险）。
>
> **取证要求**：审计开关与策略配置截图、审计记录抽样（脱敏）、审计存放路径与权限核查结果、清理与转存任务配置、最早记录时间清单、第三方审计系统截图。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


审计开关未启用且无第三方数据库审计系统，或审计记录留存明显不足 6 个月，属高风险；非审计管理员账户可修改审计配置、删除或清空审计数据时，审计的不可抵赖性失效，同样按高风险处理。

判定口径详见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


#### a) 应启用安全审计功能，审计覆盖到每个用户，对重要的用户行为和重要安全事件进行审计

- 核查要点：
  1. **C2 audit mode 已被微软标记为弃用**（`sp_configure` 中 0 = 未开启，1 = 开启），新版本应使用 **SQL Server Audit**（`CREATE SERVER AUDIT` + `SERVER AUDIT SPECIFICATION` / `DATABASE AUDIT SPECIFICATION`）实现细粒度审计。核查现场实际使用哪一种。
  2. 登录审核：服务器属性 → 安全性 → 登录审核，可选「无 / 仅失败 / 仅成功 / 成功与失败」；**修改后必须重启 SQL Server 实例才生效**。核查当前设置值——若只记录失败，成功登录与成功操作不会被记录，审计覆盖不全。
  3. 核查审计是否覆盖每个用户（含 `sa` 与 `sysadmin` 成员）。
  4. 核查 `sys.server_audits` / `sys.server_audit_specifications` 的状态（`is_enabled`）。
  5. 访谈并取证是否部署第三方数据库审计系统。
- 判定标准：
  - 符合：SQL Server Audit 已创建并启用，审计项覆盖登录与关键操作（成功与失败均记录），覆盖特权账户，记录可检索。
  - 部分符合：仅开启登录审核且只记录失败；或使用已弃用的 C2 模式且记录不完整；或未覆盖 `sa`。
  - 不符合：未开启任何审计且无第三方审计措施。
- 常见不符合项：把 **SQL Server 错误日志或 Windows 应用程序日志**当作等保要求的安全审计——它们是运行与错误日志，不是用户行为审计；把已弃用的 C2 audit mode 当作推荐方案。
- 证据留存：`sp_configure` 的 `c2 audit mode` 值、登录审核设置截图、`sys.server_audits` 与审计规范输出、审计记录抽样、第三方审计系统截图。

![SQL Server 安全性与 C2 审计配置界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/33b837770a423b3148c375aa42dcbe44_MD5.png)

#### b) 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息

- 核查要点：抽样审计记录，核对是否含事件时间、服务器主体名（`server_principal_name`）、操作类型（`action_id`）、是否成功（`succeeded`）、语句内容与客户端 IP。
- 判定标准：
  - 符合：时间、用户、事件类型、事件结果四要素齐全。
  - 部分符合：缺客户端 IP 或语句内容，但可与其他日志（Windows 安全日志、堡垒机日志）关联补齐。
  - 不符合：无时间或无法区分成功/失败。
- 证据留存：审计记录抽样（脱敏后）、字段与等保要素对照说明。

![SQL Server 日志记录内容界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/ba9839e1fdd51e1e19f1f861a727cf58_MD5.png)

![SQL Server 日志查看界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/5d469ba95f693a97be47df25fac9f32e_MD5.png)

![SQL Server 日志归档清单界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/a2d1024eb9b63bd44dd9fc3c11d7e592_MD5.png)

![SQL Server 错误日志界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/bda67bf30923aae3a7f06417219aeafb_MD5.png)

#### c) 应对审计记录进行保护，定期备份，避免受到未预期的删除、修改或覆盖等

- 核查要点：
  1. 审计目标（文件/Windows 安全日志/应用程序日志）的存放位置与权限，用非审计员账号实测能否查看、修改、删除。
  2. 核查错误日志与审计文件的**归档与循环策略**——SQL Server 错误日志默认只保留有限数量的归档文件（默认 6 个，可配置），每次重启或手工循环会丢弃最旧的，是留存不足 6 个月的隐蔽成因。
  3. 核查转存/备份措施与留存期是否 ≥6 个月。
- 判定标准：
  - 符合：有转存或备份措施、留存 ≥6 个月，且非审计管理员无法删除审计记录。
  - 部分符合：仅本地文件保留，归档数量有限且未配置转存，留存期不可控。
  - 不符合：非授权账号可删除审计文件，或留存明显不足 6 个月。
- 常见不符合项：把「日志还在」当作留存满足要求，未核查归档数量与循环策略。
- 证据留存：审计目标配置截图、文件权限截图、归档数量配置、转存任务配置、留存清单（含最早文件时间戳）。

#### d) 应对审计进程进行保护，防止未经授权的中断

- 核查要点：核查谁能修改或禁用审计（需 `ALTER ANY SERVER AUDIT` 或 `CONTROL SERVER` 权限）；列出 `sysadmin` 固定角色成员与应用账号的权限，确认应用账号不具备变更审计的权限。
- 判定标准：
  - 符合：仅审计管理员可变更审计配置，应用与运维账号无法禁用审计。
  - 部分符合：`sysadmin` 成员过多但应用账号无特权。
  - 不符合：应用或普通运维账号可禁用审计或删除审计文件。
- 注意：原稿「已建立审计账户且各管理员权限已分离即可判符合」须以实际权限核查为据，不能凭访谈结论。
- 证据留存：`sysadmin` 成员清单、审计相关权限核查结果、实测禁用审计的结果。

### 入侵防范

> **对应控制点**：GB/T 22239-2019 8.1.4.4 入侵防范 a)~f)
>
> **判定要点**：最小安装、非必要服务与高危端口已关闭、管理终端来源受限、有数据有效性检验、版本无已知高危漏洞且定期漏扫修补、上位部署入侵检测并能出示本对象告警 → 符合；部分措施到位（如有防火墙限制但库层未配来源校验、有漏扫无修补记录）→ 部分符合；管理端口无限制开放或存在已知高危漏洞未修补 → 不符合（高风险）。
>
> **取证要求**：已安装组件/选件清单、监听与端口核查输出、来源限制配置截图与拒绝实测、约束或校验配置输出、版本与补丁记录、漏扫报告、上位 IDS/IPS 告警与处置工单。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


当前版本存在已知高危漏洞且无修补记录（含已停止官方支持的版本，如 Oracle 11g、MySQL 5.6、PostgreSQL 12 及更早），或数据库管理端口未经边界限制直接暴露，属高风险；从未开展漏洞扫描或渗透测试亦按高风险线索记录。

判定口径详见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


#### a) 应遵循最小安装的原则，仅安装需要的组件和应用程序

- 核查要点：核查是否安装了非必要的组件（SSIS / SSAS / SSRS / 全文检索 / 复制组件 / CLR 集成），以及 `xp_cmdshell` 是否启用（**默认禁用**，启用后可执行操作系统命令，属高风险）：

```sql
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell';            -- run_value = 0 为禁用，1 为启用
EXEC sp_configure 'clr enabled';
```

- 判定标准：
  - 符合：仅启用必要的组件与服务，`xp_cmdshell` 保持禁用。
  - 部分符合：安装了非必要组件但未启用服务；或 CLR 已启用但无程序集部署。
  - 不符合：`xp_cmdshell` 已启用，或非必要组件对外可达。
- 注意：不得仅写「数据库此项不适用」而不说明理由。
- 证据留存：`sp_configure` 输出、已安装组件清单截图。

#### b) 应关闭不需要的系统服务、默认共享和高危端口

- 核查要点：查实例端口（默认 1433）与 `sys.endpoints`、当前连接 `sys.dm_exec_connections`；确认 **SQL Server Browser 服务**（UDP 1434）是否需要（命名实例与动态端口场景下会暴露实例清单）；OS 层 `netstat -ano` 查监听。
- 判定标准：
  - 符合：仅监听必要地址，SQL Server Browser 已按需关闭，非必要服务已停用。
  - 部分符合：端口监听 `0.0.0.0` 但有防火墙/ACL 限制（须取得边界策略证据）。
  - 不符合：1433 无限制开放，可从办公网/互联网直达。
- 注意：端口与网络服务属数据库可承载项，不宜直接判不适用。
- 证据留存：端口与端点输出、服务状态截图、边界策略截图。

#### c) 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制

- 核查要点：SQL Server **没有原生的登录地址白名单配置**，但有两条实现路径，须逐项核查：
  1. 网络层：Windows 防火墙、IPSec 策略或网络设备 ACL 限制来源地址；
  2. 服务器层：用**登录触发器**（`CREATE TRIGGER ... ON ALL SERVER FOR LOGON`，在触发器中读取 `EVENTDATA()` 的 `ClientHost` 并回滚非法来源连接）或对端点做 IP 限制。
- 判定标准：
  - 符合：网络层与服务器层均有来源限制，且实测非授权地址连接被拒。
  - 部分符合：仅在网络层限制，数据库层未做限制（主机上其他本地途径仍可连接）。
  - 不符合：无任何来源限制。
- 注意：原稿「SQL Server 没有登录地址限制的相关配置」**只对了一半**——原生无 ACL 式配置，但可用登录触发器实现，不能据此判不适用。
- 证据留存：防火墙/IPSec 规则截图、登录触发器定义、非授权地址连接被拒的实测记录。

#### d) 应提供数据有效性检验功能，保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求

- 核查要点：数据库侧对应约束机制——非空、数据类型、`CHECK` 约束、外键、规则（RULE）、默认值与触发器；查 `sys.check_constraints` / `sys.foreign_keys`。若校验由应用层实现，须验证其有效性。
- 判定标准：
  - 符合：关键字段有数据库约束，或应用层校验经验证有效。
  - 部分符合：仅依赖应用层校验但未提供验证证据。
  - 不符合：无校验且实测可写入超出设定范围的数据。
- 注意：只有当应用层完全不在本次测评单元范围内时，才可注明「本组件不承载，由应用侧测评」，不得机械判不适用。
- 证据留存：约束清单输出、非法数据写入实测结果。

#### e) 应能发现可能存在的已知漏洞，并在经过充分测试评估后，及时修补漏洞

- 核查要点：`SELECT @@VERSION;` 获取版本与补丁级别，对照 CVE/NVD 与微软安全公告（SQL Server 需按 CU/SP 级别核对）；查阅漏扫或渗透测试报告（建议周期不超过半年）与补丁台账。
- 判定标准：
  - 符合：有定期漏扫（≤半年）且发现的高危漏洞已打补丁并有复测验证记录。
  - 部分符合：有漏扫但无修补记录，或已打补丁未复测。
  - 不符合：无漏扫记录且当前版本存在已知高危漏洞。
- 证据留存：版本输出、漏扫报告、补丁记录与复测结论。

#### f) 应能够检测到对重要节点进行入侵的行为，并在发生严重入侵事件时提供报警

- 核查要点：确认上位系统是否部署 IDS/IPS、数据库审计或数据库防火墙，并能提供针对本数据库的告警记录；数据库自身不具备入侵检测能力。
- 判定标准：
  - 符合：上位系统已部署并能出示针对本对象的告警与处置记录。
  - 部分符合：已部署但告警未覆盖本对象或从未处置。
  - 不符合：无任何入侵检测措施。
- 注意：按「本组件不承载、由上位系统测评」记录，**不得判不适用**，须取得上位系统的证据。
- 证据留存：上位系统部署说明、告警记录、处置工单。

### 恶意代码防范

> **对应控制点**：GB/T 22239-2019 8.1.4.5 恶意代码防范 a)b)
>
> **判定要点**：宿主 OS 已部署恶意代码防范且规则库更新正常（含数据目录未排除），库内可执行载体（JVM/外部过程/脚本扩展）已按需关闭或受限 → 符合；OS 侧已部署但排除数据目录，或可执行载体已启用未加限制 → 部分符合；宿主无任何防范措施 → 不符合。仅当测评单元不含宿主 OS 时方可判不适用，并写明测评单元边界。
>
> **取证要求**：宿主 OS 防范措施截图、规则库版本与更新时间、库内可执行载体启用状态查询输出、访谈纪要。

#### 应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为，并将其有效阻断

- 核查要点：确认恶意代码防范能力由宿主操作系统承载，核查 OS 侧杀毒/EDR 的部署、更新状态与是否排除数据库目录；数据库侧还需核查 `xp_cmdshell` 是否禁用、CLR 程序集是否可控（这两项是数据库被用作恶意代码执行载体的常见路径）。
- 判定标准：
  - 符合：宿主 OS 已部署恶意代码防范且规则库更新正常（含数据库目录），且 `xp_cmdshell` 保持禁用。
  - 部分符合：OS 侧已部署但排除了数据目录，或规则库过期。
  - 不符合：宿主机构无任何防范措施，或 `xp_cmdshell` 已启用。
- 注意：仅当测评单元不含宿主 OS 时，方可判不适用并写明理由与测评单元边界。
- 证据留存：宿主 OS 侧防范措施截图、规则库版本与更新时间、`sp_configure` 输出。

### 可信验证

> **对应控制点**：GB/T 22239-2019 8.1.4.6 可信验证
>
> **判定要点**：宿主服务器配备可信根（TCM/TPM）并启用引导与关键执行环节动态验证、验证结果送安全管理中心 → 符合；具备可信根但未启用动态验证或未送安全管理中心 → 部分符合；无可信验证措施 → 不符合（多数现场属此档，须由宿主机构侧取证）。
>
> **取证要求**：可信计算配置截图、动态验证与报警记录、送安全管理中心的对接证据、访谈纪要。

#### 可基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证，并在应用程序的关键执行环节进行动态可信验证，在检测到其可信性受到破坏后进行报警，并将验证结果形成审计记录送至安全管理中心

- 核查要点：访谈并核查宿主服务器是否配备可信芯片（TCM/TPM）并启用可信验证；数据库自身无该能力。
- 判定标准：
  - 符合：宿主服务器启用基于可信根的验证并接入安全管理中心（须提供宿主机构取证）。
  - 部分符合：具备可信根但未启用动态验证或未送安全管理中心。
  - 不符合：无可信验证措施（多数现场属此档）。
- 证据留存：可信计算相关配置截图、访谈纪要、宿主机构测评结论引用。

### 数据完整性

> **对应控制点**：GB/T 22239-2019 8.1.4.7 数据完整性 a)b)
>
> **判定要点**：传输侧启用密码技术保护并强制校验（不可降级），存储侧有哈希基线或校验字段并定期比对 → 符合；仅传输侧保护或仅配置文件有基线、校验参数可降级 → 部分符合；传输与存储均无完整性保护 → 不符合。管理全在本机时传输项可判不适用，须写明依据。
>
> **取证要求**：传输加密与校验参数截图、抓包结果（脱敏）、哈希基线清单与比对记录、第三方完整性监控说明。

#### a) 应采用密码技术保证重要数据在传输过程中的完整性，包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等

- 核查要点：同身份鉴别 c)——核查 Force Encryption 的实际值（默认 No）与证书来源；TLS 协议自带完整性保护。
- 判定标准：
  - 不适用：仅本地管理，需在报告写明依据。
  - 符合：Force Encryption = Yes 且使用手动配置的可信证书，抓包无法还原明文。
  - 部分符合：Force Encryption = Yes 但使用自签证书（不抗中间人）。
  - 不符合：Force Encryption 为默认 No。
- 重要更正：原稿据「SQL Server 已使用 SSL 来加密」判本项成立，该结论不成立——默认配置为 No，须以实测值为准。
- 证据留存：加密配置截图、证书信息截图、抓包结果。

#### b) 应采用密码技术保证重要数据在存储过程中的完整性，包括但不限于鉴别数据、重要业务数据和重要个人信息等

- 核查要点：核查是否存在第三方完整性保护——配置文件与数据文件的哈希基线、业务表哈希或 MAC 校验字段、主机级文件完整性监控，并查定期比对记录；SQL Server 自身不提供存储完整性保护。
- 判定标准：
  - 符合：重要数据与配置文件均有完整性校验机制并定期比对。
  - 部分符合：仅配置文件有哈希基线，业务数据无校验。
  - 不符合：无任何完整性校验措施。
- 注意：原稿「目前一般做不到，判定为不符合」属无核查依据的推断，应以上述核查结论定档。
- 证据留存：哈希基线清单、比对记录、第三方工具说明。

### 数据保密性

> **对应控制点**：GB/T 22239-2019 8.1.4.8 数据保密性 a)b)
>
> **判定要点**：鉴别数据以强算法加盐存储（不含已废弃的弱哈希），重要业务数据与个人信息字段采用透明加密或应用侧加密，密钥管理可控 → 符合；仅鉴别数据非明文而业务数据明文，或加密算法强度不足 → 部分符合；鉴别数据使用弱哈希或重要数据明文且无加密措施 → 不符合。
>
> **取证要求**：口令存储格式查询输出、加密配置与密钥（钱包/证书）管理截图、敏感字段抽样结果、算法清单与选型说明、抓包结果（脱敏）。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


鉴别数据仍以已废弃的弱哈希形式存储（如 Oracle `PASSWORD_VERSIONS` 含 `10G`、PostgreSQL 仍用 `md5`），或重要业务数据与个人信息字段明文存储且无任何加密措施，属高风险线索。

判定口径详见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


#### a) 应采用密码技术保证重要数据在传输过程中的保密性，包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等

- 核查要点：在未启用 Force Encryption 时用 Wireshark 抓取认证过程，验证鉴别数据是否明文；核查加密配置与证书来源。
- 判定标准：与数据完整性 a) 同口径；**抓包可还原明文口令时不得判符合**。
- 重要更正：原稿同处理由不成立，须以 Force Encryption 实测值为准。
- 证据留存：抓包结果（脱敏后）、加密配置截图。

#### b) 应采用密码技术保证重要数据在存储过程中的保密性，包括但不限于鉴别数据、重要业务数据和重要个人信息等

- 核查要点：
  1. 鉴别数据：SQL Server 存储的是口令哈希而非明文。按官方 `sys.sql_logins` 文档——**SQL Server 2022（16.x）及更早版本使用加盐的 SHA-512；自 SQL Server 2025（17.x）起改为 RFC2898（PBKDF）迭代哈希**；哈希首字节为版本号（`0x02` 为 2022 及更早，`0x03` 为 2025 及更高）。查看 `password_hash` 列需 `CONTROL SERVER` 权限（2022 起另需 `VIEW ANY CRYPTOGRAPHICALLY SECURED DEFINITION`）。
  2. 业务与个人信息：抽查表中敏感字段是否明文；核查是否启用 **TDE（透明数据加密）**、`EncryptByKey` 单元格加密或 Always Encrypted。
- 判定标准：
  - 符合：鉴别数据为加盐哈希（或 PBKDF），且重要业务数据与个人信息字段采用 TDE / 单元格加密 / Always Encrypted 之一加密存储。
  - 部分符合：仅鉴别数据非明文，业务与个人信息明文存储。
  - 不符合：鉴别数据以可逆方式存储，或重要数据明文且无任何加密措施。
- 注意：TDE 防的是磁盘丢失与数据/备份文件被复制，**对已控制数据库实例的攻击者不提供防护**，报告中应如实描述防护边界；原稿「SQL Server 几乎支持所有主流对称加密算法，推荐 AES-128/256」属算法选型建议，不能替代「是否已启用加密」的核查结论。
- 证据留存：口令哈希版本信息、TDE/加密配置截图、敏感字段抽样结果、密钥管理说明。

### 数据备份恢复

> **对应控制点**：GB/T 22239-2019 8.1.4.9 数据备份恢复 a)~c)
>
> **判定要点**：有本地备份任务与近期备份产物且有恢复演练记录、有异地实时或定时备份链路、具备热冗余（集群/主备）并可演示切换 → 符合；有备份产物但仅做过校验从未真实恢复、异地周期过长、有冗余架构无切换演练 → 部分符合；无备份措施或单实例且无异地副本 → 不符合。
>
> **取证要求**：备份脚本或作业配置截图、备份产物清单（含时间戳）、恢复演练记录、异地备份拓扑与同步状态输出、集群或主备状态输出、切换演练记录。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


无任何本地备份措施，或备份与数据库同机同磁盘存放（主机故障即备份同时失效），属高风险；仅有备份产物但从未做过恢复演练时按部分符合并记为高风险线索。

判定口径详见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


#### a) 应提供重要数据的本地数据备份与恢复功能

- 核查要点：访谈并查看备份策略与执行记录（SQL Server 代理作业、维护计划、备份目录清单），核对备份产物与策略是否一致，是否有恢复测试记录。

```sql
BACKUP DATABASE [dbname] TO DISK = N'D:\backup\dbname_full.bak' WITH COMPRESSION, INIT;
RESTORE VERIFYONLY FROM DISK = N'D:\backup\dbname_full.bak';   -- 校验备份集可恢复性
```

- 备注：也可通过 SSMS 图形化备份。完整/差异/日志备份的保留期需满足业务 RPO；`RESTORE VERIFYONLY` 只校验备份集完整性，**不能替代真实的恢复演练**。备份文件与数据库同机存放时，主机故障会导致备份同时失效。
- 判定标准：
  - 符合：有备份作业、近期备份产物，且有恢复演练记录。
  - 部分符合：有备份作业与产物，但只做过 `RESTORE VERIFYONLY`、从未真实恢复过。
  - 不符合：无备份措施。
- 证据留存：备份作业配置截图、备份产物清单（含时间戳）、恢复演练记录。

![SQL Server 备份配置界面对照](/wikis/_resources/05%E3%80%81SQL%20Server%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%84/20ba03f5da274ec70922dccc836354b3_MD5.png)

#### b) 应提供异地实时备份功能，利用通信网络将重要数据实时备份至备份场地

- 核查要点：确认备份目的地与主机是否分处不同物理地点（异地机房/同城灾备/对象存储），确认同步方式（备份文件定时推送、Always On 可用性组、存储层复制、备份一体机）与周期。
- 判定标准：
  - 符合：存在异地备份链路且周期满足业务 RPO 要求。
  - 部分符合：有异地备份但周期过长，或链路未验证过可用性。
  - 不符合：无异地备份。
- 常见不符合项：把「本机多块磁盘互拷」或「同机房另一台主机的副本」当作异地备份。
- 证据留存：异地备份拓扑说明、同步状态输出、异地侧备份文件清单。

#### c) 应提供重要数据处理系统的热冗余，保证系统的高可用性

- 核查要点：访谈并核查是否采用 Always On 可用性组、故障转移群集实例（FCI）或日志传送；查可用性组状态与切换演练记录（**数据库镜像已弃用**，新部署不应采用）。
- 判定标准：
  - 符合：具备上述任一高可用形态且可演示故障转移。
  - 部分符合：有冗余架构但无切换演练记录。
  - 不符合：单实例运行。
- 证据留存：可用性组状态输出、冗余架构说明、切换演练记录。

### 剩余信息保护

> **对应控制点**：GB/T 22239-2019 8.1.4.10 剩余信息保护 a)b)
>
> **判定要点**：鉴别信息与敏感数据所在存储空间在释放或重分配前有可验证的清除机制（客体重用参数、存储层安全擦除、加密后销毁密钥），且备份介质纳入清除范围 → 符合；仅有逻辑删除（DROP/DELETE）未做清除验证，或备份介质未纳入 → 部分符合；无任何清除机制 → 不符合。
>
> **取证要求**：客体重用或擦除相关参数截图、擦除验证记录、密钥销毁流程说明、备份介质销毁与清除记录、敏感数据分布清单。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


删除账户或表后未做任何清除验证，且存储介质报废、外送维修前无擦除或销毁记录时，鉴别信息与敏感数据存在可恢复风险，按高风险线索记录。

判定口径详见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


#### a) 应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除

- 核查要点：SQL Server **无原生的客体重用参数**（不同于达梦的 `ENABLE_OBJ_REUSE`）。核查是否依赖存储层安全擦除、加密存储（TDE）后销毁密钥，或第三方擦除工具；并核查包含鉴别信息的备份文件是否纳入清除范围。
- 判定标准：
  - 符合：启用存储加密且密钥销毁可控，或存储层有可验证的安全擦除机制。
  - 部分符合：仅依赖删除操作，未做清除验证。
  - 不符合：无任何清除机制。
- 证据留存：TDE 与密钥管理说明、擦除验证记录。

#### b) 应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除

- 核查要点：同 a) 项，针对存放敏感业务数据与个人信息的数据文件、备份文件（`.bak`）与 `DROP DATABASE` 后的文件残留。
- 判定标准：与 a) 项同口径；备份介质未纳入清除范围时，应判部分符合。
- 证据留存：敏感数据分布清单、备份介质销毁/清除记录。

### 个人信息保护

> **对应控制点**：GB/T 22239-2019 8.1.4.11 个人信息保护 a)b)
>
> **判定要点**：仅采集与保存业务必需字段且有清单与制度支撑、个人信息所在对象有独立授权且实测非授权账户无法访问 → 符合；存在非必要字段但有清理计划，或有授权控制但备份文件未纳入管控 → 部分符合；超范围采集无制度，或非授权账户可直接读取 → 不符合。对象确实不承载个人信息时可判不适用，须先访谈确认并留存反向证据。
>
> **取证要求**：个人信息字段清单、采集必要性说明与管理制度、权限清单、非授权访问实测记录、访谈纪要。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


非授权账户或低权限账户实测可直接读取存储个人信息的表、表空间与备份文件，属高风险；超范围采集个人信息且无字段清单与保护制度时同样按高风险处理。

判定口径详见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


#### a) 应仅采集和保存业务必需的用户个人信息

- 核查要点：核查库中是否存储个人信息；若存在，索取字段清单与采集必要性说明、个人信息保护管理制度。
- 判定标准：
  - 符合：仅存储业务必需字段，有清单与制度支撑。
  - 部分符合：存在非必要字段但有清理计划。
  - 不符合：超范围采集且无清单与制度。
- 证据留存：个人信息字段清单、采集必要性说明、管理制度文件。

#### b) 应禁止未授权访问和非法使用用户个人信息

- 核查要点：验证非授权人员（或低权限账号）能否访问存储个人信息的库、表与备份文件；核查个人信息保护机制的访问控制配置。
- 判定标准：
  - 符合：个人信息所在库表有独立授权，实测非授权账户无法访问。
  - 部分符合：有授权控制但备份文件未纳入管控。
  - 不符合：非授权账户可直接读取个人信息。
- 证据留存：权限清单、非授权访问验证记录、个人信息保护制度。

## 四、测评项对照表

| 控制点 | 本文章节 | 关键核查命令/配置 |
|---|---|---|
| 身份鉴别 | §三 身份鉴别 | `sys.sql_logins` 的 `is_policy_checked` / `is_expiration_checked` 与 Windows 账户策略联动、`LOGINPROPERTY`、`remote login timeout`、Force Encryption（默认 No） |
| 访问控制 | §三 访问控制 | `sys.syslogins` / `sp_helplogins` / `sys.server_principals`、`sysadmin` 成员、`sys.database_permissions`、`sa` 与 `##MS_*` 系统主体 |
| 安全审计 | §三 安全审计 | `c2 audit mode`（已弃用）与 SQL Server Audit、登录审核设置（**修改后须重启实例生效**）、`sys.server_audits`、错误日志归档数量 |
| 入侵防范 | §三 入侵防范 | `xp_cmdshell`（默认禁用）、`clr enabled`、端点与 1433/1434、`CHECK` 约束、`@@VERSION`、上位 IDS/IPS 告警 |
| 恶意代码防范 | §三 恶意代码防范 | 宿主 OS 侧取证 + `xp_cmdshell` 与 CLR 程序集核查 |
| 可信验证 | §三 可信验证 | 宿主服务器可信根取证 |
| 数据完整性 | §三 数据完整性 | Force Encryption 与证书来源、哈希基线比对 |
| 数据保密性 | §三 数据保密性 | 口令哈希（2022 及更早加盐 SHA-512；2025 起 PBKDF）、TDE / `EncryptByKey` / Always Encrypted |
| 数据备份恢复 | §三 数据备份恢复 | `BACKUP DATABASE` / `RESTORE VERIFYONLY`、维护计划、Always On / FCI 状态 |
| 剩余信息保护 | §三 剩余信息保护 | 无原生客体重用参数，依赖存储层擦除或 TDE 密钥销毁 |
| 个人信息保护 | §三 个人信息保护 | 字段清单、独立授权与访问验证 |

## 五、总结

SQL Server 数据库运行在 Windows 操作系统中，部分安全策略主要依赖于操作系统的安全配置，大部分安全配置几乎可以实现，但是在实际测评过程中很多单位不愿意配置等保中要求的策略，一方面是管理员认为不方便自己运维管理，另一方面可能是数据库在实时生产环境中，管理员担心更改相关安全配置后影响系统的正常运行，所以我们在测评中要做好安全和生产、安全和管理的平衡。

需要强调的是：上述「不愿意配置」不构成判定理由。核定结论时仍须以本文各控制点的核查要点与判定标准为准；**数据库侧开关与 Windows 侧策略须同时成立**才判生效，未核查到的项应记为「未核查」而非默认符合或默认不符合。

## 参考依据

- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》（8.1.4 安全计算环境各控制点）：[http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF)
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》（测评对象边界认定、单元测评实施与结果判定：符合/部分符合/不符合/不适用）：[http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C)
- GB/T 25070-2019《信息安全技术 网络安全等级保护安全设计技术要求》，可在全国标准信息公共服务平台检索：[http://openstd.samr.gov.cn/bzgk/gb/](http://openstd.samr.gov.cn/bzgk/gb/)
- GB/T 28449-2018《信息安全技术 网络安全等级保护测评过程指南》（现场测评活动与证据留存要求），可在全国标准信息公共服务平台检索：[http://openstd.samr.gov.cn/bzgk/gb/](http://openstd.samr.gov.cn/bzgk/gb/)
- SQL Server 安全性最佳实践（Microsoft Learn）：[https://learn.microsoft.com/zh-cn/sql/relational-databases/security/sql-server-security-best-practices](https://learn.microsoft.com/zh-cn/sql/relational-databases/security/sql-server-security-best-practices)
- SQL Server Audit（数据库引擎）：[https://learn.microsoft.com/zh-cn/sql/relational-databases/security/auditing/sql-server-audit-database-engine](https://learn.microsoft.com/zh-cn/sql/relational-databases/security/auditing/sql-server-audit-database-engine)
- 关于透明数据加密 TDE：[https://learn.microsoft.com/zh-cn/sql/relational-databases/security/encryption/transparent-data-encryption](https://learn.microsoft.com/zh-cn/sql/relational-databases/security/encryption/transparent-data-encryption)
- Always Encrypted：[https://learn.microsoft.com/zh-cn/sql/relational-databases/security/encryption/always-encrypted-database-engine](https://learn.microsoft.com/zh-cn/sql/relational-databases/security/encryption/always-encrypted-database-engine)
- sys.server_principals / sys.sql_logins 目录视图：[https://learn.microsoft.com/zh-cn/sql/relational-databases/system-catalog-views/sys-server-principals-transact-sql](https://learn.microsoft.com/zh-cn/sql/relational-databases/system-catalog-views/sys-server-principals-transact-sql)
- 《网络安全等级保护测评高风险判定指引》（中关村信息安全测评联盟团体标准）——高风险情形判定口径，站内对照表：[22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)
- 命令核验说明：SQL Server 相关命令已对照 Microsoft Learn 官方文档核验（核验日期 2026-09-02）。要点：① 审计由 Server Audit、Server Audit Specification、Database Audit Specification 三个对象共同构成，仅创建 Server Audit 而未创建并启用规范不会产生任何记录，且 Server Audit 与规范须分别 `ALTER ... WITH (STATE = ON)`；② 登录失败审核依赖 `xp_instance_regread` 读取 `AuditLevel` 注册表值或 SSMS「安全性 → 审核级别」设置，须同时确认 Windows 事件查看器中 Application 日志的留存策略；③ TDE 提供的是静态数据保密性，对已获得数据库实例权限的攻击者不提供防护，报告中应如实描述防护边界；④ SQL Server 2016 及更早版本已陆续停止主流支持，须对照官方生命周期确认补丁可获得性。

## 关联文章

- 同板块·数据库测评篇：[01、Oracle数据库测评](../01oracle数据库测评/)、[37、MySQL数据库测评](../37mysql数据库测评/)、[28、MariaDB数据库测评](../28mariadb数据库测评/)、[29、MongoDB测评](../29mongodb测评/)、[31、Redis数据库测评](../31redis数据库测评/)、[30、达梦数据库测评](../30达梦数据库测评/)、[10、GaussDB（华为高斯数据库）测评](../10gaussdb华为高斯数据库测评/)、[07、KingbaseES人大金仓数据库测评](../07kingbasees人大金仓数据库测评/)、[06、优炫数据库（UXDB）测评](../06优炫数据库uxdb测评/)
- 同板块·数据库命令速查：[12、MySQL测评命令](../12mysql测评命令/)、[25、PostgreSQL数据库配置核查命令](../25postgresql数据库配置核查命令/)、[33、DB2数据库命令](../33db2数据库命令/)
- 同板块·中间件测评：[02、TAS应用中间件测评](../02tas应用中间件测评/)、[13、Linux（Tomcat）中间件命令](../13linuxtomcat中间件命令/)
- 同板块·控制点解读：[22、应用访问控制测评解读（MySQL 示例）](../22应用访问控制测评解读mysql-示例/)
- 业务应用参照：[21、应用系统访问控制测评解读](../../业务应用系统平台/21应用系统访问控制测评解读/)、[11、新员工网络培训考核系统测评](../../业务应用系统平台/11新员工网络培训考核系统测评/)
- 配套命令单：[05、SQL Server 测评命令单](../数据库测评命令/05-sql-server/)（[数据库测评命令目录](../数据库测评命令/)）
- 板块目录：[系统管理软件·平台](/wikis/docs/gradeprotection/%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86%E8%BD%AF%E4%BB%B6%E5%B9%B3%E5%8F%B0/)
- 通用加固方案：[17、加固方案总纲](../../../reinforce/其他系统或设备/17网络设备安全设备服务器数据库和应用系统的加固方案/)
- 取证记录模板：[16、安全评估加固记录表3.0](../../../reinforce/其他系统或设备/16安全评估加固记录表3.0/)
- 高风险口径：[22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)
