首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

構建 SQL Server 深度防禦安全模型:從最小權限到補丁管理

     編輯:關於SqlServer

前言:安全是架構而非配置

資料庫安全不僅是設定幾個密碼、開啟防火牆,而是一套貫穿「人、流程、技術」的深度防禦體系。本文從 SQL Server 實戰角度,梳理安全模型建立的完整生命週期:帳號治理、權限最小化、稽核追蹤、補丁管理、弱點加固,助您構建經得起實戰檢驗的防線。

一、帳號與認證基石

1. SA 帳號:必須「存在但不可用」

  • 安裝時設定高複雜度密碼(≥32 字元、含特殊符號)並妥善保管(密碼管理器)
  • 立即停用:`ALTER LOGIN sa DISABLE;`
  • 建立專屬 DBA 帳號(Windows 認證優先),加入 `sysadmin`,作為日常管理入口
  • 應用程式嚴禁使用 SA 或 sysadmin 帳號連線

2. 認證模式選擇

建議:能用 Windows 驗證就不用混合模式;必須用 SQL Login 時,採用 Contained Database User 避免孤立用戶問題。

3. 服務帳號最小權限

  • SQL Server / Agent / Integration Services 各自使用專屬網域服務帳號(非本地系統、非網路服務)
  • 布號僅具備:啟動服務、讀寫資料/記錄/備份目錄、註冊 SPN
  • 嚴禁加入 Domain Admins、Local Administrators

二、權限模型:最小權限原則落地

1. 角色設計矩陣

-- 業務應用角色範例
CREATE ROLE app_readonly;
GRANT SELECT ON SCHEMA::dbo TO app_readonly;
GRANT EXECUTE ON SCHEMA::dbo TO app_readonly;  -- 僅透過預存程序存取

CREATE ROLE app_readwrite;
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::dbo TO app_readwrite;
DENY TRUNCATE TABLE ON SCHEMA::dbo TO app_readwrite;  -- 防誤刪全表

-- DBA 分級
CREATE ROLE dba_monitor;      -- 唯讀監控
GRANT VIEW SERVER STATE TO dba_monitor;
GRANT VIEW ANY DEFINITION TO dba_monitor;

CREATE ROLE dba_maintain;     -- 維護非核心
GRANT ALTER ANY DATABASE TO dba_maintain;
GRANT CREATE ANY DATABASE TO dba_maintain;
-- 無 sysadmin,無法 DROP 核心庫、無法變更安全設定

2. 權限審計查詢

-- 找出直接授予的高風險權限
SELECT
    p.name AS Principal,
    p.type_desc,
    perm.permission_name,
    perm.state_desc,
    OBJECT_NAME(perm.major_id) AS ObjectName
FROM sys.database_permissions perm
JOIN sys.database_principals p ON perm.grantee_principal_id = p.principal_id
WHERE perm.permission_name IN ('CONTROL','ALTER','TAKE OWNERSHIP','VIEW DEFINITION')
  AND perm.state_desc = 'GRANT'
  AND p.type_desc IN ('SQL_USER','WINDOWS_USER','WINDOWS_GROUP');

3. 動態資料遮罩與行級安全性 (SQL 2016+)

  • Dynamic Data Masking:非特權使用者查詢敏感欄位(身分證、信用卡、薪資)自動遮罩,零代碼改動
  • Row-Level Security:依使用者身分自動過濾資料列,多租戶/部門隔離的最佳實踐

三、稽核與監控:可見即可控

1. SQL Server Audit 設定

-- 建立伺服器級稽核(寫入檔案,啟用佇列延遲寫入降低效能影響)
CREATE SERVER AUDIT [Audit_Security]
TO FILE (
    FILEPATH = 'E:\SQLAudit\',
    MAXSIZE = 1 GB,
    MAX_FILES = 10,
    RESERVE_DISK_SPACE = ON
)
WITH (QUEUE_DELAY = 1000, ON_FAILURE = CONTINUE);
ALTER SERVER AUDIT [Audit_Security] WITH (STATE = ON);

