博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQLServer中服务器角色和数据库角色权限详解
阅读量:4969 次
发布时间:2019-06-12

本文共 4630 字,大约阅读时间需要 15 分钟。

角色

当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role)。指定了可以访问相同数据库对象的一组数据库用户。
的成员可以分为如下几类:
Windows用户组或用户账户
Server登录
其他角色
Server的安全体系结构中包括了几个含有特定隐含的角色。除了数据库拥有者创建的角色之外,还有两类预定义的角色。这些可以创建的角色可以分为如下几类:
固定服务器
固定数据库
用户自定义

固定服务器

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

固定

说    明

sysadmin

执行 Server中的任何动作

serveradmin

配置服务器设置

setupadmin

安装复制和管理扩展过程

securityadmin

管理登录和CREATE DATABASE的以及阅读审计

processadmin

管理 Server进程

dbcreator

创建和修改数据库

diskadmin

管理磁盘文件

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

sa登录

sa登录是系统管理员的登录。在以前的 Server版本中不存在角色,sa登录具有所有可能的关于系统管理工作的。在 Server 2005中,sa登录保持了向后兼容性。sa登录永远是固定syadmin中的成员,并且不能从该角色中删除。
注意:只有当没有其他方法登录到 Server系统中时,再使用sa登录。

固定及其

在某个 Server系统中,每个固定都有其隐含的。使用系统过程sp_srvrolepermission可以浏览每个固定的。该系统过程的语法形式为:
sp_srvrolepermission[[@srvrolename =] 'role']
如果没有指定role的值,那么所有的固定的都将显示出来。下面的部分将讨论每个固定的。

1. sysadmin

固定sysadmin的成员被赋予了 Server系统中所有可能的。例如,只有这个角色中的成员(或一个被这个角色中的成员赋予了CREATE DATABASE的用户)才能够创建数据库。
固定和sa登录之间有着特殊的关系。sa登录一直都是固定中的成员,并且不能从该角色中删除。

2. serveradmin

固定serveradmin的成员可以执行如下的动作:
向该中添加其他登录
运行dbcc pin命令(从而使表常驻于主中)
运行系统过程sp_configure(以显示或更改系统选项)
运行reconfigure选项(以更新系统过程sp_configure所做的所有改动)
使用shutdown命令关掉数据库服务器
运行系统过程sp_option为用户自定义表设置选项的值

3. setupadmin

固定setupadmin中的成员可以执行如下的动作:
向该中添加其他登录
添加、删除或配置链接的服务器
执行一些系统过程,如sp_serveroption

4. securityadmin

固定securitypadmin中的成员可以执行关于服务器访问和安全的所有动作。这些成员可以进行如下的系统动作:
向该中添加其他登录
读取 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中的成员用来管理 Server进程,如中止用户正在运行的查询。这些成员可以进行如下的动作:
向该中添加其他登录
执行KILL命令(以取消用户进程)

6. dbcreator

固定dbcreator中的成员用来管理与数据库创建和修改有关的所有动作。这些成员可以进行如下的动作:
向该中添加其他登录
运行CREATE DATABASE和ALTER DATABASE
使用系统过程sp_renamedb来修改数据库的名称

7. diskadmin

固定diskadmin的成员可以进行如下与用来存储数据库对象的文件和文件组有关的动作:
向该中添加其他登录
运行如下系统过程:sp_ddumpdevice和sp_dropdevice。
运行DISK INIT

固定

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

固定

说    明

db_owner

可以执行数据库中技术所有动作的用户

db_accessadmin

可以添加、删除用户的用户

db_datareader

可以查看所有数据库中用户表内数据的用户

db_datawriter

可以添加、修改或删除所有数据库中用户表内数据的用户

db_ddladmin

可以在数据库中执行所有DDL操作的用户

db_securityadmin

可以管理数据库中与安全有关所有动作的用户

db_backoperator

可以备份数据库的用户(并可以发布DBCC和CHECKPOINT,这两个一般在备份前都会被执行)

db_denydatareader

不能看到数据库中任何数据的用户

db_denydatawriter

不能改变数据库中任何数据的用户

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

public角色

public角色是一种特殊的固定,数据库的每个合法用户都属于该角色。它为数据库中的用户提供了所有默认。这样就提供了一种机制,即给予那些没有适当的所有用户以一定的(通常是有限的)。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组和 Server登录添加或删除访问

3. dbdatareader

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

4. dbdatawriter

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

5. db_ddladmin

固定db_ddladmin的成员可以进行如下的动作:
运行所有DDL
对任何表上授予REFERENCESE
使用系统过程sp_procoption和sp_recompile来修改任何存储过程的结构
使用系统过程sp_rename为任何数据库对象重命名
使用系统过程sp_option和sp_changeobjectowner分别修改表的选项和任何数据库对象的拥有者

6. db_securityadmin

固定db_securityadmin的成员可以管理数据库中的安全。这些成员可以进行如下的动作:
运行与安全有关的所有Transact-(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。

转载于:https://www.cnblogs.com/kscnchina/archive/2012/12/11/2813728.html

你可能感兴趣的文章
《Java从入门到放弃》JavaSE入门篇:面向对象语法二(入门版)
查看>>
微信公众平台自定义菜单及高级接口PHP SDK
查看>>
CentOs yum安装SVN服务端
查看>>
flask基础之session原理详解(十)
查看>>
SpringBoot 与 ajax
查看>>
46家公司的笔试题,拿去练练手吧
查看>>
windows7系统下安装mysql-8.0.13-winx64操作步骤
查看>>
Mysql中的事务
查看>>
Loading加载动画
查看>>
python--Wrapper
查看>>
最短路计数——Dijkstra
查看>>
js中的数据类型检测
查看>>
二级菜单
查看>>
Sketch webView方式插件开发技术总结
查看>>
vue2.0+node.js+MongoDB全栈打造商城系统1-导学
查看>>
软件测试第三次作业
查看>>
DataTable 中Distinct操作
查看>>
Flutter实战视频-移动电商-32.列表页_小类高亮交互效果制作
查看>>
面试必须要知道的SQL语法,语句
查看>>
js排序
查看>>