安全加固五大支柱
1. 保持補丁最新:服務包 + 安全更新
- SQL Server 2000 **必裝 SP4** (含 MS08-040/MS09-004 等關鍵修補)。
- SQL Server 2005/2008 **必裝最新 SP + CU** (如 2005 SP4 CU3、2008 SP4 CU)。
- 訂閱 Microsoft Security Bulletin 或配置 WSUS/SCCM 自動推送。
- 使用 Microsoft Baseline Security Analyzer (MBSA) 定期掃描:缺失補丁、弱密碼、過度授權、危險擴展存儲過程、Guest 權限、安裝介質殘留 sa 密碼等 10+ 項基線檢查。
2. 強制 Windows 身份驗證模式
- 企業管理器 / SSMS → 實例屬性 → 安全性 → **僅限 Windows 身份驗證**。
- 優勢:Kerberos/NTLM 強認證、密碼策略 (複雜度/過期/歷史) 域級統一、無需應用層存儲密碼、支持約束委派 (跨服務器雙跳)。
- 混合模式僅作為非域環境/舊應用過渡,並嚴格限制 SQL 登錄賬號權限。
3. 物理與邏輯隔離
- 物理:機房門禁、UPS、防水/煙感/滅火、機架鎖定、介質銷毀流程。
- 網絡:數據庫服務器僅放內網 DMZ,禁止直連 Internet;防火牆僅開放應用服務器 IP → 1433/實例端口;管理端口 (RDP/SSH) 僅堡壘機/跳板機可達。
- 實例:非核心業務獨立實例,甚至獨立服務器;關鍵業務啟用 AlwaysOn/FCI 高可用。
4. 最小權限原則與賬號管理
| 賬號類型 | 原則 | 執行動作 |
| sa / 系統管理員 | 極少數人知情、極少使用 | 強密碼 (20+ 字符)、重命名、禁用、審計日誌告警 |
| 服務帳戶 | 域用戶、非管理員 | 授予 Perform Volume Maintenance Tasks (瞬間文件初始化)、Lock Pages in Memory (大內存) 僅按需 |
| 應用連接賬號 | 僅擁有業務庫 DML 權限 | 拒絕 DDL、EXECUTE 系統存儲過程、xp_cmdshell、跨庫訪問 |
| 開發/運維賬號 | 按角色分級 | 只讀角色、DML 角色、DDL 角色、安全管理員角色,定期審計回收 |
5. 定期備份與異地存儲
- 策略:全量 (週) + 差異 (日) + 日誌 (時) ,驗證 `RESTORE VERIFYONLY`。
- 介質:磁盤 (本地/NAS) + 雲存儲 (Azure Blob/AWS S3/阿里云 OSS) 異地冗餘。
- 加密:備份壓縮加密 (SQL 2014+ `BACKUP ... WITH ENCRYPTION`)、傳輸加密 (TLS 1.2)。
- 演練:季度級**全量恢復演練**,記錄 RTO/RPO,驗證數據完整性與應用可用性。
快速自檢腳本 (運行於目標實例 master 庫)
-- 1. 檢查認證模式 (1=Windows, 2=Mixed)
EXEC xp_instance_regread N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode';
-- 2. 列出 sysadmin 成員
SELECT name, type_desc, is_disabled, create_date, modify_date
FROM sys.server_principals
WHERE IS_SRVROLEMEMBER('sysadmin', name) = 1;
-- 3. 檢查空/弱密碼 SQL 登錄 (需 sysadmin)
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('', password_hash) = 1 -- 空密碼
OR PWDCOMPARE(name, password_hash) = 1; -- 密碼等於用戶名
-- 4. 危險擴展存儲過程是否存在
SELECT name FROM sys.extended_procedures
WHERE name IN ('xp_cmdshell','xp_regread','xp_regwrite','sp_OACreate','sp_OAMethod');
-- 5. Guest 用戶權限
SELECT db_name() AS DB, su.name AS GuestUser, dp.permission_name, dp.state_desc
FROM sys.database_principals su
JOIN sys.database_permissions dp ON su.principal_id = dp.grantee_principal_id
WHERE su.name = 'guest' AND dp.state = 'G';
合規映射參考
| 合規標準 | 核心要求映射 |
| 等保三級 | 身份鑒別、訪問控制、安全審計、入侵防範、惡意代碼防範 |
| PCI-DSS 4.0 | 需求 2/3/7/8/10/12:默認密碼修改、加密傳輸/存儲、最小權限、唯一 ID、審計日誌、風險評估 |
| GDPR | 數據最小化、存儲限制、完整性保密性、DPIA、72h 違規通報 |
總結
SQL Server 安全非一次性配置,而是**補丁管理 + 認證模式 + 網絡隔離 + 最小權限 + 備份演練**五大持續性流程的疊加。建議將上述清單納入月度巡檢制度,配合 MBSA/自動化腳本產出合規報告,做到有據可查、有錯必改、有責可追。