Sql-Server
撤銷對 SQL Server 實例上的伺服器“公共”角色的伺服器權限是最佳做法嗎?
C:\Program Files (x86)\Microsoft SQL Server\number\Tools\Policies\DatabaseEngine\1033
我們已經在我們的每個 SQL Server 實例(此處的範例)上評估了 Microsoft“最佳實踐”策略(位於)。以下問題已向我們報告:這提供了一個指向 Microsoft 頁面的連結,該頁面將以下內容列為最佳實踐:
不要將伺服器權限授予伺服器公共角色。
在審查安全性時,我們可以看到 public 角色預設具有查看任何數據庫的伺服器權限。我們已經執行了以下操作並重新評估了該政策,但問題仍然存在。
REVOKE VIEW ANY DATABASE TO [public] AS [sa];
此伺服器角色的唯一其他權限是能夠通過 TCP/VIA/命名管道/本地機器連接的端點權限。如果我們去掉這些,這個角色肯定是多餘的。
問題
- 我們應該擔心這個嗎?這是我們真的應該解決的問題嗎?
- 我們還需要做些什麼來正確解決這個問題?
- 這樣做或不這樣做有什麼影響嗎?
是的,你應該解決這個問題。如果您在伺服器中有多個數據庫,則一個數據庫中的合法使用者可能與另一個數據庫無關,並且不會是該數據庫中的使用者,因此不是“公共”使用者。為什麼要授予公共使用者權限以查看/訪問他們無權訪問的數據庫中的對象?
確保在修復這些問題後測試應用程序。有時,即使是合法使用者也可能缺少適當的授予權限,並且可能一直基於公共訪問權限工作,這在您修復“公共”角色訪問權限後將無法正常工作。它們需要通過授予 stmt 對特定對像或通過數據庫角色或通過使用者角色授予顯式訪問權限。