在分布式环境中,附加产生的授权控制问题源于对象的分布和其他分布问题。后一种方案的一个假设是,用户是比较固定的、静态的,至少存取分布式数据库的大多数请求发生在同一个节点上。分布授权规则的表示方法与集中制系统的类似,如视图定义一样,它们必须存放在目录里。其他两种情况虽有利于本地访问,但是无法在编译时处理分布授权。视图也看作授权机制中考虑的数据对象。采用用户组方式处理授权可以简化分布式数据库管理。......
2023-10-28
授权控制主要涉及三个方面:用户,负责触发应用程序的执行;操作,嵌套在应用程序里;数据库对象,是操作实施的对象。授权控制包含检查一个指定的触发(用户、操作、对象)是否允许继续(即用户可以在该对象中执行操作)。
授权控制可以看成一个三元组〈用户,操作,对象定义〉,它可以指定用户有权利在一个对象上实施操作。因此,为了完善地进行控制授权,DBMS需要定义用户、对象和权利。
系统中,一个用户(一个人或一组人)的引入需要指定一个参数偶对(用户名、口令)。用户名用于在系统中唯一地标识该用户,而口令则只有该用户知道,是授权给该用户的。这两样东西必须同时提供,以便在系统日志中记录。
保护的对象是数据库的子集。在关系型系统中,对象可以通过它们的类型(视图、关系、元组、属性)以及通过选择谓词指定的内容来定义。
数据库上的权利可以通过用户、对象和在对象上实施的操作集来表示。在基于SQL的关系型DBMS中,操作可以是高级语句,如查询(SELECT)、添加(INSERT)、修改(UPDATE)或删除(DELETE)。权利(授权与撤销)可以用如下语句来定义:
GRANT<p r ivi l ege>ON<ob j ec t>TO<grantee>[{,<p r ivi l ege>,...}[WITH GRANT OPTION]
REVOKE<p r ivi l ege>f rom<ob j ec t>TO<grantee>
关键词public可以用于表示普适用户。授权控制可以用“谁(授权者)可以授权”来描述。最简单的情况为控制是集中方式的:只有一个用户或用户组(数据库管理员)拥有数据库对象的所有权利,唯一可以使用GRANT和REVOKE语句。
一种更灵活、更复杂的控制形式是分散形态:对象的创建者变成所有者,被授予全权。接着他/她可以给别人授权,甚至可以给别人以特权。接受特权的人就可以拥有被授予的权利。这种方式的问题是,权利回收时必须递归进行。例如,在对象O上,如果A给B授权,B再给C授权。接着希望回收B在C上的所有权利,则C在O上的权利也自动被回收。为此,系统必须在每个对象上保持一个授权层次架构。创建者(或DBA)处于其根部。
权限可以用一个矩阵来表示,如表4.4所示。
表4.4 授权矩阵的例子
对象上的权利可以像授权规则一样记录在数据目录(字典)里。
如表4.4所示,最常用的方法是将所有的权限用一个授权矩阵表示。其中,每一行表示一个授权事项,每一列代表一个对象。这样的一个二元组(〈subject,object〉)表示为一个授权。授权操作可以用它们的操作类型(如SELECT、UPDATE)来表述。进一步说,也可以使用存取该对象操作的谓词来限定。此时有一个条件是,该对象必须是一个基关系而不是视图。例如,〈陈小莲,Student〉的授权可以如下:
Select*where dept="CS"
这里,授权“陈小莲”能且只能访问关系Student里属于计算机系(dept=CS)的学生。
表4.4是一个授权矩阵的样例,其中对象可以是关系(Student和SC),也可以是属性(SNAME)。
授权矩阵可以用三种方式存储:按行存储、按列存储,以及按一个权利事项加上按此权限存取的对象表来存储。不同的存储方式有不同的优点和缺点。
实施时,不同的系统会采取不同的方式,下面以Oracle为例来对此进行说明。
为了给数据库服务器提供一个完整的自主性访问控制系统,Oracle采取了几种不同的方法扩展ANSI SQL标准。
1.认证
认证(authentication)是验证用户是否与其声明内容相符的过程,以便保证合法使用授予该用户的权限。正像前面所提到的,Oracle也为授权标识提供了一套口令系统,在Oracle中称为用户名。Oracle为授权标识提供了更进一步的应用,并在SQL中增加了CREATE user命令。该命令可以创建一个带有口令的用户(也定义了一种不包含任何对象的模式),同时指定默认及临时表空间、空间限额及配置文件。
Oracle提供两种独立的口令机制。(www.chuimin.cn)
第一种方案假定操作系统提供了一种口令,并且对Oracle会话不使用口令检查,可以使用下面的命令来定义。
Create user<user name>IDENTIFIEDEXTERNALLY
第二种方案将口令以加密的形式保存在服务器的数据词典中,无论何时启动一个会话,都会检查它。使用CREATE user语句,在任何数据库中可以使用上述任何一种方案或同时使用两种方案。
Create user<user name>IDENTIFIED by<password>
如果使用EXTERNALLY选项,则Oracle会使用一个标准的前缀,通常是“OPS$”,加在操作系统用户标识符前。当使用CREATE user命令时,必须在〈user name〉中加相同的前缀。
当有人启动会话时,Oracle的验证方案会完成验证该用户身份的安全目标。
2.角色
角色(role)是一组权限的集合。可以把多个权限授予一个用户,或者把一组权限的集合授予一个角色,然后把该角色授予该用户(或多个用户)。这种方法提供了管理多个不同用户非常复杂的权限组合的功能。
要构建一个角色,必须先确定安全目标。每个角色应当是表示某一功能的连贯的权限组。例如,每个应用程序中都会有一个建立好的唯一角色,它包含运行该应用程序所必需的所有权限。对于复杂的应用程序,可能需要划分几个使用该程序的不同用户组,每个用户组可能会得到不同的并且是相互交错的权限集,对每个用户组可以授予不同的角色,也可以把角色授予其他角色,这样可以在层次状的角色中将角色与附加的权限或其他角色进行组合。
可以通过在CREATE ROLE语句中带IDENTIFIED by分句的方法,对角色实施口令保护。这种方法使得在获得角色的权限之前,用户需要先输入角色的口令激活该角色。这样对角色增加了更进一层的保护,但显然加大了用户注册的难度,只有那些高风险需要验证的事情,才需进行角色口令保护。
Oracle提供一个特殊的关键字PUBLIC,用于表示数据库当前定义的所有用户。通过给PUBLIC授权,可以把权限授予所有用户,有时这是非常有用的。
3.系统及对象权限
Oracle在服务器安全系统中还有如下几种不同的权限。
●同义词(synonym):任何对象名字的别名。
●簇(cluster):是一种把共享公共信息的多个表组织在一起存储的存储结构,例如与外部关键字完整性约束相关的表。
●索引(index):对表中的数据提供可选择的访问路径的辅助的存储结构。
●序列(sequence):可用于产生唯一的整数值作为主关键字的对象。
●过程(procedure):一个PL/SQL存储过程或函数。
●触发器(trigger):与作用在表上的服务器事件相联系的存储PL/SQL过程,如在UPDATE或INSERT之前或之后的事件。
●快照(snapshot):保存从主表(通常是在远程数据库上)查询结果的一个表。
●系统权限(system privileges):系统级的权限,允许管理自己的模式及其操作,这通过执行特殊对象类型上的特殊操作完成。获得这种权限后,可以使用CREATE、ALTER及DROP命令从模式中增加、改变及删除任何不同类型的对象。如果在权限上增加关键字ANY,则意味着不仅可以在自己的任何模式上实施权限,而且可以在不属于自己的模式上实施权限。只有当另一个用户给自己授予带有ADMIN OPTION的权限或具有GRANT ANY PRIVILEGE权限时,才可以把系统权限授予别的对象。
●对象权限(object privilege):是对一个特殊的、现存对象采取某种动作的权限。
有关分布式数据库技术的文章
在分布式环境中,附加产生的授权控制问题源于对象的分布和其他分布问题。后一种方案的一个假设是,用户是比较固定的、静态的,至少存取分布式数据库的大多数请求发生在同一个节点上。分布授权规则的表示方法与集中制系统的类似,如视图定义一样,它们必须存放在目录里。其他两种情况虽有利于本地访问,但是无法在编译时处理分布授权。视图也看作授权机制中考虑的数据对象。采用用户组方式处理授权可以简化分布式数据库管理。......
2023-10-28
在上下文中,视图是一个从基关系导出的关系,实施方式是将其作为一个查询的结果。目前,实际系统在通过视图执行更新操作方面的限制都很大。这样,排除了在通过连接、聚集等生成的视图上实施更新的可能。然而,理论上可以支持更新的视图集合应大得多。......
2023-10-28
语义完整性子系统有两种主要成分:一种表达与操纵完整性断语的语言,一种在数据库更新时强制数据库实施特定动作的强制机制。前者称为完整性约束,后者称为触发器。3)域完整性在关系中,每个属性有指定的域,并且该域的值会有限制。4)参考完整性参考完整性是指关系的外键的值必须与其参考关系中的主键相匹配。在关系型数据库系统中,可以使用断语来定义完整性约束。......
2023-10-28
可以将Client/Server系统看成是完全的集中式系统,将Gnutella这样的P2P系统看成是完全的非集中式系统。我们可以从以下三个方面来区分集中式系统与非集中式系统。在机构上,DNS本身不是集中式的而是分散式的,但是其发现服务是集中式的,由DNS服务器提供服务。图18.2两种P2P的文件分享形态3.资源通信分布式系统中的资源通信包含以下两种方法。......
2023-10-28
从而,死锁是分布式数据库管理系统面临的严肃问题。要采取措施,先要分析是否出现死锁,通常称为死锁检测。等待图是帮助监测的一个有用工具。WFG是一个有向图,表示事务间的等待关系。图9.9是例9.7的WFG。WFG中有环出现就意味着有死锁存在。在分布式系统中,WFG的形式复杂得多,因为两个参与死锁的条件可能出现在不同的节点上,我们把它称为全局死锁。图9.9等待图WFG发现死锁后,就要设法打破死锁。......
2023-10-28
TIG焊一般采用高频振荡非接触引弧,电极不熔化,对数字化控制要求不高。为此,需通过数字化精密控制引弧、收弧过程。普遍关注的既简便又有效的方法,是直接对输出波形进行数字化控制,简称为波控法。波控法经历了从粗糙控制到精细数字化控制的发展过程。......
2023-06-25
有多种并发控制算法的分类方式。按照同步原语可以将并发控制算法分成两类:基于互斥存取共享数据的算法和将事务排序按规则执行的算法。图9.10并发控制算法的分类●在主本封锁中,将每个封锁单元的某个副本指定为主本,在访问该单元时主本必须封锁。这些算法可以分成基本TO、多版本TO和保守TO等。实际上,在某些基于封锁的算法中也使用时标,因为这样可以改进效率和并发性,我们称为混合算法。......
2023-10-28
在数据库安全里,访问控制扮演着重要角色。访问控制就提供这种保护功能。访问控制系统需要关注三个方面:访问控制策略、访问控制模型和访问控制机制。访问控制策略定义高级规则,用于核实访问请求是否被核准或拒绝。访问控制策略通过访问控制模型来实现规范,通过访问控制机制来强制实施。这样,访问策略改变后,访问控制机制依然有效。访问控制系统主要具有如下特征。这些特征给访问控制机制的设计与开发迎来了新的挑战。......
2023-10-28
相关推荐