資料庫層級角色
若要輕鬆地管理資料庫中的許可權,SQL Server提供數個角色,這些角色是群組其他主體的安全性主體。 角色就像 Microsoft Windows 作業系統中的群組一樣。 資料庫層級角色的權限範圍為整個資料庫。
SQL Server中有兩種類型的資料庫層級角色:資料庫中預先定義的固定資料庫角色,以及您可以建立的彈性資料庫角色。
固定資料庫角色義於資料庫層級,並存在每個資料庫中。 db_owner 資料庫角色的成員可以管理固定的資料庫角色成員資格。 在 msdb 資料庫中,也有一些特殊用途的固定資料庫角色。
您可以將任何資料庫帳戶和其他 SQL Server 角色加入資料庫層級角色中。 固定資料庫角色的每個成員可以對相同的角色加入其他登入。
重要
請勿將彈性資料庫角色當做固定角色的成員來加入。 這樣會產生不必要的權限擴大。
下表顯示固定資料庫層級角色和其功能。 這些角色存在所有資料庫中。
資料庫層級角色名稱 | 描述 |
---|---|
db_owner | db_owner 固定資料庫角色的成員可以在資料庫上執行所有的組態和維護活動,也可以卸除資料庫。 |
db_securityadmin | db_securityadmin 固定資料庫角色的成員可以修改角色成員資格及管理權限。 將主體加入這個角色可能會產生不必要的權限擴大。 |
db_accessadmin | db_accessadmin 固定資料庫角色的成員可以針對 Windows 登入、Windows 群組及 SQL Server 登入加入或移除資料庫的存取權。 |
db_backupoperator | db_backupoperator 固定資料庫角色的成員可以備份資料庫。 |
db_ddladmin | db_ddladmin 固定資料庫角色的成員可在資料庫中執行任何「資料定義語言」(DDL) 的命令。 |
db_datawriter | db_datawriter 固定資料庫角色的成員可以加入、刪除或變更所有使用者資料表中的資料。 |
db_datareader | db_datareader 固定資料庫角色的成員可以從所有使用者資料表讀取所有資料。 |
db_denydatawriter | db_denydatawriter 固定資料庫角色的成員不能加入、修改或刪除資料庫中使用者資料表的任何資料。 |
db_denydatareader | db_denydatareader 固定資料庫角色的成員不能讀取資料庫中使用者資料表的任何資料。 |
msdb 角色
msdb 資料庫含有下表所示的特殊用途角色。
msdb 角色名稱 | 描述 |
---|---|
db_ssisadmin db_ssisoperator db_ssisltduser |
這些資料庫角色的成員可以管理和使用 SSIS。 從舊版升級的 SQL Server 執行個體可能會包含使用 Data Transformation Services (DTS) 而非 SSIS 所命名的舊版角色。 如需詳細資訊,請參閱 Integration Services 角色 (SSIS 服務)。 |
dc_admin dc_operator dc_proxy |
這些資料庫角色的成員可以管理和使用資料收集器。 如需相關資訊,請參閱 Data Collection。 |
PolicyAdministratorRole | db_ PolicyAdministratorRole 資料庫角色的成員可以在以原則為基礎的管理原則和條件上執行所有組態和維護活動。 如需詳細資訊,請參閱 使用原則式管理來管理伺服器。 |
ServerGroupAdministratorRole ServerGroupReaderRole |
這些資料庫角色的成員可以管理和使用已註冊的伺服器群組。 |
dbm_monitor | msdb 在資料庫鏡像監視器中註冊第一個資料庫時,于資料庫中建立。 dbm_monitor 角色沒有任何成員,必須由系統管理員指派使用者給該角色。 |
重要
db_ssisadmin 角色和 dc_admin 角色的成員可以將其權限提高為系統管理員 (sysadmin)。 提高權限是因為這些角色可以修改整合服務封裝,而使用 SQL Server Agent 系統管理員資訊安全內容後,SQL Server 即可執行整合服務封裝。 執行維護計劃、資料收集組和其他 Integration Services 封裝時,若要預防權限提高,請將執行封裝的 SQL Server Agent 作業,設為使用有限權限的 Proxy 帳戶,或只新增系統管理員成員至 db_ssisadmin 和 dc_admin 角色。
使用資料庫層級角色
下表說明用於使用資料庫層級角色的命令、檢視及函數。
功能 | 類型 | Description |
---|---|---|
sp_helpdbfixedrole (Transact-SQL) | 中繼資料 | 傳回固定資料庫角色的清單。 |
sp_dbfixedrolepermission (Transact-SQL) | 中繼資料 | 顯示固定資料庫角色的權限。 |
sp_helprole (Transact-SQL) | 中繼資料 | 傳回目前資料庫中角色的相關資訊。 |
sp_helprolemember (Transact-SQL) | 中繼資料 | 傳回目前資料庫中角色成員的相關資訊。 |
sys.database_role_members (Transact-SQL) | 中繼資料 | 針對每個資料庫角色的每個成員,各傳回一個資料列。 |
IS_MEMBER (Transact-SQL) | 中繼資料 | 指出目前使用者是指定之 Microsoft Windows 群組或 Microsoft SQL Server 資料庫角色的成員。 |
CREATE ROLE (Transact-SQL) | Command | 在目前資料庫中建立新的資料庫角色。 |
ALTER ROLE (Transact-SQL) | Command | 變更資料庫角色的名稱。 |
DROP ROLE (Transact-SQL) | Command | 從資料庫中移除角色。 |
sp_addrole (Transact-SQL) | Command | 在目前資料庫中建立新的資料庫角色。 |
sp_droprole (Transact-SQL) | Command | 從目前資料庫移除資料庫角色。 |
sp_addrolemember (Transact-SQL) | Command | 在目前資料庫的資料庫角色中,加入資料庫使用者、資料庫角色、Windows 登入或 Windows 群組。 |
sp_droprolemember (Transact-SQL) | Command | 從目前資料庫中的 SQL Server 角色移除安全性帳戶。 |
public 資料庫角色
每個資料庫使用者都屬於 public 資料庫角色。 當使用者未授與或拒絕安全物件的特定權限時,該使用者會繼承授與給該物件之 public 的權限。