没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
下载
第9章 禁止非法使用
安全是人类的基本需求。从表面上看,一个数据库应用程序决不会发生使安全受到威胁
的事情,但也必须提供一定程度的安全性以防止被破坏。想达到的安全级别正是应用程序采
取的安全策略。
9.1 为什么要求安全
安全性的含义是什么?为什么在这上面要花费时间呢? O r a c l e 或Oracle Developer能自动
地保证数据的安全吗?如果系统是通过因特网提供公众使用的,那又如何保护系统以防止非
法入侵呢?
下面是由于某些人的故意行为引发的一些事情:
■ 不可应用性:系统可能会拒绝合法用户的使用,这可能是因为某些人破坏或使系统过
载造成的。如果应用程序是通过因特网使用的,这种可能性更大。
■ 不可统计性:由于无法确定数据项的来源,会使系统不能保证应用程序或数据库中数
据的准确性或合法性。例如,当一个应用程序通过 We b 页获得数据时,世界上的任何
人都可以向其输入数据,这就必须有一种方法知道数据的来源。
■ 不可控制性:使系统不能控制应用程序的操作,导致不能保证产生的结果的合法性。
■ 窃取:有的人会通过伪造或欺骗的方法窃取数据,甚至货币和商品,这也包括窃取智
力情报。然而,因特网使所有这一切变得非常容易。
本书并不是一本关于计算机安全性的书,计算机安全是一个具有很多方面复杂问题的广
阔领域。在Oracle Developer软件系统中如果没有保护系统来防止被破坏,则可能会发生以上
的一些情况。那么,在这方面如何做得更好一些呢?
首先,必须确定来自于故意破坏软件行为的风险。对每一种风险评估失败的可能性及影
响,对于那些认为不可接受的风险,采取减少风险的措施,通过这样的分析就可以确定哪些
是安全问题,哪些不是。如果认识到很多问题对系统并没有影响,就可以排除掉很多的“安
全问题”。决不要陷入这样的陷阱:为了安全,每件事情必须是安全的。
注意 必须确定一些非故意行为破坏系统所带来的一些风险。这种风险的一个例子是:
由于查询语句查询非常巨大数量的数据而使系统瘫痪。数据库及应用程序设计应当考
虑到这种技术性失败的风险。安全性风险是另外一种猛兽。
其次,应采取的方法是停止那些对软件的未授权使用,并且停止有可能导致非授权使用
的授权使用。如果认为必须通过安全措施保证数据的安全性,决不要欺骗自己:使用安全策
略可以保证防止某些人使用软件。根据所处理的问题的不同,有可能使得合法的用户也较难
访问和使用软件。在采取这样的方法之前,要判断它是否会降低产品的质量。
第三,可能扩展的选择是在取得审查 ( a u d i t i n g ) 的事实之后提请法庭调查。审查是数据库
或应用程序中的一种跟踪事件及活动。建立一种审查跟踪可以帮助及时地调查及处理各种发
生的问题,并且可以防止由试探性入侵者所产生的各种问题。
保证安全性的通用技术是非常广泛的,本章开始所讨论的问题主要着重于 O r a c l e及O r a c l e
D e v e l o p e r 所采用的自主性访问控制和审查。下一节讲述一种更安全的方法,叫做强制访问控
制,对于更高安全性要求的应用程序可以使用这种方法。
最后,人们对应用程序的物理访问方法可能决定它真正的安全性。在风险分析及管理计
划中必须考虑到物理手段及软件手段。如一个安全性非常敏感的应用程序不能通过公共电话
线,当然也不能通过因特网使用。必须限制对运行软件机器的物理访问方法,包括网络连接。
这本书并不要求每个数据库应用程序是绝对安全的,事实上恰恰相反。一个公共的安全
模型是限制用户只能访问为完成工作所必须的内容。虽然这样可以产生较好的安全性,但结
果是不利于方便使用。如果是为因特网制作程序,这样的方法是不可用的。强加于用户的安
全性越少,应用程序将是越易使用的。为满足应用需求牺牲多少易用性及采用多少安全性完
全由自己决定。尽可能满足能承受的风险要求,但并不是所有一切。
对安全性访问要求较高的是因特网。如果准备把应用程序发布在因特网上,必须确信应
用程序没有违反防火墙的要求,并且不允许黑客 (或任何其他人 )进入数据库。 O r a c l e
D e v e l o p e r 支持各种防火墙,通过外部防火墙的运行及经过安全的 N E T 8 通道可以访问防火墙
另一边的各个服务器。
9.2 自主性访问控制
自主性访问控制(discretionary access control)是控制访问应用程序及数据库的一种能力,
它通过给使用应用程序及数据库的主题 (用户及进程 )授权的方法实现。这一节概述在 O r a c l e
D e v e l o p e r中可用的各种不同的自主性访问控制方法,给出了标准 S Q L 安全性控制与 O r a c l e提
供的标准之外的安全性控制的区别,并且详细给出了在 Oracle Developer中可用的实现自主性
访问控制的不同方法。
注意 下面几节中描述的很多安全性方法是基于服务器的,不是Oracle Developer的内
容,然而这些概念很重要,本章在某些细节给出了解释。更详细的内容可以参考关于
SQL的书或Oracle文档(参看下面各节中的特殊引用)。
9.2.1 SQL访问控制
ANSI SQL 标准提供了基于O r a c l e安全系统的最基本的访问控制级别。如果要开发一个使
用O D B C 的可移植数据库的应用程序,必须使用 ANSI 安全技术加以限制,否则就可以无限制
地使用O r a c l e的各种扩展功能,或任何其他想使用的数据库管理器。
1. 模式及授权
ANSI 安全性方案起始于模式及相对应的授权标识符。在 ANSI SQL中模式( s c h e m a ) 是一
个拥有特殊表集、视图集、权限集的对象(视图集及权限集将分别讨论 )。任何特殊的表、视图、
权限只能属于一个模式。每一个模式有一个名字,称作授权标识符 (authorization identifier)。
这个名字也可用于标识一个表,因为不同的模式可以包含具有相同名字的表,也就是说,模
式为它所有的对象的名字提供一个范围。在 O r a c l e 中,这些术语等同于用户 ( u s e r ) 及用户名
(user name)。O r a c l e 也允许为这些模式提供一个口令 (在下面关于O r a c l e的扩展功能中将会学到
更多内容)。
授权标识符是分别访问数据库不同部分的基本方法,应用 S Q L 的这种特征,根据不同访
1 9 0 第二部分 Oracle Developer教程
下载
问控制可以把数据库分给各个模式。在模块及模式之间创建关系可以构造复杂的访问控制。
例如,在一个中心的模式中创建基本应用程序数据,然后为使用该应用程序的不同人员创建
不同的用户,为他们授予合适的访问数据级别,这种方法是十分普遍的。
模式及授权标识符通过把数据库分成各个部分,而不是将数据库看作一个整体的方法,
可以实现限制访问数据库中的某一部分对象的安全性目标。
2. 权限
A N S I权限( p r i v i l e g e ) 用一个特殊的授权标识符来表示对表或视图的操作的分类,共有五种
操作( a c t i o n s ) :
■ I N S E RT:允许被授权者在表或可修改的视图中插入新行。
■ D E L E T E:允许被授权者在表或可修改的视图中删除行。
■ S E L E C T:允许被授权者从表或视图中的读数据行。
■ U P D AT E :带有一个可选择的列表,允许被授权者改变表或修改视图中所指定列的值。
■ R E F E R E N C E S:带有可选择的列表,允许被授权者在一个完整性约束中参照这些列。
可用G R A N T 语句定义一个权限,格式如下:
A N S I 安全系统通过把授权标识符与一个称作模块的抽象对象相联系的方法运行,这个模
块包含针对数据库执行 S Q L。要执行模块中 S Q L 语句,必须对授权标识符授予必要的权限。
这种方法对数据库中的表及视图提供了一个基本的访问控制级别。
WITH GRANT OPTION子句允许被授权者授权给另一个被授权者,否则只有授权标识符
的所有者可以为另一个对象授权。
O r a c l e 及1992 SQL标准增加了一条取消权限的 R E V O K E语句,用该语句可选择性地逐级
取消被授权者的权限。1 9 9 2 标准还将它扩展加入到模式中的所有对象的权限 (范围、字符集等),
对I N S E RT权限增加了列表,对各列还可以带 D e f a u l t说明缺省值。1 9 9 2标准为新的对象增加了
一种新权限U S A G E ,提供使用范围( d o m a i n )、字符集、转换( t r a n s l a t i o n )、校勘( c o l l a t i o n ) 的能
力。
使用模式,可以达到如下的安全目标:
■ 利用对其他授权标识符的授权,可以限制对特定表、列、视图的访问。
■ 利用几种类型的权限,可以限制对某些表及视图的访问种类。
3. 视图
视图是一个看起来像表一样的对象,但事实上它是一个定义于该表的 S E L E C T语句。视图
可以从一个或更多基本表或视图中导出数据,某些视图是不可修改的,如带有连接、分组或
表达式的S E L E C T 语句。
为了安全性目的可以使用视图,因为它可以压缩地引用基本表,当使用它时不需要有关
基本表的任何权限。也就是说,可以在一个模式中创建基本表,创建该表上的一个视图,并
仅把该视图的权限授予其他的授权标识符。
使用视图,可以达到下面的安全目标:
■ 通过视图定义中的S E L E C T列表,可以限制访问一个或几个基本表的某些列。
■ 通过视图定义中的W H E R E子句,可以限制访问一个或几个基本表的特定行。
第9章 禁止非法使用 1 9 1
下载
9.2.2 Oracle 访问控制
为了为数据库服务器提供一个完整的自主性访问控制系统, O r a c l e采取了几种不同方法扩
展ANSI SQL标准。
对于O r a c l e 的访问控制及审查 ( a u d i t i n g ) 功能的详细描述参看 Oracle Server Concepts
M a n u a l ( O r a c l e服务器概念指南)。
1. 认证
认证( A u t h e n t i c a t i o n ) 是验证一个用户是否与其声明内容相符的过程,以便保证能够合法
使用授予给该用户的权限。正像前节所提到的, O r a c l e 也为授权标识符提供了一套口令系统,
在O r a c l e 中称作用户名。 O r a c l e 为授权标识符提供了更进一步的应用,并在 S Q L 中增加了
C R E ATE USER命令。该命令可以创建一个带有口令的用户 (同时定义了一个不含任何对象的
模式),同时指定缺省及临时表空间、空间限额及配置文件 (下一节讨论表空间及配置文件 )。
O r a c l e 提供两套独立的口令机制,第一套假定操作系统提供了一套口令方案,并且对于
O r a c l e会话不使用口令检查。
第二套方案将口令以加密的形式存在服务器上数据库数据词典中,无论何时启动一个会
话都会检查它。使用C R E ATE USER语句,在任何数据库中可以使用任何一种方案或同时使用
两种方案。
如果用E X T E R N A L LY,O r a c l e 使用一个标准的前缀,通常是“ O P S $”,加在操作系统用
户标识符前。因此在使用 C R E ATE USER命令时,必须在 <user name>中加相同的前缀。对于
特定系统参看O S _ A U T H E N T _ P R E F I X 初始化参数。
无论采用哪一种方案,只有经常改变口令才会好用。用户如果不能很经常地改变口令,
至少也应每个月改变一次。口令应当是单词或不具有明显意义 (如名字等)的杂乱的符号,并应
包括奇异的符号 (如$、#、_等)。人们不应把口令写在黄色的胶纸上并贴在终端上,也不能把
口令告诉街上的过路人,或把口令放在电子公告板上。系统验证安全的强壮性取决于使用该
系统的用户的可信程度。
当有人启动一个会话时,Oracle 的验证方案完成验证该用户身份的安全目标。
2. 角色
一个O r a c l e 角色( r o l e )是一个权限集合。可以把多个权限授予一个用户,或者把一个权限
集合授予一个角色,然后把该角色授予该用户 (或多个用户)。这种方法提供了多个不同用户管
理非常复杂的权限组合的能力。
例如,Talbot 雇了一个新的会计师,则仅仅把他或她的用户名字加到 Accounting Role(记
帐角色)中即可。如果一个应用程序需要一个新表及在该表上的权限 , Talbot 仅需改变角色的权
限,并且所有具有该角色的用户都会得到正确的权限。
要建立一个角色,必须首先确定安全目标。每一个角色应当是表示某一功能的连贯的权
限组。例如,每一个应用程序中都会有一个建立好的唯一角色,它包含运行该应用程序所必
须的所有权限。对于一个复杂的应用程序,可能需要划分几个使用该程序的不同用户组,每
一个用户组可能会得到不同并且是相互交错的权限集,对每一个用户组可以授予不同的角色。
这些应当作为应用程序需求分析的一部分,只有划分好了不同角色,才会比较容易地确定这
1 9 2 第二部分 Oracle Developer教程
下载
剩余15页未读,继续阅读
资源评论
Mmnnnbb123
- 粉丝: 706
- 资源: 8万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功