保護資料和日誌檔案的安全

iSQlServer發表於2008-11-26

SQL Server為特定帳戶設定了對每個資料庫中的物理資料和日誌檔案的檔案訪問許可權。這些許可權可以防止當檔案駐留在具有開啟許可權的目錄中時被篡改。例如,如果未設定許可權,並且對資料庫目錄的作業系統許可權設定為可由任何人“完全控制”,則可以訪問該目錄的任何帳戶即使沒有修改資料庫本身的 SQL Server 許可權,也可以刪除或修改資料庫檔案。

檔案訪問許可權可在以下任一資料庫操作過程中設定:建立、附加、分離、修改以新增新檔案、備份或還原。

 管理注意事項
僅當檔案系統支援 Win32 訪問控制(例如,NTFS 檔案系統)時才可以設定許可權。資料庫引擎無法為儲存在原始分割槽或 FAT 和 FAT32 檔案系統中的檔案設定許可權。

如果作業系統管理員手動修改檔案許可權,資料庫引擎將不會嘗試強制應用原始許可權。

如果通過使用 SQL Server Management Studio 更改了 SQL Server (MSSQLSERVER) 服務帳戶,Management Studio 會嘗試將該帳戶和正確的許可權新增到所有的現有資料庫檔案中。對於更改服務帳戶時無法使用的資料庫,此操作可能失敗。

如果通過使用 Microsoft Windows 服務更改了 MSSQLSERVER 服務帳戶,作業系統管理員必須授予新服務帳戶對所有資料庫和日誌檔案的完全控制許可權。

 建立資料庫或新增新檔案
當建立資料庫或修改資料庫以新增新檔案時,會授予 MSSQLSERVER 服務帳戶和本地 Administrators 組成員對資料和日誌檔案的完全控制訪問許可權。所有其他帳戶的檔案訪問許可權將被刪除。

 備份和還原資料庫
MSSQLSERVER 服務帳戶和本地 Administrators 組成員對為了還原或備份而建立的檔案具有完全控制許可權。

如果檔案已存在並且 MSSQLSERVER 服務帳戶已具有該檔案的許可權,則備份或還原操作將繼續。否則,資料庫引擎將模擬正在執行操作的連線的 Windows 帳戶並試圖開啟該檔案。開啟該檔案後,會為 MSSQLSERVER 服務帳戶和本地 Administrators 組成員授予許可權。

備用檔案(撤消檔案)的處理方式與此相同。

 分離和附加資料庫
分離或附加資料庫時,資料庫引擎嘗試模擬執行該操作的連線的 Windows 帳戶,從而保證該帳戶具有訪問資料庫和日誌檔案的許可權。對於使用 SQL Server 登入名的混合安全帳戶而言,該模擬可能會失敗。

安全說明:
建議您不要附加來自未知或不可信來源的資料庫。此類資料庫可能包含惡意程式碼,這些程式碼可能會執行非預期的 Transact-SQL 程式碼,或者通過修改架構或物理資料庫結構導致錯誤。使用來自未知或不可信來源的資料庫前,請在非生產伺服器中針對資料庫執行 DBCC CHECKDB,然後檢查資料庫中的程式碼,例如儲存過程或其他使用者定義程式碼。
 


下表顯示了完成附加或分離操作後為資料庫和日誌檔案設定的許可權,以及資料庫引擎是否可以模擬連線帳戶。

操作  可以模擬連線帳戶  檔案許可權授給 
分離
 是
 只有執行操作的帳戶。如果分離資料庫後需要新增帳戶,可由作業系統管理員新增附加帳戶。
 
分離
 否
 SQL Server (MSSQLSERVER) 服務帳戶和本地 Windows Administrators 組的成員。
 
附加
 是
 SQL Server (MSSQLSERVER) 服務帳戶和本地 Windows Administrators 組的成員。
 
附加
 否
 SQL Server (MSSQLSERVER) 服務帳戶。
 

 方案
下列方案說明了建立資料庫時設定的並在分離和附加資料庫時修改的許可權。

User1 是 dbcreator 固定伺服器角色的一個成員,該成員建立了包含檔案 e:\Data\Sales.mdf 和 f:\Log\Sales.ldf 的資料庫 Sales。建立資料庫時,MSSQLSERVER 服務帳戶是 SQLServiceAccount2,一個本地帳戶。資料庫和日誌檔案的完全控制許可權被授給 SQLServiceAccount2 和 Windows Administrators 組成員。

現決定將 Sales 資料庫移動到同一臺伺服器上的另一個 SQL Server 例項上。sysadmin 固定伺服器角色的成員 Admin3 分離了資料庫。資料庫引擎為 Sales.mdf 和 Sales.ldf 檔案設定了許可權,因此只有 Admin3 帳戶有權訪問這些檔案。

Admin3 連線到 SQL Server 的另一例項 SalesServer。SalesServer 例項的 MSSQLSERVER 服務帳戶是 SQLSalesServiceAccount。此例項上的 SQL Server 管理員 Admin3 附加了 Sales 資料庫。完全控制許可權被授給 SQLSalesServiceAccount 和 Windows Administrators 組成員。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-503438/,如需轉載,請註明出處,否則將追究法律責任。

相關文章