SQL Server角色成员身份和权限简介

数据库 SQL Server
SQL Server中有很多权限,可以把这些权限组合或单独赋给各个角色,从而使不同角色的用户的权限不同。本文主要介绍了SQL Server数据库总的角色和权限问题,希望会对读者有所帮助。

为便于管理数据库中的权限,SQL Server 提供了若干“角色”,这些角色是用于分组其他主体的安全主体。它们类似于 Microsoft Windows 操作系统中的组。数据库级角色的权限作用域为数据库范围。SQL Server 中有两种类型的数据库级角色:数据库中预定义的“固定数据库角色”和您可以创建的“灵活数据库角色”。

固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。db_owner 和 db_securityadmin 数据库角色的成员可以管理固定数据库角色成员身份。但是,只有 db_owner 数据库角色的成员能够向db_owner 固定数据库角色中添加成员。msdb 数据库中还有一些特殊用途的固定数据库角色。您可以向数据库级角色中添加任何数据库帐户和其他SQL Server 角色。固定数据库角色的每个成员都可向同一个角色添加其他登录名。

数据库级别的角色名称及说明

db_owner 固定数据库角色的成员可以执行数据库的所有配置和维护活动,还可以删除数据库。

db_securityadmin 固定数据库角色的成员可以修改角色成员身份和管理权限。向此角色中添加主体可能会导致意外的权限升级。

db_accessadmin 固定数据库角色的成员可以为 Windows 登录名、Windows 组和 SQL Server 登录名添加或删除数据库访问权限。

db_backupoperator 固定数据库角色的成员可以备份数据库。

db_ddladmin 固定数据库角色的成员可以在数据库中运行任何数据定义语言 (DDL) 命令。

db_datawriter 固定数据库角色的成员可以在所有用户表中添加、删除或更改数据。

db_datareader 固定数据库角色的成员可以从所有用户表中读取所有数据。

db_denydatawriter 固定数据库角色的成员不能添加、修改或删除数据库内用户表中的任何数据。

db_denydatareader 固定数据库角色的成员不能读取数据库内用户表中的任何数据。

有关数据库级固定角色权限的特定信息,请参阅固定数据库角色的权限(数据库引擎)。

msdb 角色名称及说明

db_ssisadmin

db_ssisoperator 

db_ssisltduser 

这些数据库角色的成员可以管理和使用SSIS。从早期版本升级的 SQL Server 实例可能包含使用 Data Transformation Services (DTS)(而不是 SSIS)命名的旧版本角色。有关详细信息,请参阅使用 Integration Services 角色。

dc_admin

dc_operator

dc_proxy

这些数据库角色的成员可以管理和使用数据收集器。有关详细信息,请参阅数据收集器的安全性。

PolicyAdministratorRole

db_ PolicyAdministratorRole  数据库角色的成员可以对基于策略的管理策略和条件执行所有配置和维护活动。有关详细信息,请参阅使用基于策略的管理来管理服务器。

ServerGroupAdministratorRole

ServerGroupReaderRole

这些数据库角色的成员可以管理和使用注册的服务器组。有关详细信息,请参阅创建服务器组。

重要提示:

db_ssisadmin 角色和 dc_admin 角色的成员也许可以将其权限提升到sysadmin。之所以会发生此权限提升,是因为这些角色可以修改Integration Services 包,而 SQL Server 可以使用SQL Server 代理的sysadmin 安全上下文来执行Integration Services 包。若要防止在运行维护计划、数据收集组和其他 Integration Services 包时出现此权限提升,请将运行包的 SQL Server 代理作业配置为使用拥有有限权限的代理帐户,或只将 sysadmin 成员添加到 db_ssisadmin 和dc_admin 角色。

使用服务器级角色

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)   →  命令   →  在当前数据库中创建新的数据库角色。

ALTER ROLE (Transact-SQL)   →  命令   →  更改数据库角色的名称。

DROP ROLE (Transact-SQL)    →  命令从数据库中删除角色。

sp_addrole (Transact-SQL)   →  命令   →  在当前数据库中创建新的数据库角色。

sp_droprole (Transact-SQL)   →  命令   →  从当前数据库中删除数据库角色。

sp_addrolemember (Transact-SQL)   →  命令   →  为当前数据库中的数据库角色添加数据库用户、数据库角色、Windows 登录名或 Windows 组。

sp_droprolemember (Transact-SQL)   →  命令   →  从当前数据库的 SQL Server 角色中删除安全帐户。

public 数据库角色

每个数据库用户都属于public 数据库角色。如果未向某个用户授予或拒绝对安全对象的特定权限时,该用户将继承授予该对象的public 角色的权限。

本文就介绍到这里,由于本人水平有限,若文中有描述不当的地方,欢迎各位批评指正。谢谢了。

【编辑推荐】

  1. 用FOR XML PATH将查询结果以XML输出
  2. SQL经典:T-SQL中的透视和逆透视解析
  3. 浅述SQL Server的Replication技术创建技巧
  4. 使用SQL Trace来实现SQL Server的跟踪操作
  5. CTE和WITH AS短语结合使用提高SQL查询性能
责任编辑:赵鹏 来源: 网易博客
相关推荐

2010-10-20 15:53:37

SQL Server服

2022-08-30 18:35:53

SQL ServerWindows身份验证

2010-10-21 16:33:55

sql server系

2010-09-16 15:03:10

SQL Server临

2010-09-27 14:36:24

SQL Server用

2010-06-17 16:59:51

SQL Server身

2010-10-20 16:17:17

SQL Server角

2010-10-28 11:17:29

Oracle系统权限

2010-10-22 10:44:16

SQL Server权

2010-09-27 15:10:12

SQL Server

2010-07-07 11:20:02

SQL Server聚

2023-10-10 00:09:14

2010-10-21 16:54:59

SQL Server数

2010-09-27 16:38:19

Sql Server日

2010-07-05 10:37:00

2010-07-09 12:39:28

SQL Server超

2011-06-21 10:01:16

2010-10-22 14:59:22

2010-10-20 16:12:40

SQL Server角

2010-09-27 14:09:17

SQL Server服
点赞
收藏

51CTO技术栈公众号