核心觀念:安全必須內建於設計階段
事後添加安全措施如同卡車發動後才檢查煞車,風險極高。開發全生命週期皆須貫徹安全設計規則。
認證模式選擇
| 模式 | 機制 | 優點 | 建議 |
| Windows 整合認證 | 使用者以 Windows 帳號連線,SQL Server 驗證 Windows 權杖 (SID+群組 SID) | 單一身分管理、AD 密碼策略、Kerberos、無密碼傳輸、審計完整、效能佳 | 首選 |
| 混合模式 | Windows 認證 + SQL Server 登入 (帳密儲於 master..sysxlogins) | 相容舊版/異構應用 | 僅相容性必要時啟用 |
密鑰管理:sa 密碼
- 安裝時若選混合模式,必須輸入
sa 密碼(預設不再為空)。
- 即使使用 Windows 認證,也要為 sa 設定強密碼,防未來被迫切換混合模式或本地提權攻擊。
- 密碼複雜度:≥12 字元、大小寫數字符號、非字典詞、定期輪換。
安全主體與權限模型
- 使用者:對應單一 Windows 帳號或 SQL 登入,映射至資料庫使用者。
- 角色/群組:使用者隸屬一或多個角色,繼承角色權限。伺服器角色 (sysadmin 等) 與資料庫角色 (db_datareader 等)。
- 物件擁有者:建立物件者為擁有者,可授予他人存取權限。檢視表擁有者可控制底層資料可見性。
- 權限三態:
GRANT (授予)、REVOKE (移除)、DENY (明確拒絕,優先級最高)。
- 應用程式角色:資料庫層級安全主體,以密碼啟用,將一組使用者視為單一權限單元,定義特定資料庫內可執行操作。
設計階段檢查清單
- 確認認證模式符合企業身分管理策略。
- 所有服務帳號、應用帳號、管理帳號均有強密碼並定期輪換。
- 遵循最小權限:應用布號僅擁有必要物件的必要權限。
- 使用角色管理權限,避免直接授權個別使用者。
- 啟用稽核追蹤關鍵操作 (DDL、登入失敗、權限變更)。
- 預存程序/檢視表封裝資料存取邏輯,應用程式不直接操作資料表。
- 敏感資料欄位加密儲存 (SSL 傳輸 + TDE/資料行加密靜態)。