# 05-SQL Server测评命令

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

---

SQL Server三级等级保护现场核查命令与图形界面检查项（统一编号版）

适用范围：SQL Server 2012 及以上

## 基础信息

```sql
select @@version;
select name from sys.databases;
```

- **备注**：用于确认数据库版本、库列表和现场数据库环境。
- **预期证据**：版本截图、数据库列表截图。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="k">select</span><span class="w"> </span><span class="o">@@</span><span class="k">version</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">Microsoft</span><span class="w"> </span><span class="k">SQL</span><span class="w"> </span><span class="n">Server</span><span class="w"> </span><span class="mi">2019</span><span class="w"> </span><span class="p">(</span><span class="n">RTM</span><span class="o">-</span><span class="n">CU22</span><span class="p">)</span><span class="w"> </span><span class="mi">15</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">4355</span><span class="p">.</span><span class="mi">3</span><span class="w"> </span><span class="p">...</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">select</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">databases</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">name</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">--------------------------------------------------
</span></span></span><span class="line"><span class="cl"><span class="n">master</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">tempdb</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">model</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">msdb</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">AppDB</span><span class="w">
</span></span></span></code></pre></div>
</details>



## 身份鉴别

### A. 身份标识唯一、口令复杂度、定期更换

```sql
select name, is_disabled,
```

LOGINPROPERTY(name, 'IsExpired') as IsExpired,

LOGINPROPERTY(name, 'IsLocked') as IsLocked,

LOGINPROPERTY(name, 'PasswordLastSetTime') as PasswordLastSetTime

from sys.sql_logins;

- **备注**：SSMS 路径：安全性 -> 登录名 -> 属性，查看“强制实施密码策略”“强制密码过期”。重点关注 `sa`、共享账户、长期未更换密码账户。
- **预期证据**：登录名属性截图、登录账户列表截图、账号台账。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">name</span><span class="w">     </span><span class="n">is_disabled</span><span class="w"> </span><span class="n">IsExpired</span><span class="w"> </span><span class="n">IsLocked</span><span class="w"> </span><span class="n">PasswordLastSetTime</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-------- ----------- --------- -------- -----------------------
</span></span></span><span class="line"><span class="cl"><span class="n">sa</span><span class="w">               </span><span class="mi">0</span><span class="w">         </span><span class="mi">0</span><span class="w">        </span><span class="mi">0</span><span class="w">   </span><span class="mi">2026</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">12</span><span class="w"> </span><span class="mi">09</span><span class="p">:</span><span class="mi">41</span><span class="p">:</span><span class="mi">02</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">appuser</span><span class="w">          </span><span class="mi">0</span><span class="w">         </span><span class="mi">0</span><span class="w">        </span><span class="mi">0</span><span class="w">   </span><span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">08</span><span class="w"> </span><span class="mi">15</span><span class="p">:</span><span class="mi">20</span><span class="p">:</span><span class="mi">33</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">report</span><span class="w">           </span><span class="mi">0</span><span class="w">         </span><span class="mi">0</span><span class="w">        </span><span class="mi">0</span><span class="w">   </span><span class="mi">2025</span><span class="o">-</span><span class="mi">11</span><span class="o">-</span><span class="mi">27</span><span class="w"> </span><span class="mi">10</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="mi">17</span><span class="w">
</span></span></span></code></pre></div>
</details>



### B. 登录失败处理、会话超时退出

```sql
select name, LOGINPROPERTY(name, 'BadPasswordCount') as BadPasswordCount,
```

LOGINPROPERTY(name, 'BadPasswordTime') as BadPasswordTime

from sys.sql_logins;

```sql
exec sp_configure 'remote login timeout';
exec sp_configure 'remote query timeout';
```

