数据库的安全性与完整性.docx
- 文档编号:8067728
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:18
- 大小:43.60KB
数据库的安全性与完整性.docx
《数据库的安全性与完整性.docx》由会员分享,可在线阅读,更多相关《数据库的安全性与完整性.docx(18页珍藏版)》请在冰豆网上搜索。
数据库的安全性与完整性
第七章数据库的安全性与完整性
7.1数据库的安全性
7.1.1数据库的安全与安全数据库
7.1.2数据库的安全标准
7.1.2.1数据库安全的基本概念与内容
∙可信计算基
∙主体、客体及主客体分离
∙身份标识与鉴别
∙自主访问控制
∙强制访问控制
∙数据完整性
∙隐蔽通道
∙数据库安全的形式化模型
∙审计
∙访问监控器
7.1.2.2TCSEC(TDI)标准
7.1.2.3我国国家标准与TCSEC标准
7.1.3SQL对数据库安全的支持
7.1.4Oracle对数据库安全的支持
7.2数据库的完整性
7.2.1完整性的三个内容
7.2.2完整性规则的组成
7.2.3Oracle中的数据库完整性
7.2.4触发器
习题
第七章数据库的安全性与完整性
数据库是计算机系统中大量数据集中存放的场所,它保存着长期积累的信息资源,它们都是经过长期不懈艰苦努力所获得的,因此是一种宝贵的信息财富,如何保护这些财富使之不受来自外部的破坏与非法滥用是数据库管理系统的重要任务。
在计算机网络发达的今天,数据库一方面承担着网上开放向用户提供数据支撑服务,以达到数据资源共享的目的,而另一方面又要承担着开放所带来的负面影响,及防止非法与恶意使用数据库而引起的灾难性后果,因此保护数据库中数据不受外部的破坏与非法盗用是当今网络时代中的重要责任。
当然,有关数据库中的数据保护是多方面的,它包括计算机系统外部的:
●环境的保护,如加强警戒、防火、防盗等。
●社会的保护,如建立各种法规、制度,进行安全教育等。
●设备保护,如及时进行设备检查、维修,部件更新等。
它也包括计算机系统中的:
●网络中数据传输时数据保护。
●计算机系统中的数据保护。
●操作系统中的数据保护。
●数据库系统中的数据保护。
●应用系统中的数据保护。
而在这些保护中,数据库系统中的数据保护是至关重要的,在本章中我们主要讨论在数据库管理系统中设置一些必要的软件以达到数据保护的目的,这就是数据库的安全性(Security)与完整性(Integrity)。
7.1数据库的安全性(DatabaseSecurity)
7.1.1数据库的安全与安全数据库
所谓数据库的安全即是防止非法使用数据库。
数据库中的数据是一种重要的共享资源,必须在数据库管理系统中建立一套完整的使用规范(或称规则),使用者只有按照规则访问数据库并接受来自数据库管理系统的各种(按规则要求)检查,最终才能获取访问权限,这就是数据管理系统中的数据库安全的主要内容。
访问数据库的规范是有多种的,不同的规范适用于不同的应用,有的规范较为宽松,有的规范较为严厉,在过去单机方式下的数据库由于共享面狭,因此规范较为宽松,而在网络方式下特别是在因特网方式下由于数据共享面广,规范日趋严厉,因此根据应用的不同需求数据库的安全是分不同级别的,而那些能适应网络环境下安全要求的级别的数据库称为安全数据库(SecureDatabase)或称为可信数据库(TrustedDatabase)。
目前我国所使用的数据库管理系统基本上都达不到安全数据库的要求,在网上使用均存在安全隐患,因此,大力推广使用安全数据库是当务之急。
7.1.2数据库的安全标准
本节讨论数据库的安全级别.
目前,国际上及我国均颁布有关数据库安全的等级标准,最早的标准是美国国防部(DOD)1985年所颁布的“可信计算机系统评估标准”(TrustedComputerSystemEvaluationCriteria)简称TCSEC,1991年美国国家计算机安全中心(NCSC)颁布了“可信计算机系统评估标准关于数据库系统解释”(TrustedDatabaseInterpretation)简称TDI,1996年欧洲与加拿大联合颁布了CC标准,我国政府于1999年颁布了“计算机信息系统评估准则”,目前国际上广泛采用的是美国标准TCSEC(IDI)在此标准中将数据安全划分为四组七级,我国标准则划分为五个级别。
下面分别讨论这些分级标准,在讨论前还须要介绍一些有关数据库安全的专用名词与基本思想。
7.1.2.1数据库安全的基本概念与内容
数据库安全的基本概念与内容如下:
(1)可信计算基(TrutedComputingBase)
可信计算基简称TCB,它是为实现数据库安全的所有实施策略与机制的集合,它是实施、检查、监督数据库安全的机构,这是数据库安全中的一个基本概念,在下面我将多次引用这个概念。
(2)主体(Subject)、客体(Object)与主客体分离。
在讨论数据库安全时,我们将数据库中与安全有关的实体一一列出它们是数据库中数据及其载体,它包括数据表、视图、快照、存储过程以及数据文件等,它们还包括数据库中数据访问,如数据库用户,DBA、进程、线程等,然后将实体抽象成客体与主体两个部分。
所谓客体即是数据库中数据及其载体。
所谓主体即是数据库中数据访问者,进程、线程等,在数据库安全中有关的实体是独立的并且只能被标识成为一种类型(客体或主体),因此可以将数据库中的有关实体集分解成为两个子集:
客体(子)集与主体(子)集。
这两个子集互不相交且覆盖整个实体集,构成了实体集的一个划分,同时这两个子集存在着单向访问的特性,即主体子集中的实体可以在一定条件下访问客体子集,此种关系可用图9—1表示。
数据库安全中有关实体的主/客体划分以及主/客体间的访问关系构成了数据库安全的基础。
(3)身份标识与鉴别(IdetificationAuthentication)
在数据库安全中主体访问客体时需进行一定的安全控制与检查,目前存在三种控制方式,它们是身份标识与鉴别,自主访问控制与强制访问控制。
在数据库安全中每个主体必须有一个标志自己身份的标识符,用它以区别不同的主体,当主体访问客体时可信计算基鉴别其身份并阻止非法访问。
目前常用的标识与鉴别的方法有用户名、口令等,也可用计算过程与函数,最新的也可用密码字中的身份鉴别技术等手段。
身份标识与鉴别是主体访问客体的最简单也是最基本的安全控制方式。
(4)自主访问控制(DiscretionaryAccessControl)
自主访问控制简称DAC,它是主体访问客体的一种常用的安全控制方式,它较为适合于单机方式下的安全控制。
DAC的安全控制机制是一种基于存取矩阵的模型,此种模型起源于1971年由Lampson创立,经1973年Gralham与Denning的改进,到1976年由Harrison最后完成,此模型由三种元素组成,它们是主体、客体与存/取操作,它们构成了一个矩阵,在矩阵的行中可表示主体,而矩阵的列则表示客体,而矩阵中的元素则是存/取操作(如读、写、删、改等),在这个模型中,指定主体(行)与客体(列)后可根据矩阵得到指定的操作,其示意图可见图7.2。
主体
客体
主体1
主体2
主体3…
主体n
客体1
Read
Write
Write…
Read
客体2
Delete
Read/Write
Read…
Read/Write
……
……
……
………
……
客体m
Read
updata
Read/write…
Read/Write
图7.2存/取矩阵模型示意图
在自主访问控制中主体按存取矩阵模型要求访问客体,凡不符合存取矩阵要求的访问均属非法访问。
在自主访问控制中,其访问控制的实施由TCB完成。
在自主访问控制中的存取矩阵的元素是经常可以改变的,主体可以通过授权的形式变更某些操作权限,因此在自主访问控制中访问控制受主体主观随意性的影响较大,其安全力度尚嫌不足。
(5)强制访问控制(MandatoryAccessControl)
强制访问控制简称MAC,它是主体访问客体的一种强制性的安全控制方式,强制访问控制方式主要用于网络环境,对网络中的数据库安全实体作统一的,强制性的访问管理,为实现此目标首先需对主/客体作标记(Label),标记分两种:
一种是安全级别标记(LabelofSecurityLevel),另一种是安全范围标记(LabelofSecurityCategory)。
安全级别标记是一个数字,它规定了主、客体的安全级别,在访问时只有主体级别与客体级别满足一定比较关系时,访问才能允许。
安全范围标记是一个集合,它规定了主体访问的范围,在访问时只有主体的范围标记与客体的范围标记满足一定包含关系时,访问才能允许,综上所述可以看出,强制控制访问的具体实施步骤如下:
●对每个主体、客体作标记:
安全级别标记与安全范围标记。
●主体在访问客体时由TCB检查各自标记,只有在主、客体两种标记都符合允许访问
条件时访问才能进行。
强制访问控制的实施机制是一种叫Bell—Lapadula模型,在此模型中任一主体/客体均有一个统一标记,它是一个二元组,其中一个为整数(叫分层密级)而另一个则为集合(叫非分层范畴级)它可以用:
(n,{A,B,C,…})表示,当主体访问客体时必须满足如下条件:
●仅当主体分层密级大于或等于客体分层密级,且主体非分层范畴集合包含或等于客
体非分层范畴集合时,主体才能读客体。
●仅当主体分层密级小于或等于客体分层密级,且主体非分层范畴集合被包含或等于
客体非分层范畴集合时,主体才能写客体。
设主体的标记为(n,s),客体的标记为(m,s’)则主体读客体的条件为:
n>m且SS’
主体写客体的条件是:
n≤m且SS’
在强制访问控制中主体按Bell—Lapadula模型要求访问客体,凡不符合模型要求的访问均属非法访问,在强制访问控制中,其访问控制的实施由TCB完成。
强制访问控制中的主、客体标记由专门的安全管理员设置,任何主体均无权设置与授权,它体现了在网上对数据库安全的强制性与统一性。
(6)数据完整性(DataIntegrity)
数据完整性保护数据库中数据不受破坏,亦即是防止非法使用删除(Delete),修改(Updata)等影响数据完整的操作。
(7)隐蔽通道(HiddingCannel)
在主体访问客体时一般均通过正常路径访问,因此有可能使用TCB在访问路径中作检查,但是,实际上在实施时往往存在着多种非正常访问路径,它们构成了非法访问渠道,这种渠道往往比较隐蔽且逃过了TCB的检查,它们称为隐蔽通道,在数据库安全中,一定要寻找与防止隐蔽通道的出现,一旦出现要采取措施以堵塞此类通道。
(8)数据库安全的形式化模型(FormuligationofDatabasesecurity)
由于数据库安全在整个系统中的重要性,因此需要建立一套有效的形式化体系,用于保证自身的正确性,用以发现并填补安全漏洞,可以防止隐蔽通道并可为数据安全进一步研究提供理论基础,因此数据库安全的形式化已成为高级别数据库安全的必要条件。
目前,对此方面的研究很多,有基于代数的格理论形式化研究,有基于逻辑的形式化研究,但是,均未达到理想要求,从而对数据库安全级别的提高产生直接的影响,因此,对数据库安全形式化的研究是当前数据库安全领域的重要课题。
(9)审计(Audit)
在数据库安全中除了采取有效手段对主体访问客体作检查外,还采用辅助的跟踪、审计手段,随时记录主体对客体访问的轨迹,并作出分析供参考,同时在一旦发生非法访问后能即时提供初始记录供进一步处理,这就是数据库安全中的审计。
审计的主要功能是对主体访问客体作即时的记录,记录内容包括:
访问时间、访问类型、访问客体名、是否成功等。
为提高审计效能,还可设置审计事件发生积累机制,当超过一定阈值时能发出报警,以提示采取措施。
(10)访问监控器(AccessMonitor)
上述功能还需要有一个独立的抗篡改的复杂度足够小的系统实体以实现数据安全,这就是访问监控器。
访问监控器在功能上仲裁主体对客体的全部访问,具有扩充的审计功能,提供系统恢复机制,它是一个独立的物理机构,由一定的软件与硬件联合组成。
7.1.2.2TCSEC(TDI)标准
TCSEC(TDI)标准是目前常用的标准,在此标准中将数据库安全分为四类七级,现介绍如下:
(1)D级标准
为无安全保护的系统
(2)C1级标准
满足该级别的系统必须具有如下功能:
●主体、客体及主、客分离
●身份标识与鉴别
●数据完整性
●自主访问控制
其核心是自主访问控制
C1级安全适合于单机工作方式,目前国内使用的系统大都符合此标准。
(3)C2级标准
满足该级别的系统必须具有如下功能:
●满足C1级标准的全部功能
●审计
C2级安全的核心是审计,C2级适合于单机工作方式,目前国内使用的系统一部分符合此
种标准。
(4)B1级标准
满足该级别的系统必须具有如下功能:
●满足C2级标准全部功能
●强制访问控制
B1级安全的核心是强制访问控制,B1级适合于网络工作方式,目前国内使用的系统基本不符合此种标准,而在国际上有部分系统符合此种标准。
一个数据库系统凡符合B1级标准者称为安全数据库系统(SecureDBSystem)或可信数据库系统(TrustedDBSystem)。
因此可以说我国国内所使用的系统基本不是安全数据库系统。
(5)B2级标准
满足该级别的系统必须具有如下功能:
●满足B1级标准全部功能
●隐蔽通道
●数据库安全的形式化
B2级安全核心是隐蔽通道与形式化,它适合于网络工作方式,目前国内外均尚无符合此类标准的系统,其主要的难点是数据库安全的形式化表示的困难。
(6)B3级标准
满足该级别的系统必须具有如下功能:
●满足B2级标准的全部功能
●访问监控器
B3级安全核心是访问监控器,它适合于网络工作方式,目前国内外均尚无符合此类标准的系统.
(7)A级标准
满足该级别的系统必须具有如下功能:
●满足B3级标准的全部功能
●较高的形式化要求
此级为安全之最高等级,应具有完善之形式化要求,目前尚无法实现,仅是一种理想化的等级。
7.1.2.3我国国家标准与TCSEC标准
我国国家标准于1999年颁布为与国际接轨其基本结构与TCSEC相似,我国标准分五级,从第一级到第五级基本上与TCSEC标准的C级(C1,C2)及B级(B1,B2,B3)一致,现将我国标准与TCSEC标准比较如下:
TCSEC标准
我国标准
D级标准
无
C1级标准
第一级:
用户自主保护级
C2级标准
第二级:
系统审计保护级
B1级标准
第三级:
安全标记保护级
B2级标准
第四级:
结构化保护级
B3级标准
第五级:
访问验证保护级
A级标准
无
表7.1TCSEC标准与国标的比较
7.1.3SQL对数据库安全的支持
在SQL中提供了两种数据库安全的支持,它们是视图与授权功能。
(1)视图
在数据库安全中,一般用户使用数据库时,其使用范围受一定限制,即是每个用户只能访问数据库中的一部分数据,此种限制可用视图实现,通过视图的定义对用户访问的数据加以确定,一般用户可以在视图定义的范围内访问数据,而用户不能访问视图定义以外的数据,用此种方法以保护数据的安全。
(2)授权功能
在SQL中提供了自主存取控制权的功能,它包括了操作、数据域与用户三部分。
①操作
SQL提供了6种操作权限,它们是:
●SELECT权:
即是查询权.
●INSERT权:
即是插入权.
●DELETE权:
即是删除权.
●UPDATE权:
即是修改权.
●REFERENCE权:
即是用户定义新表时允许使用它表的关键字作为其外关键字.
●USAGE权:
允许用户使用已定义的属性.
②数据域
数据域即是用户访问的数据对象的粒度,SQL包含三种数据域,它们是:
●表:
即以基表作为访问对象
●视图:
即以视图作为访问对象
●属性:
即以基表中属性作为访问对象
③用户:
即是数据库中所登录的用户。
④授权语句:
SQL提供了授权语句,授权语句的功能是将指定数据域的指定操作授予指定的用户,其语句形式如下:
GRANT<操作表>ON<数据域>TO<用户名表>[WITHGRANTOPTION]
其中WITHGRANTOPTION表示获得权限的用户还能获得传递权限,即能将获得的权限传授给它用户。
例7.1GRANTSELECT,UPDATEONSTOXULINWITHGRANTOPTION
表示将表S上的查询与修改权授予用户徐林(XULIN),同时也表示用户徐林可以将此权限传授给它用户。
⑤回收语句
某用户A将某权限授予给用户B,则用户A也可以在它认为必要时将权限从B中收回,收回权限的语句称为回收语句,其具体形式如下:
REVOKE<操作表>ON<数据域>FROM<用户名表>[RESTRICT/CASCADE]
语句中带有CASCADE表示回收权限时要引起连锁回收,而RESTRICT则表示不存在连锁回收时才能回收权限,否则拒绝回收。
例7.2REVOKESELECT,UPDATEONSFROMXULINCASCADE.
表示从用户徐林中收回表S上的查询与修改权,并且是连锁收回.
7.1.4ORACLE对数据库安全的支持
ORACLEV8.0是一个具C2级安全的DBMS,它提供了如下的数据库安全保护。
●用户标识与鉴别
●自主访问控制
●审计
(1)用户标识与鉴别
在ORACLEV8.0中最外层的数据安全是由用户标识自己名字,然后由系统进行识别,系统允许重复标识三次,如果三次未获通过则自动退出。
ORACLEV8.0通过用户登录命令,将用户名、口令登记入册,此后即用它作为其标识与鉴别的依据,用户登录命令还要标识该用户的角色(ROLE)。
角色是ORACLE所特有的概念,角色是一组操作权限的集合,目的是为简化操作权限管理,ORACLEV8.0提供三种角色,它们CONNECT,RESOURCE和DBA,其中每个角色拥有一定的操作权限,它们是:
1CONNECT权限
该权限是用户的最基本权限,每个登录用户至少拥有CONNECT权限,CONNECT权限包括如下内容:
●创建类:
ALTERTABLE,CREATEVIEW,CREATEINDEX,DROPTABLE,DROPVIEW,DROPINDEX.
●操作类:
SELECT,INSERT,DELETE,UPDATE.
●控制类:
AUDIT,NOAUDIT,GRANT,REVOKE.
2RESOURCE权限
该权限是建立在CONNECT基础上的一种权限,它除拥有CONNECT的操作权外,还具有创建表,以及在该表上所有操作的权限和对该表所有操作作授权与回收的权限。
3DBA权限
DBA拥有最高操作权限,它除拥有CONNECT与RESOURCE权限外,能对所有表的数据作操纵,并具有控制权限与数据库管理权限。
DBA通过用户登录语句将用户名/口令及相应角色登录,此语句形式如下:
GRANT<角色>TO<用户名表>IDENTIFIEDBY<口令表>.
此语句执行后,相应的用户名、口令及其角色均进入数据库中数据字典,此后相应用户即拥有其口令及角色。
同样,DBA可用REVOKE语句取消用户的一些权限。
例7.3GRANTCONNECTTOXULINIDENTIFIEDBYtiger.
此语句表示将CONNECT权授予用户徐林并赋以口令:
tiger.
例7.4REVOKECONNECTFROMXULIN
此语句表示从用户徐林处收回CONNECT权限.
(2)自主访问控制
ORACLEV8.0具有自主访问控制功能,它包括如下内容:
①通过角色授权
ORACLEV8.0中首先通过角色对每个用户的操作授权。
②通过正常方式授权
即通过7.1.4所示方式授权,在此种方式中,操作方式有如下七种:
●ALTER修改表定义
●DELETE删除表记录
●INDEX在表上建索引
●INSERT在表中插入记录
●SELECT查找表中数据
●UPDATE修改表中数据
●ALL所有上述权限
在此种方式中,其操作的数据域包括:
基表、视图、序列、同义词、存储过程及函数以及基表中的属性、元组等。
在此种方式中,DBA和RESOURCE用户可以用GRANT与REVOKE语句将其创建的新数据域中操作权限授予给同级或低级的用户。
例7.5GRANTUPDATEONSCTOXULIN.
例7.6REVOKEUPDATEONSCFROMXULIN.
3.审计
ORACLEV8.0设置审计功能,审计包括如下内容:
(1)审计事件:
在ORACLEV8.0中设置两种审计,一种是用户审计,另一种是系统审计。
用户审计由用户设置用以审计该用户所创建的基表与视图的所有访问操作,系统审计则由DBA设置用以审计用户登录,GRANT及REVOKE操作以及其它管理型操作,所有一切引起审计的操作称为审计事件。
(2)审计内容:
一旦审计事件产生,ORACLE中的审计模块即行启动,它自动记录事件的有关内容:
●操作类型(查询/修改/删除/插入……)
●事件发生时间
●操作终端标识与操作者标志
●所操作的数据域(基表、视图、属性等)
(3)审计操作
ORACLEV8.0提供两条审计语句:
AUDIT与NOAUDIT,其中AUDIT语句用于选择审计事件,审计数据域以及是否审计,而NOAUDIT语句则是取消审计,它们的语句形式如下:
AUDIT<操作表>ON<数据域名>
NOAUDIT<操作表>ON<数据域名>
例7.7AUDITUPDATE,DELETEONS
此语句表示对基表S上设置对修改与删除的审计.
例7.8NOAUDITDELETEONS
此语句表示取消对基表S的删除的审计.
7.2数据库的完整性
数据库的完整性保护指的是数据库中正确性的维护,我们知道,任何一个数据库都会由于某些自然因素而受到局部或全局的破坏,它们可以是:
4系统硬件设备故障
5系统软件的错误
6应用软件编制上的错误
7操作员的操作错误
8网上传递错误
9黑客及病毒的入侵
在这些因素中有的是无法避免的,因此如何及时发现并采取措施防止错误扩散并及时恢复,这是完整性保护的主要目的。
7.2.1完整性的三个内容
数据库完整性由三部分内容组成,它们是:
1.实体完整性规则(EntityIntegrityRule)
这条规则要求基表上的主关键字中属性值不能为空值,这是数据库完整性的最基本要求,因为主关键字是唯一决定元组的,如为空值则其唯一性就成为不可能的了。
2.参照完整性规则(ReferenceIntegrityRule)
这条规则也是完整性中的基本规则,它要求不允许引用不存在的元组亦即是说在基表中的外关键字要么为空值,要么其关联基表中必存在元组。
如在基表S(S#、SN、SD、SA)与SC(S#、C#、G)其中SC中主关键字为(S#,C#)而外关键字为S#,SC与S通过S#相关联,而参照完整性规则要求SC中的S#的值必在S中有相应元组值,如有SC(S13,C8,70)则必在S中存在S(S13,...,...,...).
这条规则给出了基表之间相关联的基本要求。
上述两种规则是关系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 安全性 完整性