SQL Server 2000 安全模型建構於 Windows NT 4.0/2000 安全架構之上,採用階層式權限管理:Windows 使用者/群組 → SQL Server 登入 → 資料庫使用者 → 角色/物件權限。正確實作此模型是資料庫安全治理的基石。
兩種權限組織架構
架構一:Windows 群組巢狀授權(推薦)
- 網域使用者 → 指派至 Windows 全域群組(按職能劃分)。
- 全域群組 → 加入本機群組(按資料存取需求劃分)。
- 本機群組 → 授予 SQL Server 登入權限。
- 本機群組 → 授予資料庫存取權限(建立對應使用者)。
- 本機群組 → 授予特定資料庫物件權限(SELECT/INSERT/EXECUTE 等)。
優點:集中於 Windows 層級管理群組成員資格,SQL Server 僅維護群組層級權限,減輕 DBA 負擔,支援 Windows 2000 通用群組。
架構二:SQL Server 角色為基礎
- 步驟 1-4 同架構一,但可減少 Windows 群組層級。
- Windows 帳號/群組 → 直接對應 SQL Server 登入。
- 登入/使用者 → 加入資料庫角色(自訂或預定義)。
- 角色 → 授予物件權限。
優點:權限管理完全在 SQL Server 內部封裝,角色可巢狀(無循環)、使用者可屬多角色,反映組織管理階層(如財務部 → 應付/應收角色 → 財務主管角色)。
驗證模式選擇
- Windows 驗證模式(預設):僅信任連接,使用 Windows SID 追蹤登入,享有密碼策略、鎖定、稽核等原生保護。
- 混合模式:支援 SQL Server 驗證(非信任連接),相容舊版應用與 Win9x 用戶端。SQL 帳密儲存於系統表,傳輸較易遭攔截。
登錄模式儲存於 HKLM\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode(1=Windows、2=混合),修改後需重啟服務。
核心安全主體
固定伺服器角色
伺服器層級,權限不可變更。關鍵角色:
- sysadmin:完整控制權,BUILTIN\Administrators 預設成員,安裝後應審查並移除不必要成員。
- securityadmin、serveradmin、setupadmin、processadmin、diskadmin、dbcreator、bulkadmin。
固定資料庫角色
資料庫層級,存在於每個資料庫(含 master、msdb、tempdb、model)。關鍵角色:
- db_owner:資料庫完全控制,可管理角色成員。
- db_securityadmin:管理角色成員與權限。
- db_datareader、db_datawriter、db_ddladmin、db_accessadmin、db_backupoperator、db_denydatareader、db_denydatawriter。
public 角色
每個資料庫預設存在,所有使用者自動成為成員,不可刪除、不可增減成員。提供基準權限,等同 Windows「Everyone」群組。應審查並最小化 public 角色權限。
安全性最佳實務檢查清單
- 移除
BUILTIN\Administrators 自 sysadmin 角色(建立專屬 DBA 群組替代)。
- SA 帳號設定強複雜密碼,並重新命名或停用。
- 預設使用 Windows 驗證模式,僅在必要時啟用混合模式。
- 套用最小權限原則:僅授予完成工作所需的最低權限。
- 善用角色簡化權限管理,建立符合業務職能的自訂角色。
- 啟用登入稽核(成功/失敗),定期審閱錯誤日誌與預設追蹤。
- 加密敏感資料傳輸(強制 SSL/TLS)、靜態資料加密(TDE/儲存格層級)。
- 定期套用累積更新與安全性修補程式。
- 備份加密與離站儲存,測試還原流程。
SQL Server 2000 雖為舊版產品,其安全模型設計原則(最小權限、角色基礎授權、Windows 整合驗證)至今仍為現代資料庫安全治理的核心基石。