SQLServer 角与权限管理
安全性是所有数据库管理系统的一个重要特征。理解安全性问题是理解数据库管理系统安全性机制的前提。
1.第一个安全性问题:当用户登录数据库系统时,如何确保只有合法的用户才能登录到系统中?这是一个最基本的安全性问题,也是数据库管理系统提供的基本功能。
在Microsoft SQL Server 2008系统中,通过身份验证模式和主体解决这个问题。
1)身份验证模式
Microsoft SQL Server 2008系统提供了两种身份验证模式:Windows身份验证模式和混合模式。
Windows身份验证模式:
在该模式中,用户通过Windows用户账户连接SQL Server时,使用Windows操作系统中的账户名和密码。
混合模式:
在混合模式中,当客户端连接到服务器时,既可能采取Windows身份验证,也可能采取SQL Server身份验证。
主体是可以请求系统资源的个体或组合过程。例如,数据库用户是一种主体,可以按照自己的权限在数据库中执行操作和使用相应的数据。
2)主体
主体是可以请求系统资源的个体或组合过程。例如,数据库用户是一种主体,可以按照自己的权限在数据库中执行操作和使用相应的数据。
Microsoft SQL Server 2008系统有多种不同的主体,不同主体之间的关系是典型的层次结构关系,位于不同层次上的主体其在系统中影响的范围也不同。位于层次比较高的主体,其作用范围比较大;位于层次比较低的主体,其作用范围比较小。
2.第二个安全性问题:当用户登录到系统中,他可以执行哪些操作、使用哪些对象和资源?
在Microsoft SQL Server 2008系统中,通过安全对象和权限设置来解决这个问题。
3.第三个安全性问题:数据库中的对象由谁所有?如果是由用户所有,那么当用户被删除时,其所拥有的对象怎么办,难道数据库对象可以成为没有所有者的“孤儿”吗?
在Microsoft SQL Server 2008系统中,这个问题是通过用户和架构分离来解决的。
安全机制的5个等级:
客户机安全机制
网络传输的安全机制
实例级别安全机制
数据库级别安全机制
对象级别安全机制
四.角
1.固定服务器角
v固定服务器角是服务器级别的主体,它们的作用范围是整个服务器。
v固定服务器角已经具备了执行指定操作的权限,可以把其他登录名作为成员添加到固定服务器角中,这样该登录名可以继承固定服务器角的权限。
固定服务器角的特点
v在Microsoft SQL Serversqlserver备份表语句系统中,可以把登录名添加到固定服务器角中,使登录名作为固定服务器角的成员继承固定服务器角的权限。
v对于登录名来说,可以选择其是否成为某个固定服务器角的成员
按照从最低级别的角(bulkadmin)到最高级别的角(sysadmin)的顺序进行描述:
Bulkadmin:这个服务器角的成员可以运行BULK INSERT语句。这条语句允许从文本文件中将数据导入到SQL Server 2008数据库中,为需要执行大容量插入到数据库的域账户而设计。
Dbcreator:这个服务器角的成员可以创建、更改、删除和还原任何数据库。这不仅是适合助理DBA的角,也可能是适合开发人员的角。
Diskadmin:这个服务器角用于管理磁盘文件,比如镜像数据库和添加备份设备。它适合助理DBA。
Processadmin:SQL Server 2008能够多任务化,也就是说可以通过执行多个进程做多个事件。例如,SQL Server 2008可以生成一个进程用于向高速缓存写数据,同时生成另一个进程用于从高速缓存中读取数据。这个角的成员可以结束(在SQL Server 2008中称为删除)进程。
Securityadmin:这个服务器角的成员将管理登录名及其属性。他们可以授权、拒绝和撤销服务器级权限。也可以授权、拒绝和撤销数据库级权限。另外,它们可以重置SQL Server 2008登录名的密码。
Serveradmin:这个服务器角的成员可以更改服务器范围的配置选项和关闭服务器。例如SQL Server 2008可以使用多大内存或监视通过网络发送多少信息,或者关闭服务器,这个角可以减轻管理员的一些管理负担。
Setupadmin:为需要管理链接服务器和控制启动的存储过程的用户而设计。这个角的成员能添加到setupadmin,能增加、删除和配置链接服务器,并能控制启动过程。
Sysadmin:这个服务器角的成员有权在SQL Server 2008中执行任何任务。
Public:有两大特点,第一,初始状态时没有权限;第二,所有的数据库用户都是它的成员。
2.数据库角
三种类型的数据库角:
固定数据库角:微软提供的作为系统一部分的角;
用户定义的标准数据库角:你自己定义的角,将Windows用户以一组自定义的权限分
组;
应用程序角:用来授予应用程序专门的权限,而非授予用户组或者单独用户。
1)固定数据库角
微软提供了9个内置的角,以便于在数据库级别授予用户特殊的权限集合
db_owner:该角的用户可以在数据库中执行任何操作。
db_accessadmin:该角的成员可以从数据库中增加或者删除用户。
db_backupopperator:该角的成员允许备份数据库。
db_datareader:该角的成员允许从任何表读取任何数据。
db_datawriter:该角的成员允许往任何表写入数据。
db_ddladmin:该角的成员允许在数据库中增加、修改或者删除任何对象(即可以执行任何DDL语句)。
db_denydatareader:该角的成员被拒绝查看数据库中的任何数据,但是他们仍然可以通过存储过程来查看。
db_denydatawriter: 像db_denydatareader角,该角的成员被拒绝修改数据库中的任何数据,但是他们仍然可以通过存储过程来修改。
db_securityadmin:该角的成员可以更改数据库中的权限和角。
public:在SQL Server 2008中每个数据库用户都属于public数据库角。当尚未对某个用户授予或者拒绝对安全对象的特定权限时,这该用户将据称授予该安全对象的public角的权限,这个数据库角不能被删除
2)用户自定义数据库角
3)应用程序角
应用程序角允许用户为特定的应用程序创建密码保护的角。
五.权限
1.常用的权限
安全对象 | 常用权限 |
数据库 | CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE VIEW、CREATE TABLE、CREATE RULE、BACKUP DATABASE、BACKUP LOG |
表 | SELECT、DELETE、INSERT、UPDATE、REFERENCES |
表值函数 | SELECT、DELETE、INSERT、UPDATE、REFERENCES |
视图 | SELECT、DELETE、INSERT、UPDATE、REFERENCES |
存储过程 | EXECUTE、SYNONYM |
标量函数 | EXECUTE、REFERENCES |
9.6.4 操作权限
权限分为3种状态:授予、拒绝、撤销,可以使用如下的语句来修改权限的状态。
授予权限(GRANT):授予权限以执行相关的操作。通过角,所有该角的成员继承此权限。
撤销权限(REVOKE):撤销授予的权限,但不会显示阻止用户或角执行操作。用户或角仍然能继承其他角的GRANT权限。
拒绝权限(DENY):显式拒绝执行操作的权限,并阻止用户或角继承权限,该语句优先于其他授予的权限。
1.授予权限
本语法格式:
GRANT
{ALL|statement[,..n] }
TO security_account[,..n]
ALL:表示希望给该类型的对象授予所有可用的权限。不推荐使用此选项,保留些选项仅用于向后兼容。授予ALL参数相当于授予以下权限:
如果安全对象为数据库,则ALL表示CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE VIEW、CREATE TABLE、CREATE RULE等权限。
如果安全对象为标量函数,则ALL表示EXECUTE和REFERENCES。
如果安全对象为表值函数,则ALL表示SELECT、DELETE、INSERT、UPDATE、REFERENCES。
如果安全对象为存储过程,则ALL表示EXECUTE、SYNONYM。
如果安全对象为表,则ALL表示SELECT、DELETE、INSERT、UPDATE、REFERENCES。
如果安全对象为视图,则ALL表示SELECT、DELETE、INSERT、UPDATE、REFERENCES。
Statement:表示可以授予权限的命令,例如,CREATE DATABASE。
security_account:表示定义被授予权限的用户单位。security_account可以是SQL Server的数据库用户,可以是SQL Server的角,也可以是Windows的用户或工作组
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论