- **备注**：失败登录锁定很多时候由 Windows/AD 域策略实现，还应结合主机或域控策略核查。
- **预期证据**：参数截图、域策略截图、主机安全策略截图、访谈记录。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="k">select</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">LOGINPROPERTY</span><span class="p">(</span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;BadPasswordCount&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">BadPasswordCount</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">       </span><span class="n">LOGINPROPERTY</span><span class="p">(</span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;BadPasswordTime&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">BadPasswordTime</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">sql_logins</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">name</span><span class="w">     </span><span class="n">BadPasswordCount</span><span class="w"> </span><span class="n">BadPasswordTime</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-------- ---------------- -----------------------
</span></span></span><span class="line"><span class="cl"><span class="n">appuser</span><span class="w">                 </span><span class="mi">0</span><span class="w"> </span><span class="k">NULL</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">report</span><span class="w">                  </span><span class="mi">2</span><span class="w"> </span><span class="mi">2026</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">21</span><span class="w"> </span><span class="mi">14</span><span class="p">:</span><span class="mi">33</span><span class="p">:</span><span class="mi">01</span><span class="p">.</span><span class="mi">123</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">exec</span><span class="w"> </span><span class="n">sp_configure</span><span class="w"> </span><span class="s1">&#39;remote login timeout&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">name</span><span class="w">                  </span><span class="n">minimum</span><span class="w">     </span><span class="n">maximum</span><span class="w">     </span><span class="n">config_value</span><span class="w"> </span><span class="n">run_value</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">--------------------- ----------- ----------- ------------ ----------
</span></span></span><span class="line"><span class="cl"><span class="n">remote</span><span class="w"> </span><span class="n">login</span><span class="w"> </span><span class="n">timeout</span><span class="w">            </span><span class="mi">0</span><span class="w">      </span><span class="mi">2147483</span><span class="w">          </span><span class="mi">10</span><span class="w">          </span><span class="mi">10</span><span class="w">
</span></span></span></code></pre></div>
</details>



### C. 远程管理传输保密

```sql
exec xp_instance_regread
```

N'HKEY_LOCAL_MACHINE',

N'SOFTWARE\\Microsoft\\Microsoft SQL Server\\MSSQLServer\\SuperSocketNetLib',

N'ForceEncryption';

- **备注**：还需结合证书配置和客户端连接方式，确认是否实际启用加密远程管理。
- **预期证据**：`ForceEncryption` 截图、证书配置截图、SSMS 连接加密说明。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="k">exec</span><span class="w"> </span><span class="n">sp_configure</span><span class="w"> </span><span class="s1">&#39;remote login timeout&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">name</span><span class="w">                  </span><span class="n">minimum</span><span class="w">     </span><span class="n">maximum</span><span class="w">     </span><span class="n">config_value</span><span class="w"> </span><span class="n">run_value</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">--------------------- ----------- ----------- ------------ ----------
</span></span></span><span class="line"><span class="cl"><span class="n">remote</span><span class="w"> </span><span class="n">login</span><span class="w"> </span><span class="n">timeout</span><span class="w">            </span><span class="mi">0</span><span class="w">      </span><span class="mi">2147483</span><span class="w">          </span><span class="mi">10</span><span class="w">          </span><span class="mi">10</span><span class="w">
</span></span></span></code></pre></div>
</details>



### D. 组合鉴别

- **备注**：SQL Server 常通过 AD、MFA、堡垒机、统一认证体系实现双因素。

- **预期证据**：统一认证截图、MFA 策略截图、堡垒机登录截图。

## 访问控制

### A. 账户、角色、权限分配

```sql
select name, type_desc, is_disabled from sys.server_principals;
```

- **备注**：用于核查服务器级账户、角色和禁用状态。
- **预期证据**：账户截图、角色分工说明、账号审批记录。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">Value</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">------
</span></span></span><span class="line"><span class="cl"><span class="mi">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="w"> </span><span class="n">affected</span><span class="p">)</span><span class="w">  </span><span class="c1">-- ForceEncryption=1 表示已强制加密
</span></span></span></code></pre></div>
</details>



### B. 默认账户、多余账户、来源与高权限账户

```sql
select sp.name, sl.sysadmin, sl.securityadmin, sl.serveradmin, sl.setupadmin,
```

sl.processadmin, sl.diskadmin, sl.dbcreator, sl.bulkadmin

from sys.syslogins sl

join sys.server_principals sp on sl.sid = sp.sid;

- **备注**：重点核查 `sa`、`sysadmin`、`securityadmin` 等高权限角色是否最小化。
- **预期证据**：高权限账户截图、管理账户台账、权限调整记录。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">name</span><span class="w">          </span><span class="n">type_desc</span><span class="w">    </span><span class="n">is_disabled</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">------------- ------------ -----------
</span></span></span><span class="line"><span class="cl"><span class="n">sa</span><span class="w">            </span><span class="n">SQL_LOGIN</span><span class="w">              </span><span class="mi">0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">NT</span><span class="w"> </span><span class="n">AUTHORITY</span><span class="err">\</span><span class="k">SYSTEM</span><span class="w">  </span><span class="n">SQL_LOGIN</span><span class="w">     </span><span class="mi">0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">appuser</span><span class="w">       </span><span class="n">SQL_LOGIN</span><span class="w">              </span><span class="mi">0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">##</span><span class="n">MS_SQLResourceSigningCertificate</span><span class="o">##</span><span class="w"> </span><span class="n">CERTIFICATE_MAPPED_LOGIN</span><span class="w"> </span><span class="mi">1</span><span class="w">
</span></span></span></code></pre></div>
</details>



