伺服器層級角色
適用于:SQL Server
Azure SQL 受控執行個體Analytics Platform System (PDW)
SQL Server提供伺服器層級角色,以協助您管理伺服器上的許可權。 這些角色是將其他主體組成群組的安全性主體。 伺服器層級角色的權限範圍為整個伺服器 (「角色」就像是 Windows 作業系統中的「群組」)。
SQL Server 2019 和舊版提供九個固定伺服器角色。 授與固定伺服器角色的許可權 (,但 公用) 無法變更。 從 SQL Server 2012 (11.x) 開始,您可以建立使用者定義的伺服器角色,並將伺服器層級許可權新增至使用者定義的伺服器角色。
SQL Server 2022 (16.x) 隨附 10 個額外的伺服器角色,這些角色已特別以最低許可權原則設計,其前置 ##MS_
詞和尾碼 ##
可區分它們與其他一般使用者建立的主體和自訂伺服器角色。 這些新角色包含適用于伺服器範圍的許可權,但也可以繼承至個別資料庫 (,但 ##MS_LoginManager## 伺服器角色除外。)
如同內部部署 SQL Server,伺服器權限是以階層方式進行組織。 這些伺服器層級角色所持有的權限可以傳播至資料庫權限。 若要讓許可權在資料庫層級有效有用,登入必須是伺服器層級角色##MS_DatabaseConnector## 的成員#MS_DatabaseConnector## (從 SQL Server 2022 (16.x) ) 開始,這會授與所有資料庫的 CONNECT許可權,或擁有個別資料庫中的使用者帳戶。 這也適用于 master
資料庫。
請考慮下列範例:伺服器層級角色 ##MS_ServerStateReader## 保留 VIEW SERVER STATE許可權。 屬於此角色成員的登入,具有資料庫中的使用者帳戶, master
以及 WideWorldImporters
。 接著,此使用者也會擁有這些兩個資料庫中依繼承的許可權 VIEW DATABASE STATE 。
您可以將伺服器層級主體 (SQL Server登入、Windows 帳戶和 Windows 群組) 新增至伺服器層級角色。 固定伺服器角色的每個成員可以對相同的角色增加其他登入。 使用者定義伺服器角色的成員無法將其他伺服器主體新增至角色。
固定伺服器層級角色
注意
SQL Server 2022 (16.x) 之前引進的這些伺服器層級角色無法在 Azure SQL Database 或 Azure Synapse Analytics 中使用。 版權管理有特殊Azure SQL資料庫伺服器角色,相當於 SQL Server 2022 (16.x) 中引進的伺服器層級角色。 如需SQL Database的詳細資訊,請參閱控制及授與資料庫存取權。
下表顯示固定伺服器層級角色及其功能。
固定伺服器層級角色 | 描述 |
---|---|
sysadmin | sysadmin 固定伺服器角色的成員可以執行伺服器中的所有活動。 |
serveradmin | serveradmin 固定伺服器角色的成員可以變更全伺服器組態選項及關閉伺服器。 |
securityadmin | securityadmin 固定伺服器角色的成員可以管理登入及其屬性。 他們可以 GRANT (授與)、DENY (拒絕) 和 REVOKE (撤銷) 伺服器層級權限。 如果他們擁有資料庫的存取權,也可以 GRANT 、DENY 和 REVOKE 資料庫層級權限。 此外,他們可以重設SQL Server登入的密碼。重要: 授與 Database Engine 存取權及設定使用者許可權的能力,可讓安全性系統管理員指派大部分的伺服器許可權。 您應該將 securityadmin 角色視為相當於 系統管理員 角色。 或者,從 SQL Server 2022 (16.x) 開始,請考慮使用新的固定伺服器角色##MS_LoginManager##。 |
processadmin | processadmin固定伺服器角色的成員可以結束SQL Server實例中執行的進程。 |
setupadmin | setupadmin固定伺服器角色的成員可以使用 Transact-SQL 語句來新增和移除連結的伺服器。 使用 Management Studio.) 時需要 (系統管理員 成員資格 |
bulkadmin | bulkadmin 固定伺服器角色的成員可以執行 BULK INSERT 陳述式。Linux 上的 SQL Server不支援bulkadmin角色或 ADMINISTER BULK OPERATIONS 許可權。 只有系統管理員可以針對Linux 上的 SQL Server執行大量插入。 |
diskadmin | diskadmin 固定伺服器角色是用來管理磁碟檔案。 |
dbcreator | dbcreator 固定伺服器角色的成員可以建立、改變、卸除及還原任何資料庫。 |
public | 每個SQL Server登入都屬於公用伺服器角色。 當伺服器主體尚未授與或拒絕安全性實體物件上的特定許可權時,使用者會繼承該物件上授與給 公用 的許可權。 只有當您想要將任何物件提供給所有使用者使用時,才指派該物件的 public 權限。 您無法變更公用的成員資格。 注意:public 的實作方式不同於其他角色,您可以授與、拒絕或撤銷 public 固定伺服器角色的權限。 |
重要
下列伺服器角色所提供的大部分許可權不適用於 Azure Synapse Analytics - processadmin、serveradmin、setupadmin和diskadmin。
已修正 SQL Server 2022 中引進的伺服器層級角色
下表顯示SQL Server 2022 (16.x) 及其功能引進的其他固定伺服器層級角色。
注意
這些伺服器層級的許可權不適用於 Azure SQL 受控執行個體 或 Azure Synapse Analytics。 ##MS_PerformanceDefinitionReader#、#MS_ServerPerformanceStateReader##和##MS_ServerSecurityStateReader##是在 SQL Server 2022 (16.x) 引進,且無法在 Azure SQL Database 中使用。
固定伺服器層級角色 | 描述 |
---|---|
##MS_DatabaseConnector## | ##MS_DatabaseConnector## 固定伺服器角色的成員可以連線到任何資料庫,而不需要資料庫中的使用者帳戶才能連線。 若要拒絕特定資料庫的 [連線] 權限,使用者可以為資料庫中的這個登入建立相符的使用者帳戶,然後 [拒絕] 資料庫使用者的 [連線] 權限。 此 [拒絕] 權限會覆寫來自這個角色的 [授與連線] 權限。 |
##MS_LoginManager## | ##MS_LoginManager##固定伺服器角色的成員可以建立、刪除和修改登入。 與舊的固定伺服器角色 安全性管理員相反,此角色不允許成員具有 GRANT 許可權。 這是更有限的角色,可協助遵守 最低許可權原則。 |
##MS_DatabaseManager## | ##MS_DatabaseManager## 固定伺服器角色的成員可以建立和刪除資料庫。 建立資料庫的 ##MS_DatabaseManager## 角色成員會變成該資料庫的擁有者,讓使用者能夠像 dbo 使用者一樣連線至該資料庫。 dbo 使用者具有資料庫的所有資料庫權限。 ##MS_DatabaseManager## 角色成員不一定有權限可存取非其所有的資料庫。 此伺服器角色具有與SQL Server中 dbcreator 角色相同的許可權,但我們建議將此新角色用於先前角色,因為此角色也存在於 Azure SQL Database 中,因此有助於在不同環境中使用相同的腳本。 |
##MS_ServerStateManager## | 固定伺服器角色 ##MS_ServerStateManager## 的成員和 ##MS_ServerStateReader## 角色具有相同權限。 此外,它也會保留ALTER SERVER STATE許可權,其允許存取數個管理作業,例如: DBCC FREEPROCCACHE 、、、 DBCC FREESYSTEMCACHE ('ALL') DBCC SQLPERF() |
##MS_ServerStateReader## | ##MS_ServerStateReader##固定伺服器角色的成員可以讀取所有動態管理檢視, (VIEW SERVER STATE所涵蓋的 DMV) 和函式,並且分別具有此角色成員具有使用者帳戶之任何資料庫的VIEW DATABASE STATE許可權。 |
##MS_ServerPerformanceStateReader## | ##MS_ServerPerformanceStateReader##固定伺服器角色的成員可以讀取所有動態管理檢視, (VIEW SERVER PERFORMANCE STATE所涵蓋的 DMV) 和函式,並且分別具有此角色成員具有使用者帳戶之任何資料庫的VIEW DATABASE PERFORMANCE STATE許可權。 這是 ##MS_ServerStateReader## 伺服器角色可存取的子集,可協助遵守 最低許可權原則。 |
##MS_ServerSecurityStateReader## | ##MS_ServerSecurityStateReader##固定伺服器角色的成員可以讀取所有動態管理檢視, (VIEW SERVER SECURITY STATE所涵蓋的 DMV) 和函式,並分別具有此角色成員具有使用者帳戶之任何資料庫的VIEW DATABASE SECURITY STATE許可權。 這是 ##MS_ServerStateReader## 伺服器角色可存取的一小部分,有助於遵守 最低許可權原則。 |
##MS_DefinitionReader## | ##MS_DefinitionReader##固定伺服器角色的成員可以讀取VIEW ANY DEFINITION所涵蓋的所有目錄檢視,並且分別具有此角色成員具有使用者帳戶之任何資料庫的VIEW DEFINITION許可權。 |
##MS_PerformanceDefinitionReader## | ##MS_PerformanceDefinitionReader##固定伺服器角色的成員可以讀取VIEW ANY PERFORMANCE DEFINITION所涵蓋的所有目錄檢視,並分別具有此角色成員具有使用者帳戶之任何資料庫的VIEW PERFORMANCE DEFINITION許可權。 這是 ##MS_DefinitionReader## 伺服器角色可以存取的子集。 |
##MS_SecurityDefinitionReader## | 固定伺服器角色 ##MS_SecurityDefinitionReader## 的成員,可讀取由 [檢視任何安全性定義] 所涵蓋的所有目錄檢視,並在資料庫上個別具有 [檢視安全性定義] 權限,其中該角色的成員會具有使用者帳戶。 這是 ##MS_DefinitionReader## 伺服器角色可存取的一小部分,可協助遵守 最低許可權原則。 |
固定伺服器角色的權限
每個固定伺服器角色都擁有指派給它的特定權限。
SQL Server 2022 中新固定伺服器角色的許可權
下表顯示指派給伺服器層級角色的權限。 只要使用者可以連線到個別資料庫,它也會顯示繼承的資料庫層級許可權。
固定伺服器層級角色 | 伺服器層級權限 | 資料庫層級許可權 |
---|---|---|
##MS_DatabaseConnector## | CONNECT ANY DATABASE | CONNECT |
##MS_LoginManager## | CREATE LOGIN ALTER ANY LOGIN |
N/A |
##MS_DatabaseManager## | CREATE ANY DATABASE ALTER ANY DATABASE |
ALTER |
##MS_ServerStateManager## | ALTER SERVER STATE VIEW SERVER STATE 檢視伺服器效能狀態 檢視伺服器安全性狀態 |
VIEW DATABASE STATE 檢視資料庫效能狀態 檢視資料庫安全性狀態 |
##MS_ServerStateReader## | VIEW SERVER STATE 檢視伺服器效能狀態 檢視伺服器安全性狀態 |
VIEW DATABASE STATE 檢視資料庫效能狀態 檢視資料庫安全性狀態 |
##MS_ServerPerformanceStateReader## | 檢視伺服器效能狀態 | 檢視資料庫效能狀態 |
##MS_ServerSecurityStateReader## | 檢視伺服器安全性狀態 | 檢視資料庫安全性狀態 |
##MS_DefinitionReader## | VIEW ANY DATABASE VIEW ANY DEFINITION 檢視任何效能定義 檢視任何安全性定義 |
VIEW DEFINITION 檢視效能定義 檢視安全性定義 |
##MS_PerformanceDefinitionReader## | 檢視任何效能定義 | 檢視效能定義 |
##MS_SecurityDefinitionReader## | 檢視任何安全性定義 | 檢視安全性定義 |
SQL Server 2019 和更早版本的伺服器角色許可權
下圖顯示指派給舊版伺服器角色的許可權, (SQL Server 2019 和舊版) 。
重要
CONTROL SERVER 權限與 系統管理員 固定伺服器角色類似但不完全相同。 權限不代表角色成員資格,角色成員資格也不會授與權限。 (例如 ,CONTROL SERVER 不表示 sysadmin 固定伺服器角色的成員資格。) 不過,有時可以在角色與對等許可權之間模擬。 大部分 DBCC 命令與許多系統程序都需要系統管理員固定伺服器角色的成員資格。
伺服器層級權限
只有伺服器層級權限可加入至使用者定義伺服器角色。 若要列出伺服器層級權限,請執行以下陳述式。 伺服器層級權限為:
SELECT * FROM sys.fn_builtin_permissions('SERVER') ORDER BY permission_name;
如需許可權的詳細資訊,請參閱 Database Engine) 和 sys.fn_builtin_permissions (Transact-SQL) 的許可權 (。
使用伺服器層級角色
下表將說明可用來處理伺服器層級角色的命令、檢視和函數。
功能 | 類型 | Description |
---|---|---|
sp_helpsrvrole (Transact-SQL) | 中繼資料 | 傳回伺服器層級角色的清單。 |
sp_helpsrvrolemember (Transact-SQL) | 中繼資料 | 傳回伺服器層級角色成員的相關資訊。 |
sp_srvrolepermission (Transact-SQL) | 中繼資料 | 顯示伺服器層級角色的權限。 |
IS_SRVROLEMEMBER (Transact-SQL) | 中繼資料 | 指出SQL Server登入是否為指定伺服器層級角色的成員。 |
sys.server_role_members (Transact-SQL) | 中繼資料 | 針對每個伺服器層級角色的每個成員,各傳回一個資料列。 |
CREATE SERVER ROLE (Transact-SQL) | Command | 建立使用者定義伺服器角色。 |
ALTER SERVER ROLE (Transact-SQL) | Command | 變更伺服器角色的成員資格或變更使用者定義伺服器角色的名稱。 |
DROP SERVER ROLE (Transact-SQL) | Command | 移除使用者定義伺服器角色。 |
sp_addsrvrolemember (Transact-SQL) | Command | 加入一個登入,做為伺服器層級角色的成員。 已被取代。 請改用 ALTER SERVER ROLE 。 |
sp_dropsrvrolemember (Transact-SQL) | Command | 從伺服器層級角色中移除SQL Server登入或 Windows 使用者或群組。 已被取代。 請改用 ALTER SERVER ROLE 。 |