SqlServer中服务器角色和数据库角色权限详解

数据库角色的成员可以分为如下几类:

**1、Windows用户组或用户账户 **

2、SQL Server登录

3、其他角色

SQL Server的安全体系结构中包括了几个含有特定隐含权限的角色。除了数据库拥有者创建的角色之外,还有两类预定义的角色。这些可以创建的角色可以分为如下几类:

1、固定服务器

2、固定数据库

3、用户自定义

4、固定服务器

由于固定服务器是在服务器层次上定义的,因此它们位于从属于数据库服务器的数据库外面。下表列出了所有现有的固定服务器角色。

固定服务器角色

说 明

| sysadmin | 执行SQL Server中的任何动作 |
| serveradmin | 配置服务器设置 |
| setupadmin | 安装复制和管理扩展过程 |
| securityadmin | 管理登录和CREATE DATABASE的权限以及阅读审计 |
| processadmin | 管理SQL Server进程 |
| dbcreator | 创建和修改数据库 |
| diskadmin | 管理磁盘文件 |

下面两个系统过程用来添加或删除固定服务器角色成员:

sp_addsrvrolemember

sp_dropsrvrolemember

注意:您不能添加、修改或删除固定服务器角色。另外,只有固定服务器角色的成员才能执行上述两个系统过程来从角色中添加或删除登录账户。
sa登录

sa登录是系统管理员的登录。在以前的SQL Server版本中不存在角色,sa登录具有所有可能的关于系统管理工作的权限。在SQL Server 2005中,sa登录保持了向后兼容性。sa登录永远是固定服务器角色syadmin中的成员,并且不能从该角色中删除。

注意:只有当没有其他方法登录到SQL Server系统中时,再使用sa登录。

固定服务器角色及其权限

在某个SQL Server系统中,每个固定服务器角色都有其隐含的权限。使用系统过程sp_srvrolepermission可以浏览每个固定服务器角色的权限。该系统过程的语法形式为:

sp_srvrolepermission[[@srvrolename =] 'role']

如果没有指定role的值,那么所有的固定服务器角色的权限都将显示出来。下面的部分将讨论每个固定服务器角色的权限。
1. sysadmin

固定服务器角色sysadmin的成员被赋予了SQL Server系统中所有可能的权限。例如,只有这个角色中的成员(或一个被这个角色中的成员赋予了CREATE DATABASE权限的用户)才能够创建数据库。

固定服务器角色和sa登录之间有着特殊的关系。sa登录一直都是固定服务器角色中的成员,并且不能从该角色中删除。
2. serveradmin

固定服务器角色serveradmin的成员可以执行如下的动作:

向该服务器角色中添加其他登录

运行dbcc pintable命令(从而使表常驻于主内存中)

运行系统过程sp_configure(以显示或更改系统选项)

运行reconfigure选项(以更新系统过程sp_configure所做的所有改动)

使用shutdown命令关掉数据库服务器

运行系统过程sp_tableoption为用户自定义表设置选项的值
3. setupadmin

固定服务器角色setupadmin中的成员可以执行如下的动作:

向该服务器角色中添加其他登录

添加、删除或配置链接的服务器

执行一些系统过程,如sp_serveroption
4. securityadmin

固定服务器角色securitypadmin中的成员可以执行关于服务器访问和安全的所有动作。这些成员可以进行如下的系统动作:

向该服务器角色中添加其他登录

读取SQL Server的错误日志

运 行如下的系统过程:如sp_addlinkedsrvlogin、sp_addlogin、sp_defaultdb、 sp_defaultlanguage、sp_denylogin、sp_droplinkedsrvlogin、sp_droplogin、 sp_grantlogin、sp_helplogins、sp_remoteoption和sp_revokelogin(所有这些系统过程都与系统安 全相关。)
5. processadmin

固定服务器角色processadmin中的成员用来管理SQL Server进程,如中止用户正在运行的查询。这些成员可以进行如下的动作:

向该服务器角色中添加其他登录

执行KILL命令(以取消用户进程)
6. dbcreator

固定服务器角色dbcreator中的成员用来管理与数据库创建和修改有关的所有动作。这些成员可以进行如下的动作:

向该服务器角色中添加其他登录

运行CREATE DATABASE和ALTER DATABASE语句

使用系统过程sp_renamedb来修改数据库的名称
7. diskadmin

固定服务器角色diskadmin的成员可以进行如下与用来存储数据库对象的文件和文件组有关的动作:

向该服务器角色中添加其他登录

运行如下系统过程:sp_ddumpdevice和sp_dropdevice。

运行DISK INIT语句

固定数据库角色

固定数据库角色在数据库层上进行定义,因此它们存在于属于数据库服务器的每个数据库中。下表列出了所有的固定数据库角色。