### C. 细粒度授权与最小权限

- **备注**：SSMS 路径：安全性 -> 登录名 -> 属性 -> 用户映射，抽查数据库级授权与对象授权。

- **预期证据**：用户映射截图、数据库授权截图、抽查记录。

### D. 角色继承与特殊角色

- **备注**：结合服务器角色与数据库角色综合判定是否存在过度授权。

- **预期证据**：角色分配截图、角色设计说明。

## 安全审计

### A. 审计功能是否开启

```sql
exec sp_configure 'c2 audit mode';
select name, value_in_use from sys.configurations where name like '%audit%';
```

- **备注**：重点看是否启用数据库审计、服务器审计或等效审计能力。
- **预期证据**：参数截图、审计配置截图、审计平台截图。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">name</span><span class="w">     </span><span class="n">sysadmin</span><span class="w"> </span><span class="n">securityadmin</span><span class="w"> </span><span class="n">serveradmin</span><span class="w"> </span><span class="p">...</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">--------  -------- ------------- ------------
</span></span></span><span class="line"><span class="cl"><span class="n">sa</span><span class="w">              </span><span class="mi">1</span><span class="w">             </span><span class="mi">0</span><span class="w">           </span><span class="mi">0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">dbadmin</span><span class="w">         </span><span class="mi">1</span><span class="w">             </span><span class="mi">1</span><span class="w">           </span><span class="mi">0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">appuser</span><span class="w">         </span><span class="mi">0</span><span class="w">             </span><span class="mi">0</span><span class="w">           </span><span class="mi">0</span><span class="w">
</span></span></span></code></pre></div>
</details>



### B. 审计范围与审计对象

- **备注**：SSMS 路径：服务器属性 -> 安全性，查看登录审核、C2 审核跟踪、DefaultTraceEnabled。

- **预期证据**：界面截图、审计策略截图、审计事件样例。

### C. 审计日志保护与留存

- **备注**：应说明审计日志保存位置、保留周期、访问权限和集中存储方式。

- **预期证据**：日志位置截图、权限截图、留存制度、日志平台截图。

### D. 审计失效告警

- **备注**：补查监控、告警和审计员管理机制。

- **预期证据**：告警规则截图、告警样例、监控平台截图。

## 数据完整性

### A. 传输过程完整性

- **备注**：结合 SSL/TLS、证书和客户端连接方式判定。

- **预期证据**：证书截图、连接加密说明、网络链路说明。

### B. 存储过程完整性

- **备注**：结合 TDE、备份校验、日志保护和配置文件保护方式判定。

- **预期证据**：加密截图、备份校验记录、日志保护说明。

## 数据保密性

### A. 传输过程保密性

- **备注**：结合 `ForceEncryption`、证书和网络链路保护判定。

- **预期证据**：参数截图、证书截图、远程连接说明。

### B. 存储过程保密性

- **备注**：可补查 TDE、Always Encrypted、备份加密、列级加密等能力。

- **预期证据**：TDE 截图、列加密截图、备份加密截图、方案说明。

## 备份恢复

### A. 本地数据备份与恢复

```sql
select database_name, backup_start_date, backup_finish_date, type
```

from msdb.dbo.backupset

order by backup_finish_date desc;

- **备注**：重点核查是否定期备份并具备恢复能力。
- **预期证据**：备份记录截图、备份任务截图、恢复演练记录。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="k">exec</span><span class="w"> </span><span class="n">sp_configure</span><span class="w"> </span><span class="s1">&#39;c2 audit mode&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">name</span><span class="w">                     </span><span class="n">config_value</span><span class="w"> </span><span class="n">run_value</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">------------------------ ------------ ---------
</span></span></span><span class="line"><span class="cl"><span class="n">c2</span><span class="w"> </span><span class="n">audit</span><span class="w"> </span><span class="k">mode</span><span class="w">                       </span><span class="mi">0</span><span class="w">         </span><span class="mi">0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">select</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">value_in_use</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">sys</span><span class="p">.</span><span class="n">configurations</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;%audit%&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">name</span><span class="w">                          </span><span class="n">value_in_use</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">------------------------------ ------------
</span></span></span><span class="line"><span class="cl"><span class="k">default</span><span class="w"> </span><span class="n">trace</span><span class="w"> </span><span class="n">enabled</span><span class="w">                     </span><span class="mi">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">c2</span><span class="w"> </span><span class="n">audit</span><span class="w"> </span><span class="k">mode</span><span class="w">                             </span><span class="mi">0</span><span class="w">
</span></span></span></code></pre></div>
</details>



