Sql-Server

為什麼 securityAdmin 沒有足夠的權限?

  • March 6, 2018

我是伺服器安全管理員。

在此處輸入圖像描述

根據Microsoft的說法,securityAdmin 角色應該被視為等同於 sysadmin 角色,但我沒有做以下兩件事

  1. 讓自己成為系統管理員
  2. 授予自己對數據庫的寫入權限。(目前擔任 db_denydatawriter 角色)

在此處輸入圖像描述

在此處輸入圖像描述

我錯過了什麼嗎?

謝謝

更新

根據 RDFozz 的評論,我能夠添加一個新的“虛擬”登錄名,但未能將此登錄名設置為此數據庫的使用者。

在此處輸入圖像描述

更新 2 - 最終腳本有效!

sepupic 的回答很棒!按照他的指示,這裡是 SQL。

首先,使用 myLogin 創建一個新的 super_user。

CREATE LOGIN [super_login] WITH PASSWORD=N'yourPassword'
GRANT CONTROL SERVER TO [super_login]
Grant IMPERSONATE ON LOGIN::[sa] TO [super_login]

然後使用 super_login 登錄,執行它。

Execute as login = 'sa'
 ALTER ROLE [db_denydatawriter] DROP MEMBER [mylogin]
 --ALTER ROLE [db_owner] add MEMBER [mylogin]
 ALTER server ROLE [sysadmin] add MEMBER [mylogin]
Revert

根據微軟的說法,securityAdmin 角色應該被視為等同於 sysadmin 角色,但我沒有做以下兩件事

  1. 讓自己成為系統管理員
  2. 授予自己對數據庫的寫入權限。(目前擔任 db_datadenywrite 角色)

以上都是錯誤的。Secutiry admin 不是 sysadmin,如果是這樣,創建 2 個不同的伺服器角色是為了什麼目的?

Security admin在伺服器級別具有這 3 個權限:

  • CONNECT SQL
  • ALTER ANY LOGIN
  • VIEW ANY DATABASE

CONNECT SQL並且VIEW ANY DATABASE權限被授予public,所以只有一個額外的權限,ALTER ANY LOGIN

在數據庫級別,此角色使您可以向其他使用者授予權限,但您沒有alter any user/ alter any role,因此您無法將自己或任何其他使用者添加到數據庫角色。

片語

授予對數據庫引擎的訪問權限和配置使用者權限的能力允許安全管理員分配大多數伺服器權限。securityadmin 角色應被視為等同於 sysadmin 角色。

在我看來意味著以下幾點:security admin可以以sysadmin某種方式提升他的權限。

我可以給你一個關於這種“方式”的想法。

如果你是security admin你可以創建 SQL Server 登錄(我會打電話給他super_login)並授予他CONTROL SERVER權限。

下一步是登錄並授予super_login想要登錄的所有權限。您可以讓自己成為您現在所在的數據庫,或者將自己從數據庫中刪除或僅將您的登錄名添加到固定伺服器角色。db_owner``db_datadenywriter``db_datadenywriter``sysadmin

引用自:https://dba.stackexchange.com/questions/199440