龙空技术网

数据库系统原理:存取控制

万象星辰 10

前言:

目前各位老铁们对“数据库存储过程的原理”大概比较关心,兄弟们都想要剖析一些“数据库存储过程的原理”的相关内容。那么小编也在网上网罗了一些对于“数据库存储过程的原理””的相关文章,希望同学们能喜欢,大家快快来了解一下吧!

数据库管理系统提供统一的数据保护功能来保证数据的安全可靠和正确有效。存储控制是数据库的主要安全措施。

学习数据库存取控制机制。

一、权限

用户权限是指不同的用户对于不同的数据对象允许执行的操作权限,它由数据对象和操作类型两部分组成。

在数据库系统中,为了保证数据的安全性,用户对数据的操作必须首先从DBA处获得权限,才能进行对数据的操作。同时数据库系统也允许用户将获得的权限转授给其他用户,也允许把已授给其他用户的权限再回收上来。

用户权限包括两部分组成,数据对象以及操作类型。数据对象一般可以分为两类,一类是数据库的各级模式包括视图、表、索引,还有一类是数据库中的数据本身,按照不同的粒度,又可以分为表、记录、列等等。

对于不同对象允许的操作不同。比如说,对于对象属性列,它的权限就有查看数据的权限、插入一列、修改以及删除、还有全部上述权限。

对于对象数据库,它的权限则是建表权限。

二、授予权限

定义存取权限被称为授权。

授权是通过SQL语言的Grant语句实现的。

Grant语句的一般格式为:

Grant <权限> [, <权限>.... [ ON <对象类型><对象名>] TO <用户> [, <用户>] ...

[With Grant Option];

该语句表示:将ON后面的某一对象上的某一个权限或者某些权限赋给某些用户。这里的用户可以是一个用户,也可以是多个用户用逗号“,”分割,还可以是全体用户(使用PUBLIC表示)。

★用户可以是多个用户,也可以是PUBLIC。

★可选项WITH短语,指定With Grant Option子句,则表示获得权限的用户还可以将此权限授予给其他用户。

授权可由数据库管理员、对象的属主即该对象的创建人、拥有权限的用户来发出。

例1:

Grant Select

on Table S

to User1 ;( PUBLIC;)

将表S上的查看数据的权限赋给用户1(全体用户)。

例2:

Grant ALL PRIVILEGES

on Table S, C

to Userl,User2 ;

将表S和表C上的全部权限赋给用户1和用户2。

可以看到,表名可以是多个表组成的,使用逗号“,”来分割;同时,用户名也可以由多个用户组成,使用逗号“,”来分割。

例3:

Grant Update(sno),Select

on Table S

to User4;

将表S上的学号列的修改的权限以及所有列的数据的查看的权限赋给用户4。

它可以对某一个列赋予权限,同时权限也可以有一个列表,使用逗号“,”来分割。

例4:

Grant Insert

on Table SC

to User5

With Grant Option ;

将表SC上的插入数据的权限赋给用户5,并且User5又可以将User5又可以将此权限转授予其他用户。例如,User5可以将SC表上的Insert权限转授给User6。

例5:

Grant Insert

on Table SC

to User6

用户5可以发出命令,将SC表上的插入数据的权限给用户6.

需要注意,授权是不能循环授权的。

系统授权例图

从上图的系统的授权状态中,可以看到,SA是具有DBA权限的超级用户。

最右边这一列的SA将S表的修改学号这一列的权限赋给用户4;

中间这一列的SA将S表的查看数据的权限赋给用户1;

最左边这一列的SA将S表的插入数据的权限赋给用户5,用户5将此权限又转授给用户6。

三、回收权限

权限可以被授予,也可以被回收。

授予的权限可以由DBA(数据库管理员)或其他授权者用Revoke语句收回。

Revoke语句的一般格式为:

Revoke <杈限> [, <权限>] ... [on<对象类型><对象名>]

From<用户> [, <用户>] ...;

从FROM后面给出的用户列表中的这些用户中收回对ON后面这些的数据库对象的那些权限。

★ 回收操作级联收回。

例6:

Revoke Update(sno)

on Table S

From User4;

从用户4收回对表S的修改学号列的权限。

例7:

Revoke Select

on Table S

From PUBLIC;

从所有用户收回对表S的查看数据的权限。

例6、例7命令执行后的权限图

例8:

Revoke Insert

on Table SC

From User5 ;

从用户5收回对表SC的插入数据的权限。

由于用户5把该权限转授给用户6,那么从用户5收回权限的同时也收回了用户6 的对表SC的插入数据的权限。

例8命令执行后的权限图

需要注意:回收操作的级联,系统只回收直接或间接从User5处获得的权限。

如果用户6也从其他用户也得到了对表SC的插入数据的权限的话,这个权限就不会被收回。

四、存取控制子系统功能

(1)用户把授权和回收权力的决定告诉系统,由SQL的Grant和Revoke语句来完成;

(2)授权和回收的结果被存入数据库系统的数据字典中;(通常DBMS为每个数据库都设了一张授权表,包括用户、对象、权限等数据项,授权表很庞大。)

(3)当用户提出操作请求时,根据字典中的授权情况进行检查,以决定是否执行操作请求。(用户的每个的访问的请求,DBMS都要用到该表做检查。)

SQL SERVER中的权限表例图

从上图中,可以看到对表S的授予的各种权限,如删除表S的权限赋给了用户u_aa。将每个权限都写入授权表中。

五、总结

DBA拥有对数据库中所有对象的所有权限,并根据需要将不同的权限授予不同的用户。

用户对自己建立的基本表和视图拥有全部的操作权限,并可将这些权限授予给别人。

授权机制可以保证用户只能进行其权限范围内的操作。

标签: #数据库存储过程的原理