6.3 服务器角色
6.3.1 固定服务器角色
为便于管理服务器上的权限,SQL Server 提供了若干“角色”,这些角色是用于分组其他主体(SQL Server 登录名、Windows 帐户和 Windows 组)的安全主体。“角色”类似于 Microsoft Windows 操作系统中的“组”。
SQL Server 提供了九种固定服务器角色。 无法更改授予固定服务器角色的权限。
(1) sysadmin
此角色的成员可以在服务器中执行任何活动。
(2) serveradmin
此角色的成员可以更改服务器范围内的配置选项并关闭服务器。
(3) securityadmin
此角色的成员可以管理登录名及其属性,包括 GRANT、DENY 和 REVOKE 服务器级权限。此角色还可以 GRANT、DENY 和 REVOKE 数据库级权限(如果他们具有数据库的访问权限)。 此外,还可以重置 SQL Server 登录名的密码。
(4) processadmin
此角色的成员可以终止在 SQL Server 实例中运行的进程。
(5) setupadmin
此角色的成员可以使用 Transact-SQL 语句添加和删除链接服务器。 (在使用 Management Studio 时需要 sysadmin 成员资格。)
(6) bulkadmin
此角色的成员可以运行 BULK INSERT 语句。
(7) diskadmin
此角色用于管理磁盘文件。
(8) dbcreator
此角色的成员可以创建、更改、删除和还原任何数据库。
(9) public
每个 SQL Server 登录名均属于 public 服务器角色。public 的实现方式与其他角色不同。 但是,可以从 public 授予、拒绝或撤销权限。
如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,该用户将继承授予该对象的 public 角色的权限。当您希望该对象对所有用户可用时,只需对任何对象分配 public 权限即可。
不能更改 public 中的成员关系。
可以使用 sys.fn_builtin_permissions 系统函数列出服务器级别的权限。
SELECT * FROM sys.fn_builtin_permissions(‘SERVER‘) ORDER BY permission_name; |
可以通过以下 T-SQL 语句查询当前角色的成员身份(结果中不显示 public 角色)。
SELECT SRM.role_principal_id, SP.name AS Role_Name, SRM.member_principal_id, SP2.name AS Member_Name FROM sys.server_role_members AS SRM JOIN sys.server_principals AS SP ON SRM.Role_principal_id = SP.principal_id JOIN sys.server_principals AS SP2 ON SRM.member_principal_id = SP2.principal_id ORDER BY SP.name, SP2.name |
6.3.2 用户定义的服务器角色
SQL Server 2012 及后续版本可以创建用户定义的服务器角色,并将服务器级权限添加到用户定义的服务器角色。
用户定义的服务器角色可以更改名称或者删除。要求在服务器上具有 ALTER ANY SERVER ROLE 权限才能更改用户定义的服务器角色的名称。
T-SQL 语法示例如下:
CREATE SERVER ROLE CusRole1; ALTER SERVER ROLE CusRole1 WITH NAME = CusRoleNewName; |
6.3.3 添加或删除成员
可以将服务器级主体(SQL Server 登录名、Windows 帐户和 Windows 组)添加到服务器级角色。 固定服务器角色的每个成员都可以将其他登录名添加到该同一角色。用户定义的服务器角色的成员则无法将其他服务器主体添加到角色。
若要为固定服务器角色添加成员,则必须是该固定服务器角色的成员,或者是 sysadmin 固定服务器角色的成员。CONTROL SERVER 和 ALTER ANY SERVER ROLE 权限不足以为固定服务器角色执行 ALTER SERVER ROLE,并且不能为固定服务器角色授予 ALTER 权限。
与固定服务器角色不同,用户定义的服务器角色的成员本身并不具备为该同一角色添加成员的权限。若要为用户定义的服务器角色添加成员,则必须是 sysadmin 固定服务器角色的成员,或者具有 CONTROL SERVER 或 ALTER ANY SERVER ROLE 权限。 否则,就必须具有该角色的 ALTER 权限。
在创建登录名时,可以同时为用户添加或删除服务器角色。
在 SSMS 中展开“安全性”、“服务器角色”,编辑某个服务器角色的属性。通过单击“添加”按钮,可以添加添加登录名或服务器角色;单击“删除”按钮则将当前选中的成员从该角色中移除。
T-SQL 语法示例如下:
ALTER SERVER ROLE serveradmin ADD MEMBER [SQLSVR2014\LocalUser1] ; ALTER SERVER ROLE diskadmin ADD MEMBER SqlUser1 ; ALTER SERVER ROLE serveradmin DROP MEMBER [SQLSVR2014\LocalUser1] ; ALTER SERVER ROLE diskadmin DROP MEMBER SqlUser1 ; |
提示:
不推荐使用 sp_addsrvrolemember 和 sp_dropsrvrolemember 存储过程。