此檢查清單可協助您檢閱您如何在組織中限制對資料的存取。使用此檢查清單定期稽核使用者如何存取儲存在 SQL Server Database Engine 中的資訊。
對於 SQL Server 執行個體的存取
這些項目與整個 Database Engine 執行個體相關。
.gif) |
- 您是否已經透過 Windows 群組授與大部分登入的存取?
提示:使用 Windows 群組設定 Database Engine 的存取可以讓存取的管理和維護更為容易。如需有關登入的詳細資訊,請參閱<主體 (Database Engine)>。
|
.gif) |
- 您是否已經從 Database Engine 移除不必要或過時的登入?
提示:這可能需要定期手動檢閱。主要透過 Windows 群組啟用存取可能會使這個工作更容易。
|
.gif) |
- 您是否已經實作最少權限的主體?
提示:主體 (登入、使用者和角色) 只能被授與它們必須存取以完成其工作的那些資料庫物件權限。請勿讓一般使用者使用系統管理員帳戶 (如 sa) 連線。請勿讓網頁、自訂應用程式或 SSIS 封裝使用系統管理員帳戶連線。
|
.gif) |
- 為了在不授與額外權限的情況下檢視系統中繼資料,您是否已經選擇性地在物件、結構描述、資料庫或伺服器層級授與 VIEW DEFINITION 權限?
提示:如需詳細資訊,請參閱<GRANT (Transact-SQL)>。
|
.gif) |
- 您是否已經將遠端伺服器取代成連結的伺服器?
提示 :如需詳細資訊,請參閱<設定遠端伺服器>和<連結伺服器>。
|
.gif) |
- 如果需要向連結的伺服器進行通過驗證,您是否已經強迫委派?
提示:如需詳細資訊,請參閱<sp_addlinkedsrvlogin (Transact-SQL)>。
|
.gif) |
- 您是否已經透過伺服器停用特定查詢 (除非需要)?
提示 如需詳細資訊,請參閱<特定分散式查詢選項>。
|
管理使用者識別
這些項目與每個資料庫上的設定相關。
.gif) |
- 是否在必要的情況下,才針對匿名使用者停用每個資料庫中的 guest 使用者帳戶?
提示:請使用 SQL Server Management Studio 或 Transact-SQL 停用帳戶。
|
.gif) |
- 使用者是否只能存取必要的資料庫?
提示:這可能需要定期手動檢閱。主要透過 SQL Server 角色啟用存取可能會使這個工作更容易。如需詳細資訊,請參閱<伺服器層級角色>。
|
.gif) |
- 是否已經透過 SQL Server 角色授與大部分使用者的存取?
提示:使用伺服器和資料庫角色設定存取可以讓存取的維護更為容易。如需有關角色的詳細資訊,請參閱<資料庫層級角色>。
|
.gif) |
- SQL Server Agent 是否使用認證執行需要特定權限的作業步驟,而不是調整 SQL Server Agent 服務帳戶的權限?
提示:如需詳細資訊,請參閱<認證 (Database Engine)>。
|
.gif) |
- 如果 SQL Server Agent 使用者需要執行要求不同 Windows 認證的作業,您是否已經指派這些使用者一個擁有足以完成該工作之權限的 Proxy 帳戶?
提示:如需詳細資訊,請參閱<如何:建立 Proxy (SQL Server Management Studio)>。
|
.gif) |
- 您是否在模組中封裝資料庫物件的存取,例如預存程序、函數、觸發程序或組件?
提示:限制對預先定義之模組的存取會讓惡意使用者更難以執行任意程式碼。如需詳細資訊,請參閱<了解預存程序>。
|
.gif) |
- 您是否已經在模組中明確設定執行內容,而不是使用預設內容?
提示:如需詳細資訊,請參閱<在模組中使用 EXECUTE AS>。
|
.gif) |
- 模組是否經過簽署以禁止竄改?
提示:如需詳細資訊,請參閱<模組簽署 (Database Engine)>。
|
.gif) |
- 您是否使用 USER WITHOUT LOGIN 而非應用程式角色?
提示:如需詳細資訊,請參閱<SQL Server 2005 安全性最佳作法 - 操作與系統管理工作>(英文)。
|
.gif) |
- 您是否使用 EXECUTE AS 而非 SETUSER?
提示:如需詳細資訊,請參閱<EXECUTE AS 與 SETUSER>。
|
.gif) |
- 您是否已經將應用程式角色取代成 EXECUTE AS?
提示:請使用 EXECUTE AS … WITH NO REVERT (如果可能)。巢狀識別變更時,請使用 EXECUTE AS … WITH COOKIE 選項。如需詳細資訊,請參閱<EXECUTE AS (Transact-SQL)>。
|
物件存取
這些項目與存取資料庫物件相關。
.gif) |
- public 伺服器和伺服器角色是否只被授與少數 (如果有的話) 權限?
提示:所有登入和使用者都是 public 角色的成員,且無法移除。這些角色所擁有的權限應該非常有限。
|
.gif) |
- 類似的資料庫物件會被一起分組到相同的結構描述中嗎?
提示:根據業務需求建立結構描述。請使用這些自訂結構描述而非 dbo 結構描述。如需詳細資訊,請參閱<結構描述 (Database Engine)>。
|
.gif) |
- 您是否透過在結構描述層級設定擁有權和權限來管理資料庫物件安全性?
提示:如需詳細資訊,請參閱<GRANT 結構描述權限 (Transact-SQL)>。
|
.gif) |
- 您是否擁有不同的結構描述擁有者,而不是擁有 dbo 所擁有的所有結構描述?
提示:當所有結構描述都有相同的擁有者時,擁有權鏈結可能會略過必要的權限檢查。如需詳細資訊,請參閱<擁有權鏈結>。
|
.gif) |
- 如果程序需要額外的權限,您是否使用程序性程式碼的程式碼簽署?
提示:如需詳細資訊,請參閱<模組簽署 (Database Engine)>。
|
.gif) |
- TRUSTWORTHY 資料庫選項是否設定為 OFF?
提示:設為 ON 時,使用模擬內容的資料庫模組 (例如,使用者定義函數或預存程序) 可以存取資料庫之外的資源。使用 ALTER DATABASE 陳述式變更 TRUSTWORTHY 設定。如需詳細資訊,請參閱<TRUSTWORTHY 資料庫屬性>。
|
.gif) |
- 模組是否會採取防止 SQL 資料隱碼的步驟?
提示:如需詳細資訊,請參閱<SQL 資料隱碼>。
|
.gif) |
- 如果允許對資料庫的特定存取 (而非封裝模組內的存取),應用程式是否會採取防止 SQL 資料隱碼的措施?
提示:如需詳細資訊,請參閱下列連結。
|