資料庫安全不僅是設定密碼,需建立完整安全模型:最小權限、分層防護、持續修補。本文整理微軟最佳實務與實戰經驗。
安全設定四步驟
- SA 帳號強化:安裝時即設定強複雜密碼;建立專屬管理帳號加入 `sysadmin`,停用或重命名 `sa`。
- 個別帳號與整合驗證:每人一帳號,優先使用 **Windows 整合驗證**,由 AD 統一密碼策略、鎖定策略管理。
- 最小權限原則:僅授予業務必要的 `SELECT/INSERT/UPDATE/DELETE`/`EXECUTE` 權限;嚴禁直接給 `db_owner` 或 `sysadmin`。
- 職責分離:薪資等敏感資料僅限薪資專員存取;開發人員僅有測試環境權限,生產環境由 DBA 部署腳本。
兩大致命風險與對策
1. 空白/弱密碼 SA 帳號
預設安裝 `sa` 密碼為空。若不修改,任何連線者即擁有最高權限,可控制整台伺服器(透過 `xp_cmdshell` 等)。必須安裝即設定強密碼,並建立具名管理帳號取代日常使用。
2. Slammer 蠕蟲 (2003/01)
針對 SQL Server 2000 `Resolution Service` (UDP 1434) 緩衝區溢位,15 秒感染全網。微軟發布 SP3a 修補,但**未修補系統至今仍會被掃描感染**。
- 上線前**必須套用最新 Service Pack / 累積更新**。
- 封鎖 UDP 1434、TCP 1433 於網路邊界(非必要不對外開放)。
- 訂閱 Microsoft Security Bulletin 即時獲知補丁。
認證模式選擇
| 模式 | 優點 | 缺點/適用場景 |
| Windows 整合驗證 | 單一身分管理、密碼不寫連線字串、Kerberos/NTLM 雙重保護、群組原則統一管控 | 需網域環境、跨平台信任困難 |
| 混合模式 | 支援非網域/舊版應用、SQL 登入獨立管理 | 密碼可能硬編碼、雙重登入煩瑣 |
建議:網域環境優先整合驗證;非網域或跨平台才用混合模式。
安裝階段安全細節
- 網路庫選 **TCP/IP**,避免 Named Pipes 暴露管道名稱。
- 服務啟動帳號使用**最低權限網域帳號**,而非 Local System/Administrator。
- 防火牆僅開放必要埠(1433/1434),非必要不對外。
- 資料庫檔案置於受保護磁碟/資料夾(ACL 僅限服務帳號、DBA)。
總結
安全是持續過程:強化 SA、套用補丁、最小權限、整合驗證、審計稽核。從第一天開始建模,讓資料洩露無從下手。
- 上一篇文章: MS SQL Server T-SQL 快速參考:DML/DDL/DCL/TCL/程序化/函數/系統函數完整分類
- 下一篇文章: SQL 預存程序動態產生 HTML 標籤實現前端標題變色
Copyright ©
程式碼之家 All Rights Reserved