-- 稽核規格:登入失敗、權限變更、結構變更
CREATE SERVER AUDIT SPECIFICATION [Spec_Security]
FOR SERVER AUDIT [Audit_Security]
ADD (FAILED_LOGIN_GROUP),
ADD (SERVER_ROLE_MEMBER_CHANGE_GROUP),
ADD (DATABASE_ROLE_MEMBER_CHANGE_GROUP),
ADD (SCHEMA_OBJECT_CHANGE_GROUP)
WITH (STATE = ON);

2. 關鍵事件即時告警

  • 登入失敗頻率異常(暴力破解)
  • sysadmin 成員變更
  • 備份/還原操作
  • xp_cmdshell 啟用/使用

四、補丁與弱點管理

1. Slammer 蠕蟲的歷史教訓

2003 年 Slammer 利用 SQL Server 2000 Resolution Service (UDP 1434) 緩衝區溢位,15 秒感染全網。核心教訓:

  • 上線前必須打補丁:未修補的 SQL Server 接入網路 = 等待被感染
  • 關閉不需要的服務:SQL Server Browser (UDP 1434) 內網不需對外公開
  • 防火牆預設拒絕:僅開放 TCP 1433(或自訂連接埠)給應用伺服器 IP 段

2. 現代補丁策略

模式適用場景優勢注意事項
Windows 驗證企業內網、AD 環境Kerberos/NTLM 單點登入、密碼策略集中、無密碼傳輸需 SPN 正確註冊支援 Kerberos 委派
混合模式跨網域、雲端、非 AD 環境SQL Login 靈活、支援 contained database user必須強制密碼策略、定期輪換、啟用登入稽核

3. CVE 追蹤來源

  • Microsoft Security Response Center (MSRC)
  • NVD (National Vulnerability Database)
  • SQL Server 版本生命週期表(主流支援 vs 延伸支援)

五、網路與表面積縮減

1. 端點最小化

  • TCP/IP:僅綁定業務網卡 IP,停用「全部 IP」
  • 連接埠:生產環境修改預設 1433(安全性透過模糊性輔助)
  • 停用 Named Pipes、Shared Memory(僅本機管理需求保留 Shared Memory)
  • 強制加密連線:`FORCE ENCRYPTION = ON` + 有效憑證

2. 功能表面積

-- 停用高風險功能
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0; RECONFIGURE;          -- 命令執行
EXEC sp_configure 'Ole Automation Procedures', 0; RECONFIGURE; -- COM 物件
EXEC sp_configure 'Ad Hoc Distributed Queries', 0; RECONFIGURE; -- OPENROWSET
EXEC sp_configure 'CLR Enabled', 0; RECONFIGURE;          -- 若不使用 CLR
EXEC sp_configure 'cross db ownership chaining', 0; RECONFIGURE;
EXEC sp_configure 'show advanced options', 0; RECONFIGURE;

六、備份加密與離線保護

  • 備份壓縮 + AES 256 加密:`BACKUP DATABASE ... WITH COMPRESSION, ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = BackupCert)`
  • 備份檔案異地儲存(不同防火區、雲端冷存儲)
  • 定期演練還原(RTO 驗證),檢查加密憑證可用性

七、總結:安全成熟度階梯

層級頻率驗證方式
Windows OS 更新月度 (Patch Tuesday)WSUS / Azure Update Management
SQL Server CU/GDR季度評估、關鍵漏洞 72h 內Test 環境回歸 → 預發 → 生產滾動
驅動程式/韌體半年/廠商建議硬體廠商通知 + 相容性矩陣
階段特徵關鍵行動
Level 1: 基線SA 強密碼+停用、混合模式最小化、防火牆開放最小埠、打上最新 CU安裝清單驗收
Level 2: 最小權限角色化授權、無 sysadmin 應用帳號、服務帳號專屬、稽核開啟權限矩陣文件化、季度審計
Level 3: 深度防禦資料遮罩/RLS、備份加密、TDE 透明加密、Always Encrypted、漏洞掃描納入 CI/CD紅藍對抗演練、事件響應 SOP
Level 4: 零信任身分為新邊界、Just-In-Time 提權、微隔離、資料分級保護、供應鏈安全持續驗證、自動化修復

安全沒有終點,只有持續演進。從今天開始,建立您的 SQL Server 安全基線,並在每次變更中踐行「最小權限、預設拒絕、全程稽核」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved