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

SQL Server 7.0 打造安全資料庫的黃金法則:拒絕直接資料表存取

     編輯:關於SqlServer

核心原則

永遠不要給使用者直接存取資料表的權限。 這是建立安全資料庫的第一要訣。

實作策略

1. 僅授予檢視表與預存程序權限

  • 使用者需透過 Access 等工具存取資料時,僅授與 SELECT、INSERT、UPDATE、DELETE 於檢視表,或 EXECUTE 於預存程序。
  • 若預存程序擁有者為 dbo,且其參考的資料表/檢視表擁有者同為 dbo,授與 EXECUTE 權限即可,資料庫引擎將不再檢查底層資料表權限 (擁有權鏈結)。

2. 在預存程序內實作商業邏輯存取控制

透過預存程序參數與邏輯,精確控制使用者可存取的欄位與列 (Row-Level Security),例如依部門、職位過濾資料。

3. 善用檢視表進行欄位/列層級保護

檢視表可授與 SELECT/INSERT/UPDATE/DELETE 等細緻權限,預存程序僅能授 EXECUTE。視情況選擇適當物件。

跨資料庫擁有權鏈結陷阱

跨資料庫查詢時,擁有權鏈結要求所有參與資料庫的擁有者 (DBO) 必須為同一登入帳號。若資料庫擁有者不同 (即使皆為 sysadmin 角色),鏈結將中斷,導致權限檢查失敗。解決方式:使用 sp_changedbowner 統一資料庫擁有者,或改用憑證/模組簽署 (SQL Server 2005+)。

結語

「不給資料表直接權限、善用擁有權鏈結、在程序/檢視表封裝邏輯」三大原則,配合統一資料庫擁有者,能為 SQL Server 7.0 建立極具彈性且安全的存取控制模型。

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