SysAdmin 伺服器角色和 Active Directory 組
我一直在努力尋找有關為組成員提供 SysAdmin 伺服器角色的 Active Directory 組的最佳實踐資訊或任何建議。我在一份新工作中,我是 50 到 100 個 SQL 實例的唯一 SQL Server DBA。還有另一位(網路)系統管理員將具有 SysAdmin 伺服器角色。將來可能還會有其他人(可能是也可能不是 DBA)。
我正在描繪兩種選擇:
選項 1:在 Active Directory 中創建一個組,根據需要將我自己和任何其他人添加到該組中,在 AD 組的每個 SQL Server 實例上創建 SQL Server 登錄名,並為登錄名提供 SysAdmin 伺服器角色。
這很方便,並且具有一定的靈活性。但這似乎是一個巨大的安全風險。作為一名 DBA,我無法完全控制 AD 組的成員(或外)。目前,每個 SQL Server 實例都有少數具有 SysAdmin 角色的登錄名。除了我、網路系統管理員和 sa 之外,我想將 SysAdmin 帶離他們所有人。如果我完成這項任務並實施選項 1,我最終不會比我開始的地方好。
選項 2:在每個 SQL Server 上使用單獨的 Windows 身份驗證(AD 帳戶)登錄,並賦予每個 SysAdmin 伺服器角色。
這不是很方便,但只有兩個人/AD 登錄具有 SysAdmin 權限。只要我們都沒有將 SysAdmin 角色成員資格授予其他人,就應該有一定的順序。
哪個選項是首選?還有其他我忽略的選擇嗎?
我不想回答我自己的問題,但我決定選項 2 是適合我的方式。我終於找到了一些“最佳實踐”資訊,儘管它與PCI DSS 合規性有關。這是一本很棒的讀物,有一些很棒的建議。我無法實現所有這些,而且我可能永遠無法通過 PCI 審核,但我絕對會提高安全性。對於它的價值,以下是與
SYSADMIN
角色相關的建議:限制對持卡人數據的訪問的一個關鍵步驟是限制分配給系統管理員伺服器角色的特權使用者的數量。預設情況下,BUILTIN/Administrators 組不是 SQL Server 2008 R2 中 sysadmin 角色的成員。PCI DSS直接支持“最小權限”訪問模型的最佳實踐理念;因此,我們建議如下:
- sysadmin 角色的成員只能使用單獨的 Windows 登錄名登錄
- 分配給 sysadmin 角色的使用者數應該最少
- 應根據工作職能分配 sysadmin 角色
- sysadmin 角色的 Windows 登錄成員應單獨獲得對 SQL Server 的訪問權限,而不是通過映射的 AD 組
- sysadmin 角色的成員不應是本地 Windows 管理員
- sysadmin 角色的成員不應訪問 SQL Server 服務有權訪問的伺服器上的任何文件夾或文件共享,例如包含數據和日誌文件的文件夾,以及可以將數據庫或加密密鑰備份到的目錄
- Windows 本地或域管理員不應具有對 SQL Server 的系統管理員訪問權限
個人賬戶將更難管理。它們使您可以更精細地控制訪問權限,但您不能將 Active Directory 管理員拒之門外。在您的伺服器上被授予本地管理員權限的任何人都可以獲得對該實例的系統管理員訪問權限。而且,正如一位非常優秀的 DBA 曾經告訴我的那樣,如果您不能信任您的域管理員,那麼您將面臨更大的問題。
通過抽象您對 AD 組的訪問,您可以獲得兩個好處:
- 更容易根據角色管理訪問組和權限,並結合使用這些 AD 組對其他資產進行分層訪問控制。
- 提供更一致的審核,因為您只需要顯示 AD 組的訪問權限,然後顯示該組中包含的人員。