首页 理论教育分布式数据库技术:SQL访问控制

分布式数据库技术:SQL访问控制

【摘要】:ANSI SQL标准提供了安全系统最基本的访问控制级别,主要有以下几种。授权标识是一种区别访问数据库不同部分的基本方法,应用SQL的这种特征,根据不同的访问控制可以将数据库分给各个模式。要执行模块中的SQL语句,必须对授权标识授予必要的权限。1992 SQL标准增加了一条取消权限的REVOKE语句,使用该语句可选择性地逐级取消被授权者的权限。

ANSI SQL标准提供了安全系统最基本的访问控制级别,主要有以下几种。

1.模式及授权标识

ANSI安全性方案始于模式及其对应的授权标识。在ANSI SQL标准中,模式(schema)是一个拥有特殊表集、视图集、权限集的对象。任何特殊的表、视图、权限只能属于一个模式。每个模式有一个名字,称为授权标识(authorization identifier)。

授权标识也可标识一个表,因为不同的模式可以包含具有相同名字的表,也就是说,模式可为它的所有对象的名字提供一个范围。在Oracle系统中,这些术语等同于用户(user)及用户名(user name)。Oracle也允许为这些模式提供口令。

授权标识是一种区别访问数据库不同部分的基本方法,应用SQL的这种特征,根据不同的访问控制可以将数据库分给各个模式。在模式及模式之间创建关系,可以通过构造复杂的访问控制来保证。

例如,可以在一个中心的模式中创建基本应用程序,然后为使用该应用程序的不同人员创建不同的用户,为他们授予合适的访问数据级别。

通过将数据库分成各个部分而不是将数据库看成一个整体,模式及授权标识可以实现限制访问数据库中的针对某一部分对象的安全性目标。

2.权限

ANSI权限(privilege)使用一个特殊的授权标识来表示对表或视图的操作的分类,共有以下五种操作。

●INSERT:允许被授权者在表或可修改的视图中插入新行。

●DELETE:允许被授权者在表或可修改的视图中删除行。

●SELECT:允许被授权者从表或视图中读数据行。

●UPDATE:有一个可选择的列表,允许被授权者改变表或修改视图中所指定列的值。

●REFERENCES:有可选择的列表,允许被授权者在完整性约束中参考这些列。

可使用GRANT语句来定义一个权限,格式如下:

GRANT<p r ivi l ege>ON<ob j ec t>TO<grantee>[{,<p r ivi l ege>,...}[WITH GRANT OPTION]

简单来说,GRANT语句的含义是指:描述给谁(〈grantee〉),授予什么(〈object〉)上的哪种/些权限(〈privilege〉)。(www.chuimin.cn)

ANSI安全系统通过将授权标识与一种称为模块的抽象对象相联系的方法来实施授权,这个模块包含针对数据库执行的SQL命令。要执行模块中的SQL语句,必须对授权标识授予必要的权限。这种方法对数据库中的表及视图提供了一个基本的访问控制级别。

WITH GRANT OPTION子句允许被授权者再授权给另一个被授权者,否则只有授权标识的所有者可以为另一个对象授权。

1992 SQL标准增加了一条取消权限的REVOKE语句,使用该语句可选择性地逐级取消被授权者的权限。1992 SQL标准还将这条语句扩展加入模式的所有对象的权限(范围、字符集等)中,对INSERT权限增加了列表,对各列还可以带说明默认值。1992 SQL标准为新的对象增加了一种新权限USAGE,提供关于指定使用范围(domain)、字符集、转换(translation)、校勘(collation)的功能。

使用模式,可以达到如下安全目标。

●利用对其他授权标识的授权,可以限制对特定表、列、视图的访问。

●利用几种类型的权限,可以限制对某些表及视图的访问种类。

3.视图

直观来说,视图虽然是一个看起来像表一样的对象,但事实上它是一条定义于该表的SELECT语句。视图可以从一个或更多基本表或视图中导出数据。某些视图是不可修改的,如带有连接、分组或表达式的SELECT语句。

出于安全性考虑,可以使用视图,因为视图可以受限地引用基本表,使用视图时不需要有关基本表的任何权限。也就是说,可以在模式中创建基本表,创建该表上的视图,并把该视图的权限仅授予其他的授权标识。

使用视图,可以达到下面的安全目标。

●通过视图定义中的SELECT列表,可以限制访问一个或几个基本表的某些列。

●通过视图定义中的WHERE子句,可以限制访问一个或几个基本表的特定行。

授权控制必须保证只有授权用户才允许在数据库上实施操作。在一个集中式或分布式系统的控制下,各种不同的用户可以存取大量的数据。集中式或分布式数据库系统必须限定数据库的子集供用户子集访问。

授权控制原来一直是由操作系统提供的,现在开始由分布式操作系统来提供。这种授权控制一般使用集中控制方式。由授权集中控制的人员负责创建对象、允许其他特定用户在该对象上实施特定操作(如read、write、execute)。这些对象用外部名标识。

与文件系统有所不同,在数据库系统中,授权控制更精细,可以让不同的用户在同样的数据对象上有不同的权利。