### B. 异地实时备份

- **备注**：结合日志传送、复制、Always On、镜像等方案核查。

- **预期证据**：高可用/复制状态截图、异地机房说明、拓扑图。

### C. 热冗余与高可用

- **备注**：结合 Always On、集群、镜像、双机切换和演练记录判定。

- **预期证据**：架构图、切换截图、演练记录。

## 剩余信息保护

### A. 鉴别信息所在存储空间释放前清除

- **备注**：结合存储介质清理制度、磁盘加密和销毁记录综合判断。

- **预期证据**：介质清除制度、销毁记录、加密截图。

### B. 敏感数据所在存储空间释放前清除

- **备注**：同上。

- **预期证据**：回收制度、销毁记录、磁盘加密截图。

## 个人信息保护

### A. 个人信息访问控制与审计

- **备注**：抽查敏感字段权限、访问审计和导出审计情况。

- **预期证据**：权限截图、审计截图、导出控制说明。

### B. 个人信息存储与传输保护

- **备注**：抽查加密、脱敏和专门保护措施。

- **预期证据**：脱敏策略截图、加密方案说明、设计材料。

## 入侵防范

### A. 访问来源限制/白名单

- **备注**：结合数据库监听/配置与防火墙策略，确认仅允许授权来源访问。

- **预期证据**：数据库访问控制或监听配置截图、主机/网络防火墙策略、堡垒机访问策略截图。

### B. 异常访问与爆破防护

- **备注**：结合登录失败处理、连接限制、WAF/堡垒机/防暴力破解策略，确认具备阻断或告警能力。

- **预期证据**：失败登录限制参数截图、策略截图、告警样例、访谈记录。

### C. 漏洞扫描与补丁管理

- **备注**：确认数据库漏洞扫描周期、补丁评估与修复流程。

- **预期证据**：漏洞扫描报告、补丁更新记录、变更单。

### D. 恶意代码/工具防护

- **备注**：确认主机侧安全防护软件或EDR对数据库进程的防护与告警能力。

- **预期证据**：安全软件截图、策略配置截图、告警样例。

## 时间同步与日志一致性

- **备注**：确认数据库服务器时间同步（NTP/chrony），保证审计日志时间一致、可溯源。

- **预期证据**：NTP/chrony 配置截图、时间同步状态截图、运维制度或巡检记录。

## 主流版本差异说明

SQL Server主流版本核查差异说明

## 版本识别

```sql
select @@version;
```

## 主流版本分档

1. SQL Server 2012

2. SQL Server 2016

3. SQL Server 2019

4. SQL Server 2022

## 重点差异

### A. 身份鉴别

推荐命令：

```sql
select name, is_disabled,
```

LOGINPROPERTY(name, 'IsExpired') as IsExpired,

LOGINPROPERTY(name, 'IsLocked') as IsLocked,

LOGINPROPERTY(name, 'PasswordLastSetTime') as PasswordLastSetTime

from sys.sql_logins;

版本提示：

1. 2012 到 2022 这类账户核查命令兼容性较好。

### B. 远程管理传输保密

推荐命令：

```sql
exec xp_instance_regread
```

N'HKEY_LOCAL_MACHINE',

N'SOFTWARE\\Microsoft\\Microsoft SQL Server\\MSSQLServer\\SuperSocketNetLib',

N'ForceEncryption';

版本提示：

1. 不同版本更大的差异在 GUI 菜单与高可用部署形式，不在核心核查命令。

### C. 安全审计

推荐命令：

```sql
exec sp_configure 'c2 audit mode';
select name, value_in_use from sys.configurations where name like '%audit%';
```

版本提示：

1. 新版本更常见 SQL Server Audit、扩展事件和更完整的审计能力。

### D. 备份恢复与高可用

推荐命令：

```sql
select database_name, backup_start_date, backup_finish_date, type
```

from msdb.dbo.backupset

order by backup_finish_date desc;

版本提示：

1. 2012 现场常见镜像、日志传送。

2. 2016/2019/2022 更常见 Always On、可用性组和集群。

## 现场编制建议

1. 2012 文档重点关注老版本高可用与审计能力局限。

2. 2016/2019 文档重点关注 Always On、TDE、审计与加密。

3. 2022 文档可继续沿用 2019 核查框架。

## 取证注意事项

1. SQL Server 很多有效证据在 SSMS 图形界面中，命令和界面应联合取证。

2. 失败登录处理通常还要结合 Windows 本地策略或域策略。