固定数据库角色
说 明

  1. db_owner 可以执行数据库中技术所有动作的用户
  2. db_accessadmin 可以添加、删除用户的用户
  3. db_datareader 可以查看所有数据库中用户表内数据的用户
  4. db_datawriter 可以添加、修改或删除所有数据库中用户表内数据的用户
  5. db_ddladmin 可以在数据库中执行所有DDL操作的用户
  6. db_securityadmin 可以管理数据库中与安全权限有关所有动作的用户
  7. db_backoperator 可以备份数据库的用户(并可以发布DBCC和CHECKPOINT语句,这两个语句一般在备份前都会被执行)
  8. db_denydatareader 不能看到数据库中任何数据的用户
  9. db_denydatawriter 不能改变数据库中任何数据的用户

除了上表中列出的固定数据库角色之外,还有一种特殊的固定数据库角色,名为public,这里将首先介绍这一角色。

public角色

public角色是一种特殊的固定数据库角色,<u style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">数据库的每个合法用户都属于该角色</u>。它为数据库中的用户提供了所有默认权限。这样就提供了一种机制,即给予那些没有适当权限的所有用户以一定的(通常是有限的)权限。public角色为数据库中的所有用户都保留了默认的权限,因此是不能被删除的。

一般情况下,public角色允许用户进行如下的操作:

使用某些系统过程查看并显示master数据库中的信息

执行一些不需要一些权限的语句(例如PRINT)

固定数据库角色及其权限

在数据库中,每个固定数据库角色都有其特定的权限。这就意味着对于某个数据库来说,固定数据库角色的成员的权限是有限的。使用系统过程sp_dbfixedrolepermission就可以查看每个固定数据库角色的权限。该系统过程的语法为:

sp_db.xedrolepermission [[@rolename =] 'role']

如果没有指定role的值,那么所有固定数据库角色的权限都可以显示出来。下面的几节将讨论每个固定数据库角色的权限。

  1. db_owner

固定数据库角色db_owner的成员可以在特定的数据库中进行如下的动作:

向其他固定数据库角色中添加成员,或从其中删除成员

运行所有的DDL语句

运行BACKUP DATABASE和BACKUP LOG语句

使用CHECKPOINT语句显式地启动检查点进程

运行下列dbcc命令:dbcc checkalloc、dbcc checkcatalog、dbcc checkdb、dbcc updateusage

授予、取消或剥夺每一个数据库对象上的下列权限:SELECT、INSERT、UPDATE、DELETE和REFERENCES

使 用下列系统过程向数据库中添加用户或角色:sp_addapprole、sp_addrole、sp_addrolemember、 sp_approlepassword、sp_changeobjectowner、sp_dropapprole、sp_droprole、 sp_droprolemember、sp_dropuser、sp_grantdbaccess

使用系统过程sp_rename为任何数据库对象重新命名
2. db_accessadmin

固定数据库角色db_accessadmin的成员可以执行与数据库访问有关的所有动作。这些角色可以在具体的数据库中执行下列操作:

运行下列系统过程:sp_addalias、sp_dropalias、sp_dropuser、sp_grantdbacess、sp_revokedbaccess

为Windows用户账户、Windows组和SQL Server登录添加或删除访问

  1. dbdatareader

固定数据库角色dbdatareader的成员对数据库中的数据库对象(表或视图)具有SELECT权限。然而,这些成员不能把这个权限授予其他任何用户或角色。(这个限制对REVOKE语句来说同样成立。)
4. dbdatawriter

固定数据库角色dbdatawriter的成员对数据库中的数据库对象(表或视图)具有INSERT、UPDATE和DELETE权限。然而,这些成员不能把这个权限授予其他任何用户或角色。(这个限制对REVOKE语句来说也同样成立。)

  1. db_ddladmin

固定数据库角色db_ddladmin的成员可以进行如下的动作:

运行所有DDL语句

对任何表上授予REFERENCESE权限

使用系统过程sp_procoption和sp_recompile来修改任何存储过程的结构

使用系统过程sp_rename为任何数据库对象重命名

使用系统过程sp_tableoption和sp_changeobjectowner分别修改表的选项和任何数据库对象的拥有者
6. db_securityadmin

固定数据库角色db_securityadmin的成员可以管理数据库中的安全。这些成员可以进行如下的动作:

运行与安全有关的所有Transact-SQL语句(GRANT、DENY和REVOKE)

运 行以下系统过程:sp_addapprole、sp_addrole、sp_addrolemember、sp_approlepassword、 sp_changeobjectowner、sp_dropapprole、sp_droprole、sp_droprolemember
7. db_backupoperator

固定数据库角色db_backupoperator的成员可以管理数据库备份的过程。这些成员可以进行如下动作:

运行BACKUP DATABASE和BACKUP LOG语句

用CHECKPOINT语句显式地启动检查点进程

运行如下dbcc命令:dbcc checkalloc、dbcc checkcatalog、dbcc checkdb、dbcc updateusage
8. db_denydatareader和db_denydatawriter

顾名思义,固定数据库角色db_denydatareader的成员对数据库中的数据库对象(表或视图)没有SELECT权限。如果数据库中含有敏感数据并且其他用户不能读取这些数据,那么就可以使用这个角色。

固定数据库角色db_denydatawriter的成员对数据库中的任何数据库对象(表或视图)没有INSERT、UPDATE和DELETE权限。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355