第8章 数据与数据库安全 8.1 数据安全 8.1.1 数据安全 数据安全一般有两个含义:一是在数据的使用过程中,赋予不同的用户以不同的权限,实现机要数据的保密性;二是保证数据在存取和传输过程中的低出错率,避免机要数据的丢失、泄露、受扰和损毁等现象的发生。 数据安全主要包括数据存储和传输两方面的安全。存储安全包括存储环境安全、存储介质安全、存储管理等方面的安全;传输安全包括信息错误发送、非法拦截、泄露、缺损等内容。
1.数据安全的重要性 在信息系统中存有重要的数据、档案或历史纪录,不论是对企业用户,还是对个人用户来讲都是至关重要的,一旦不慎丢失,就可能造成不可估量的损失,轻则辛苦积累起来的心血会付之东流;严重的则会影响企业的正常运作,给科研、生产造成巨大的损失。 由于计算机病毒的数目越来越多、隐蔽性越来越强、破坏力也越来越大,轻则影响程序运行、系统死机、严重的格式化所有数据、损坏硬件,给用户带来巨大的损失。可见数据在存储中是难以保证其安全的。对企业来说,数据的安全足以决定企业的生存和发展,不能掉以轻心。所以为了保障生产、销售、开发的正常运行,必须采取先进、有效的措施以防范于未然。
2.威胁数据安全的因素 l 由于一个系统或设备的物理损坏使数据丢失。 l 人为错误导致偶然地删除一个文件或重新格式化一个磁盘。 l 黑客远程侵入计算机并损害信息。 l 病毒破坏数据或感染文件。 l 非法复制或删除计算机上信息或侵占整个单元系统。 l 火灾或洪水等自然灾害破坏网络或计算机等设备。 l 电源瞬间波动损害网络设备、文件等。 l 磁性存储器接触到有磁性的物质使文件被清除等现象。
3.保护数据安全常用的方法 (1)加强存取控制、防止非法访问。这样既可防止合法用户有意或无意的越权访问,也可防止非法用户的入侵。 (2)数据加密。数据加密方法有很多种,具体采用什么方法可根据实际情况来确定。 (3)网络加密。通常网络有三种对传输数据进行加密的保护方式,即链路加密、节点加密和点对点加密。 (4)数据安全管理。它应包括:防止数据信息被无意泄露或被窃;防止计算机病毒感染和破坏;有效、适时的数据备份和对备份介质的妥善保管。
8.1.2 数据完整性 1.数据完整性 数据完整性的目的就是保证计算机系统,或计算机网络系统上的信息处于一种完整和未受损坏的状态。这意味着数据不会由于有意或无意的事件而被改变或丢失。数据完整性的丧失意味着发生了导致数据被丢失或被改变的事情。为此,首先应该检查导致数据完整性被破坏的常见的原因,以便采用适当的方法予以解决,从而提高数据完整性的程度。 一般来说,影响数据完整性的因素主要有: (1)硬件故障 影响数据完整性的硬件故障有I/O控制器故障、电源故障、存储器故障、芯片和主板故障、介质、设备和其他备份的故障等。 (2)网络故障
软件也是威胁数据完整性的一个重要因素。由于软件问题而影响数据完整性有下列几种途径: (3)逻辑问题 软件也是威胁数据完整性的一个重要因素。由于软件问题而影响数据完整性有下列几种途径: l 操作系统错误。所有的操作系统都有自己的错误,这是众所周知的。此外,系统的应用程序接口(API)被第三方开发商用来为最终用户提供服务,第三方根据公开发布的API功能来编写其软件产品,如果这些API工作不正常就会产生数据被破坏的情况。 l 软件问题。在软件开发过程中,需求分析如果没有正确地反映用户的实际需要,系统就有可能生成一些无用的数据和错误的数据;软件错误或缺陷也是由逻辑问题而起,当然会影响数据的完整性。 l 文件损坏。文件损坏是由于一些物理的或网络的问题导致文件被破坏。文件也可能由于系统控制或应用逻辑中一些缺陷而造成损坏。如果被损坏的文件将会又被其他的过程调用而生成新的数据。 l 数据交换错误。在文件转换过程中,如果生成的新的文件不具有正确的格式,也会产生数据交换错误。 l 容量错误。在软件运行过程中,系统容量如内存不够也是导致出错的原因。
(4)灾难性事件 常见的灾难性事件有火灾、水灾、风暴、工业事故、蓄意破坏和恐怖活动等。 (5)人为因素 由于人类的活动对数据完整性所造成的影响是多方面的,它给数据完整性带来的常见的威胁包括:意外事故、缺乏经验、压力和恐慌、通信不畅、蓄意的报复破坏和窃取等。
2.提高数据完整性的办法 (1)备份 备份是用来恢复系统和数据最常用的方法之一。备份操作是把正确的完整的数据拷贝到磁带等介质上,如果系统的数据完整性受到了不同程度的损坏,可以用备份系统将最近一次的系统备份恢复到信息系统中去。 (2)镜像技术 镜像是在两个或多个磁盘或磁盘子系统上生成同一个数据的镜像视图的信息存储过程,一个叫主镜像系统,另一个叫从镜像系统。按主从镜像存储系统所处的位置可分为本地镜像和远程镜像。本地镜像的主从镜像存储系统是处于同一个RAID阵列内,而远程镜像的主从镜像存储系统通常是分布在跨城域网或广域网的不同节点上。
(3)归档 在信息系统中,归档操作的意思是把文件从网络系统的在线存储器上复制到磁带或光学介质上以便长期保存;或在文件复制的同时删除旧文件,使网络上的剩余存储空间变大一些。 (4)分级存储管理 分级存储管理与归档很相似,它是一种能将软件从在线存储器上归档到靠近在线存储器上的自动系统,也可以进行相反的过程。从实际使用的情况来看,它对数据完整性比使用归档方法具有更多的好处。 (5)奇偶检验 奇偶校验提供一种监视的机制来保证不可预测的内存错误,防止服务器出错以至造成数据完整性的丧失。 (6)故障发生前的预兆分析 故障前预兆分析是根据部件的老化或不断出错所进行的分析。一般情况下部件的老化或损坏都是需要一个过程的,常伴有各种表象的发生,通过分析可判断出问题的所在,为故障的排除提供科学的依据。 (7)灾难恢复计划 灾难给信息系统带来的破坏力是巨大的,灾难恢复计划是在废墟上如何重建系统的指导性文件。
8.1.3 容错与冗余技术 1. 容错技术 提高信息系统的可靠性有两种方法。一种是避错,即构造一个不包含故障的“完美”的系统,其手段是采用正确的设计和质量控制尽量避免把故障引进系统,要绝对做到这一点实际上是不可能的。一旦系统出了故障,则通过检测和核实来消除故障的影响,进而自动地或人工地恢复系统。第二种方法是容错,即当系统出现某些指定的硬件或软件的错误时,系统仍能执行规定的一组程序,或者说程序不会因系统中的故障而中断或被修改,并且执行结果也不包含系统中故障所引起的差错。
2.容错系统的分类 根据容错技术的不同,可以将容错系统分成五种不同的类型: (1)高可用度系统。 (2)长寿命系统。 (3)延迟维修系统。 2.容错系统的分类 根据容错技术的不同,可以将容错系统分成五种不同的类型: (1)高可用度系统。 (2)长寿命系统。 (3)延迟维修系统。 (4)高性能计算系统。 (5)关键任务计算系统。
3.容错系统的实现方法 根据执行任务的不同,常用的实现容错系统的方法有: (1)冗余备件 (2)负载平衡 (3)镜像 (4)复现 (5)冗余系统配件
4.网络冗余 在网络系统中,传输介质和其他的网络连接部件都必须有持续正常运行的备用途径。以提高主干网和网络互连设备的可靠性。 (1)主干网的冗余 (2)开关控制设备 (3)路由器 (4)Pipes软件
8.1.4 备份与恢复技术 1.数据备份的意义 顾名思义,数据备份就是将数据以某种方式加以保留,以便在系统遭受破坏或其他特定情况下,重新加以利用的一个过程。数据备份并非是可做可不做的事,对于信息系统来说建立备份是必需的。 数据备份在存储系统中的地位和作用是不容忽视的。对一个完整的信息系统而言,备份工作是必不可或缺的组成部分。其意义不仅在于防范意外事件的破坏,而且还是历史数据保存归档的最佳方式。换言之,即便是系统运行正常,没有任何数据丢失或破坏现象的发生,备份工作仍然具有非常大的意义――为进行历史数据查询、统计、研究和分析,以及重要信息归档保存提供了可能。
2.备份的误区 备份只是一种手段,备份的目的是为了防止数据灾难,缩短停机时间,保证数据安全,服务器硬件升级;而备份的最终目的是尽可能快地恢复网络信息系统所需要的数据和系统信息。目前,很多系统管理人员以及CIO对备份的认识还存在着一定的误区。主要存表现在: (1)用拷贝来代替备份 (2)用双机、磁盘阵列、镜像等系统冗余替代数据备份 (3)系统备份命令代替备份 (4)用双机、磁盘阵列、镜像等系统冗余替代数据备份 (5)只备份数据文件
3.备份与恢复操作的种类 (1)备份的种类 备份包括全盘备份、增量备份、差异备份、按需备份和排除。 (2)恢复操作的种类 3.备份与恢复操作的种类 (1)备份的种类 备份包括全盘备份、增量备份、差异备份、按需备份和排除。 (2)恢复操作的种类 恢复操作通常可以分成如下三类:全盘恢复、个别文件恢复和重定向恢复。
4.备份技术 当对大量的信息进行备份时,备份性能便成了非常重要的问题。被用于提高网络备份性能的技术有:RAID技术、设备流、磁带间隔和压缩等。 (1)RAID技术 (2)设备流 (3)磁带间隔 (4)压缩
8.2 数据库安全 8.2.1 数据库系统的安全 1.数据库安全的威胁 (1)篡改 8.2 数据库安全 8.2.1 数据库系统的安全 1.数据库安全的威胁 (1)篡改 篡改指的是对数据库中的数据未经授权进行修改,从而使其失去真实性的行为。篡改的形式多种多样,在造成影响之前也是很难被发现的。一般来说,发生篡改的现象主要有个人利益驱动、隐藏证据、恶作剧和无知等因素。 (2)损坏 信息系统中数据的丢失是数据库安全所面对的另一个威胁。其表现的形式是:表和整个数据库部分或全部被删除、移走或破坏。产生损坏的原因主要有破坏、恶作剧和病毒等。 (3)窃取 窃取一般是针对敏感数据,窃取的手法除了将数据复制到软盘之类的可移动的介质上以外,也可以把数据打印后取走。导致窃取的原因有工商业间谍的窃取、不满和要离开的员工的窃取,还有就是被窃取的数据可能比想象中更有价值。
2.数据库的故障 数据库的故障是指从保护安全的角度出发,数据库系统中会发生的各种故障。这些故障主要包括:事务内部的故障、系统故障、介质故障和计算机病毒与黑客等。 (1)事务(Transaction)内部的故障多发生于数据的不一致性, (2)系统故障又称软故障,是指系统突然停止运行时造成的数据库故障。 (3)介质故障又称硬故障,主要指外存故障。 (4)病毒所致的故障。 (5)黑客所致的故障 。
8.2.2 数据库安全系统特性 1.数据独立性 数据独立于应用程序之外。理论上数据库系统的数据独立性分为以下两种。 8.2.2 数据库安全系统特性 1.数据独立性 数据独立于应用程序之外。理论上数据库系统的数据独立性分为以下两种。 (1)物理独立性。数据库的物理结构的变化不影响数据库的应用结构,从而也就不能影响其相应的应用程序。这里的物理结构是指数据库的物理位置、物理设备等。 (2)逻辑独立性。数据库逻辑结构的变化不会影响用户的应用程序,数据类型的修改、增加,改变各表之间的联系都不会导致应用程序的修改。 这两种数据独立性都要靠DBMS来实现。到目前为止,物理独立性已经能基本实现,但逻辑独立性实现起来非常困难,数据结构一旦发生变化,一般情况下,相应的应用程序都要作或多或少的修改。追求这一目标也成为数据库系统结构复杂的一个重要原因。
2.数据安全性 一个数据库能否实现防止无关人员得到他不应该知道的数据,是数据库是否实用的一个重要指标。如果一个数据库对所有的人都公开数据,那么这个数据库就不是一个可靠的数据库。 3.数据的完整性 (1)正确性。 (2)有效性。 (3)一致性。
4.并发控制 如果数据库应用要实现多用户共享数据,就可能在同一时刻多个用户要存取数据,这种事件叫做并发事件。当一个用户取出数据进行修改,在修改存入数据库之前如有其他用户再取此数据,那么读出的数据就是不正确的。这时就需要对这种并发操作施行控制,排除和避免这种错误的发生,保证数据的正确性。 5.故障恢复 如果数据库系统运行时出现物理或逻辑上的错误,系统能尽快地恢复正常,这就是数据库系统的故障恢复功能
8.2.3 数据库安全性 1.安全性级别 对数据库不合法的使用称为数据库的滥用。数据库的滥用可分为无意滥用和恶意滥用。无意滥用主要是指经过授权的用户操作不当引起的系统故障、数据库异常等现象。恶意滥用主要是指未经授权的读取数据(即偷窃信息)和未经授权的修改数据(即破坏数据)。 数据库的完整性尽可能的避免对数据库的无意滥用。数据库的安全性尽可能避免对数据库的恶意滥用。为了防止数据库的恶意滥用,可以在下述不同的安全级别上设置各种安全措施。 (1)环境级:对计算机系统的机房和设备加以保护,防止物理破坏。 (2)职员级:对数据库系统工作人员,加强劳动纪律和职业道德教 育,并正确的授予其访问数据库的权限。 (3)操作系统级:防止未经授权的用户从操作系统层访问数据库。 (4)网络级:由于数据库系统允许用户通过网络访问,因此,网络软件内部的安全性对数据库的安全是很重要的。 (5)数据库系统级:检验用户的身份是否合法,检验用户数据库操作权限是否正确。
2.数据库的安全性机制 在一般计算机系统中,安全措施是一级一级层层设置的。 用户要进入计算机系统,系统首先根据输入的用户标识进行用户身份鉴定,只有合法的用户才准许进入计算机系统。对已经进入系统的用户,DBMS要进行存取控制,只允许用户执行合法操作。操作系统一级也会有自己的保护措施。数据最后还可以以密码形式存储在数据库中。数据库的安全机制主要有标识与鉴别、存取控制、视图以及加密等技术。 (1)标识与鉴别 (2)访问控制 (3)视图机制 (4)审计方法 (5)数据加密
8.2.4 数据库完整性 1.数据库完整性的分类 (1)静态完整性约束(状态约束) (2)动态完整性约束(变迁约束)
2.数据库完整性的定义与验证 (1)固有约束与隐式约束 (2)显式约束 (3)动态约束的定义
8.2.5 数据库并发控制 1.基于锁的并发控制技术 锁是数据项上的并发控制标志,它有两种类型:共享锁(Shared Lock,简称S锁)和排它锁(Exclusive Lock,简称X锁)。 基于锁的并发控制是事务对数据操作前必须获得对该数据的锁,完成操作后在适当时候释放锁,而得不到锁的事务处于等待状态。 (1)封锁协议 (2)封锁粒度 (3)死锁 (4)死锁的检测和处理 (5)死锁的预防
为了区别事务开始执行的先后,每个事务在开始执行时,由系统赋予一个唯一的、随时间增长的整数,称为时间戳(Time Stamp,TS)。 2.基于时间戳的并发控制技术 为了区别事务开始执行的先后,每个事务在开始执行时,由系统赋予一个唯一的、随时间增长的整数,称为时间戳(Time Stamp,TS)。 基于时间戳的并发控制是按时间戳的顺序对冲突进行处理,使一组事务的交叉执行等价于一个由时间戳确定的串行序列,其目的是保证冲突的读操作和写操作按照时间戳的顺序执行。
3.基于版本的并发控制技术 实质上,基于版本的并发控制方法是将版本管理引入到数据库应用中。数据库版本是数据库的一个视图,它反映了数据库在某种情况下的数据存储情况。多用户版本是指同一数据库在一次完整的设计过程中,对不同用户及同一用户在此过程中的不同时刻的多个数据视图。在应用开始时,每个应用将初始数据读至自己的工作区,形成该任务的初始版本。在任务的执行过程中,每一应用在自己的工作区内对数据进行操作,利用版本来记录每次操作的结果。由于操作是在各自的工作区内完成,所以可以并行进行,互不干扰。各任务结束后,将各任务的最终版本进行合并。
4.基于事务类的并发控制技术 利用存储过程(stored procedure)来访问数据库,假设每个存储过程属于一个互不相交的冲突类。一个冲突类里的过程仅存取数据库中的某一特定部分,而不同的冲突类则工作在数据库的不同部分。对每一个冲突类C均存在一个先进先出(First In First Out ,FIFO)的类队列(Class Queue ,CQ)。当一个事务T开始且T∈C,T被加入到CQ中。若T是队列CQ中唯一的事务,则T将被提交给数据管理器去执行;若在队列CQ中还有其它的事务,则T等待。当一个事务成为队列中的第一个事务并提交后,则从相应的队列中移出该事务,队列中下一个在等待的事务被提交执行。
8.2.6 数据库的备份与恢复 1.数据库的备份 (1)备份方案的评估 8.2.6 数据库的备份与恢复 1.数据库的备份 (1)备份方案的评估 对数据库备份方案的评估主要指的是在制订数据库备份方案之前必须对下列问题进行分析,在分析的基础上作出评估。 1)用的评估 2)技术评估 (2)数据库备份的类型 常用的数据库备份的方法有冷备份、热备份和逻辑备份三种。 1) 冷备份。 2) 热备份。 3)逻辑备份。
2.数据库的恢复 恢复技术大致可以分为三种:单纯以备份为基础的恢复技术、以备份和运行日志为基础的恢复技术和基于多备份的恢复技术。 (1)单纯以备份为基础的恢复技术 单纯以备份为基础的恢复技术是由文件系统恢复技术演变过来的,即周期性地把磁盘上的数据库复制或转储到磁带上。由于磁带是脱机存放的,系统对它没有任何影响。当数据库失效时,可取最近一次从磁盘复制到磁带上的数据库备份来恢复数据库,即把备份磁带上的数据库复制到磁盘的原数据库所在位置上。利用这种方法,数据库只能恢复到最近备份的一次状态,从最近备份到故障发生期间的所有数据库的更新数据将会丢失。这意味着备份的周期越长,丢失的更新的数据也就越多。
(2)以备份和运行日志为基础的恢复技术0 系统运行日志用于记录数据库运行的情况,一般包括三个内容:前像(Before Image,BI)、后像(After Image,AI)和事务状态。 所谓的前像是指数据库被一个事务更新时,所涉及的物理块更新后的影像,它以物理块为单位。前像在恢复中所起的作用是帮助数据库恢复更新前的状态,即撤销更新,这种操作称为撤销(undo)。 后像恰好与前像相反,它是当数据库被某一事务更新时,所涉及的物理块更新前的影像,其单位和前像一样以物理块为单位。后像的作用是帮助数据库恢复到更新后的状态,相当于重做一次更新。这种操作在恢复技术中称为重做(Redo)。 运行日志中的事务状态记录每个事务的状态,以便在数据库恢复时作不同处理。基于备份和日志为基础的这种恢复技术,当数据库失效时,可取出最近备份,然后根据日志的记录,对未提交的事务用前像卷回,这称为后恢复(Backward Recovery);对已提交的事务,必要时用后像重做,称向前恢复(Forward Recovery)。
(3)基于多备份恢复技术 多备份恢复技术的前提是每一个备份必须具有独立的失效模式(Independent Failure Mode),这样可以利用这些备份互为备份,用于恢复。所谓独立失效模式是指各个备份不致于因同一故障而一起失效。获得独立失效模式的一个重要的要素是各备份的支持环境尽可能地独立,其中包括不共用电源、磁盘、控制器以及CPU等。在部分可靠要求比较高的系统中,采用磁盘镜像技术,即数据库以双数据库的形式存放在二个独立的磁盘系统中,为了使失效模式独立,两个磁盘系统有各自的控制器和CPU,但彼此可以相互切换。在读数时,可以选读其中任一磁盘;在写数据时,两个磁盘都写入同样的内容,当一个磁盘中数据丢失时,可用另一个磁盘的数据来恢复。