SQL Server角色成員身份和權(quán)限簡介
為便于管理數(shù)據(jù)庫中的權(quán)限,SQL Server 提供了若干“角色”,這些角色是用于分組其他主體的安全主體。它們類似于 Microsoft Windows 操作系統(tǒng)中的組。數(shù)據(jù)庫級角色的權(quán)限作用域?yàn)閿?shù)據(jù)庫范圍。SQL Server 中有兩種類型的數(shù)據(jù)庫級角色:數(shù)據(jù)庫中預(yù)定義的“固定數(shù)據(jù)庫角色”和您可以創(chuàng)建的“靈活數(shù)據(jù)庫角色”。
固定數(shù)據(jù)庫角色是在數(shù)據(jù)庫級別定義的,并且存在于每個(gè)數(shù)據(jù)庫中。db_owner 和 db_securityadmin 數(shù)據(jù)庫角色的成員可以管理固定數(shù)據(jù)庫角色成員身份。但是,只有 db_owner 數(shù)據(jù)庫角色的成員能夠向db_owner 固定數(shù)據(jù)庫角色中添加成員。msdb 數(shù)據(jù)庫中還有一些特殊用途的固定數(shù)據(jù)庫角色。您可以向數(shù)據(jù)庫級角色中添加任何數(shù)據(jù)庫帳戶和其他SQL Server 角色。固定數(shù)據(jù)庫角色的每個(gè)成員都可向同一個(gè)角色添加其他登錄名。
數(shù)據(jù)庫級別的角色名稱及說明
db_owner 固定數(shù)據(jù)庫角色的成員可以執(zhí)行數(shù)據(jù)庫的所有配置和維護(hù)活動(dòng),還可以刪除數(shù)據(jù)庫。
db_securityadmin 固定數(shù)據(jù)庫角色的成員可以修改角色成員身份和管理權(quán)限。向此角色中添加主體可能會(huì)導(dǎo)致意外的權(quán)限升級。
db_accessadmin 固定數(shù)據(jù)庫角色的成員可以為 Windows 登錄名、Windows 組和 SQL Server 登錄名添加或刪除數(shù)據(jù)庫訪問權(quán)限。
db_backupoperator 固定數(shù)據(jù)庫角色的成員可以備份數(shù)據(jù)庫。
db_ddladmin 固定數(shù)據(jù)庫角色的成員可以在數(shù)據(jù)庫中運(yùn)行任何數(shù)據(jù)定義語言 (DDL) 命令。
db_datawriter 固定數(shù)據(jù)庫角色的成員可以在所有用戶表中添加、刪除或更改數(shù)據(jù)。
db_datareader 固定數(shù)據(jù)庫角色的成員可以從所有用戶表中讀取所有數(shù)據(jù)。
db_denydatawriter 固定數(shù)據(jù)庫角色的成員不能添加、修改或刪除數(shù)據(jù)庫內(nèi)用戶表中的任何數(shù)據(jù)。
db_denydatareader 固定數(shù)據(jù)庫角色的成員不能讀取數(shù)據(jù)庫內(nèi)用戶表中的任何數(shù)據(jù)。
有關(guān)數(shù)據(jù)庫級固定角色權(quán)限的特定信息,請參閱固定數(shù)據(jù)庫角色的權(quán)限(數(shù)據(jù)庫引擎)。
msdb 角色名稱及說明
db_ssisadmin
db_ssisoperator
db_ssisltduser
這些數(shù)據(jù)庫角色的成員可以管理和使用SSIS。從早期版本升級的 SQL Server 實(shí)例可能包含使用 Da
dc_admin
dc_operator
dc_proxy
這些數(shù)據(jù)庫角色的成員可以管理和使用數(shù)據(jù)收集器。有關(guān)詳細(xì)信息,請參閱數(shù)據(jù)收集器的安全性。
PolicyAdministratorRole
db_ PolicyAdministratorRole 數(shù)據(jù)庫角色的成員可以對基于策略的管理策略和條件執(zhí)行所有配置和維護(hù)活動(dòng)。有關(guān)詳細(xì)信息,請參閱使用基于策略的管理來管理服務(wù)器。
ServerGroupAdministratorRole
ServerGroupReaderRole
這些數(shù)據(jù)庫角色的成員可以管理和使用注冊的服務(wù)器組。有關(guān)詳細(xì)信息,請參閱創(chuàng)建服務(wù)器組。
重要提示:
db_ssisadmin 角色和 dc_admin 角色的成員也許可以將其權(quán)限提升到sysadmin。之所以會(huì)發(fā)生此權(quán)限提升,是因?yàn)檫@些角色可以修改Integration Services 包,而 SQL Server 可以使用SQL Server 代理的sysadmin 安全上下文來執(zhí)行Integration Services 包。若要防止在運(yùn)行維護(hù)計(jì)劃、數(shù)據(jù)收集組和其他 Integration Services 包時(shí)出現(xiàn)此權(quán)限提升,請將運(yùn)行包的 SQL Server 代理作業(yè)配置為使用擁有有限權(quán)限的代理帳戶,或只將 sysadmin 成員添加到 db_ssisadmin 和dc_admin 角色。
使用服務(wù)器級角色
sp_helpdbfixedrole (Transact-SQL) → 元數(shù)據(jù) → 返回固定數(shù)據(jù)庫角色的列表。
sp_dbfixedrolepermission (Transact-SQL) → 元數(shù)據(jù) → 顯示固定數(shù)據(jù)庫角色的權(quán)限。
sp_helprole (Transact-SQL) → 元數(shù)據(jù) → 返回當(dāng)前數(shù)據(jù)庫中有關(guān)角色的信息。
sp_helprolemember (Transact-SQL) → 元數(shù)據(jù) → 返回有關(guān)當(dāng)前數(shù)據(jù)庫中某個(gè)角色的成員的信息。
sys.database_role_members (Transact-SQL) → 元數(shù)據(jù) → 為每個(gè)數(shù)據(jù)庫角色的每個(gè)成員返回一行。
IS_MEMBER (Transact-SQL) → 元數(shù)據(jù) → 指示當(dāng)前用戶是否為指定 Microsoft Windows 組或 Microsoft SQL Server 數(shù)據(jù)庫角色的成員。
CREATE ROLE (Transact-SQL) → 命令 → 在當(dāng)前數(shù)據(jù)庫中創(chuàng)建新的數(shù)據(jù)庫角色。
ALTER ROLE (Transact-SQL) → 命令 → 更改數(shù)據(jù)庫角色的名稱。
DROP ROLE (Transact-SQL) → 命令從數(shù)據(jù)庫中刪除角色。
sp_addrole (Transact-SQL) → 命令 → 在當(dāng)前數(shù)據(jù)庫中創(chuàng)建新的數(shù)據(jù)庫角色。
sp_droprole (Transact-SQL) → 命令 → 從當(dāng)前數(shù)據(jù)庫中刪除數(shù)據(jù)庫角色。
sp_addrolemember (Transact-SQL) → 命令 → 為當(dāng)前數(shù)據(jù)庫中的數(shù)據(jù)庫角色添加數(shù)據(jù)庫用戶、數(shù)據(jù)庫角色、Windows 登錄名或 Windows 組。
sp_droprolemember (Transact-SQL) → 命令 → 從當(dāng)前數(shù)據(jù)庫的 SQL Server 角色中刪除安全帳戶。
public 數(shù)據(jù)庫角色
每個(gè)數(shù)據(jù)庫用戶都屬于public 數(shù)據(jù)庫角色。如果未向某個(gè)用戶授予或拒絕對安全對象的特定權(quán)限時(shí),該用戶將繼承授予該對象的public 角色的權(quán)限。
本文就介紹到這里,由于本人水平有限,若文中有描述不當(dāng)?shù)牡胤?,歡迎各位批評指正。謝謝了。
【編輯推薦】