資料庫安全的核心原則:最小權限、預設安全、纵深防禦、持續修補。許多入侵源於安裝階段的疏忽:空密碼 SA、未修補已知漏洞、過度開放協定/功能。本文建立從安裝到營運的完整安全基線。
' ; @ / -- 等 SQL 注入特徵字元,使用參數化查詢。| 決策點 | 安全選擇 | 理由 |
|---|---|---|
| 認證模式 | Windows 驗證模式 (整合模式) | 利用 AD/Kerberos、密碼原則、帳號鎖定、審計;無 sa 密碼風險 |
| SA 密碼 (若必須混合模式) | 複雜密碼 ≥ 16 字元、含大小寫/數字/符號,存放於密碼管理器 | 防止暴力破解、彩虹表攻擊 |
| 服務帳號 | 專用網域服務帳號 (非 LocalSystem/NetworkService) | 最小權限、可跨機器驗證、支援 Kerberos 委派 |
| 網路協定 | 僅啟用必要協定:本機 Shared Memory;內網 Named Pipes/TCP/IP (配合 IPsec) | 減少攻擊面 |
| 功能選擇 | 最小安裝:僅核心引擎、必要工具;不裝範例資料庫、Full-Text (除非需要) | 減少程式碼表面、降低漏洞機率 |
CREATE LOGIN [DBA_User] FROM WINDOWS; ALTER SERVER ROLE sysadmin ADD MEMBER [DBA_User]; 之後停用 sa:ALTER LOGIN sa DISABLE;。DROP LOGIN [BUILTIN\Administrators]; (防止 OS 管理員自動成為 sysadmin)。前提:已建立替代 DBA 登入,否則鎖死自己。EXEC sp_dropextendedproc 'xp_cmdshell';
EXEC sp_dropextendedproc 'xp_regread'; -- 等註冊表相關
EXEC sp_dropextendedproc 'sp_OACreate'; -- 等 OLE Automation 相關
EXEC xp_instance_regwrite 'HKLM', 'Software\Microsoft\MSSQLServer\MSSQLServer', 'ErrorLogSize', 'REG_DWORD', 20000; (保留 20MB)。SELECT/INSERT/UPDATE/DELETE 於特定結構描述,拒絕 DDL、EXECUTE 系統程序。CREATE SERVER AUDIT ...; CREATE DATABASE AUDIT SPECIFICATION ...; 記錄 DML/DDL/權限變更。BACKUP DATABASE ... WITH COMPRESSION, ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = ...); 備份檔異地離線保存。| 頻率 | 動作 |
|---|---|
| 每日 | 檢查錯誤日誌失敗登入、備份完成狀態、磁碟空間 |
| 每週 | MBSA/漏洞掃描、權限審查 (sysadmin 成員)、追蹤旗標/擴展程序檢查 |
| 每月 | 套用累積更新/安全公告、備份還原演練、審計日誌分析 |
| 每季 | 滲透測試、災難恢復演練、安全原則審視更新 |
安全安裝不是終點,是起點。預設安全安裝 + 最小權限原則 + 持續修補循環 + 可驗證的備份/審計,構成 SQL Server 生命週期的鋼鐵防線。將此清單納入標準作業程序 (SOP),讓每一次部署都天生安全。