首页 理论教育 数据库保护措施及权限管理-计算机网络安全

数据库保护措施及权限管理-计算机网络安全

时间:2023-11-23 理论教育 版权反馈
【摘要】:但病毒发作后造成的数据库数据的损坏还是需要操作者去恢复的。必须建立数据库系统的保护机制,提供数据保护功能。数据库保护主要是指数据库的安全性、完整性、并发控制和数据库恢复。数据库系统不允许一个未经授权的用户对数据库进行操作。每当用户发出数据库的操作请求后,DBMS查找数据字典,根据用户权限进行合法权益检查。

数据库保护措施及权限管理-计算机网络安全

(一)数据库的故障类型

数据库的故障是指从保护安全的角度出发,数据库系统中会发生的各种故障。这些故障主要包括:事务内部的故障、系统故障、介质故障和计算机病毒与黑客等。

事务(Transaction)是指并发控制的单位,它是一个操作序列。在这个序列中的所有操作只有两种行为,要么全都执行,要么全都不执行。因此,事务是一个不可分割的单位。事务以COMMIT语句提交给数据库,以ROLLBACK撤销已经完成的操作。

事务内部的故障大多源于数据的不一致性,主要表现为以下几种情况。

(1)丢失修改:两个事务Ti和T2读入同一数据,T2的提交结果破坏了Ti提交的结果,Ti对数据库的修改丢失,造成数据库中数据错误

(2)不能重复读:事务Ti读取某一数据,事务T2读取并修改了同一数据,Ti为了对读取值进行校对再次读取此数据,便得到了不同的结果。例如,Ti读取数据B-200,T2也读取B并把它修改为300,那么T,再读取数据日得到300与第一次读取的数值便不一致。

(3)“脏”数据的读出,即不正确数据的读出。Ti修改某一数据,T2读取同一数据,但Ti由于某种原因被撤销,则T2读到的数据为“脏”数据。例如:Ti读取数据B值为100修改为200,则T2读取B值为200,但由于事务Ti又被撤销,Ti所做的修改被宣布无效,B值恢复为100,而T2读到的数据是200,与数据库内容不一致。

系统故障又称软故障,是指系统突然停止运行时造成的数据库故障。如CPU故障、突然断电和操作系统故障,这些故障不会破坏数据库,但会影响正在运行的所有事务,因为数据库缓冲区中的内容会全部丢失,运行的事务非正常终止,从而造成数据库处于一种不正确的状态。这种故障对于一个需要不停运行的数据库来讲损失是不可估量的。

恢复子系统必须在系统重新启动时,让所有非正常终止事务ROLLBACK把数据库恢复到正确的状态。

介质故障又称硬故障,主要指外存故障。例如,磁盘磁头碰撞,瞬时的强磁场干扰。这类故障会破坏数据库或部分数据库,并影响正在使用数据库的所有事务。所以,这类故障的破坏性很大。

病毒是一种计算机程序,然而这种程序与其他程序不同的是它能破坏计算机中的数据,使计算机处于不正常的状态,影响用户对计算机的正常使用。病毒具有自我繁殖的能力,而且传播速度很快。有些病毒一旦发作就会马上摧毁系统。

针对计算机病毒,现在已出现了许多种防毒和杀毒的软、硬件。但病毒发作后造成的数据库数据的损坏还是需要操作者去恢复的。

各种故障可能会造成数据库本身的破坏,也可能不破坏数据库,但使数据不正确。对于数据库的恢复,其原理就是“冗余”,即数据库中的任何一部分数据都可以利用备份在其他介质上的冗余数据进行重建。

黑客与病毒不同,是近年来新出现的名词。从某种角度来讲,黑客的危害要比计算机病毒更大。黑客往往是一些精通计算机网络和软、硬件的计算机操作者,他们利用一些非法手段取得计算机的授权,非法地读取甚至修改其他计算机数据,给用户造成巨大的损失。

对于黑客,更需要加强对计算机数据库的安全管理。这种安全管理对那些机密性的数据库显得尤为重要。

(二)数据库的数据保护

在一些大型数据库中存储着大量机密性的信息,如国防、金融和军事等,若这些数据库中的数据遭到破坏,造成的损失难以估量。所以数据库的保护是数据库运行过程中一个不可忽视的方面。必须建立数据库系统的保护机制,提供数据保护功能。

数据库保护主要是指数据库的安全性、完整性、并发控制和数据库恢复。

1.数据库的安全性

安全性问题是所有计算机系统共有的问题,并不是数据库系统所特有的,但由于数据库系统数据量庞大且多用户存取,安全性问题就显得尤其突出。由于安全性的问题可分为系统问题与人为问题,所以一方面我们可以从法律、政策、伦理道德等方面约束用户,实现对数据库的安全使用;另一方面还可以从物理设备、操作系统等方面加强保护,保证数据库的安全。另外,还可以从数据库本身实现数据库的安全性保护。

在一般的计算机系统中,安全措施是层层设置的。

(1)用户标识和鉴定。

通过核对用户的名字或身份(ID),决定该用户对系统的使用权。数据库系统不允许一个未经授权的用户对数据库进行操作。

当用户登录时,系统用一张用户口令表来鉴别用户身份。表中只有两个字段:用户名和口令,并且用户输入的口令并不显示在屏幕上或以某种符号代替,如“木”号。系统根据用户的输入字段鉴别此用户是否为合法用户。这种方法简便易行,但保密性不是很高。

另一种标识鉴定的方法是没有用户名,系统提供相应的口令表,这个口令表不是简单地与用户输入的口令比较,若相等就合法,而是系统给出一个随机数,用户按照某个特定的过程或函数进行计算后给出结果值,系统同样按照这个过程或函数对随机数进行计算,如果与用户输入的相等则证明此用户为合法用户,可以为用户分配权限。否则,系统认为此用户根本不是合法用户,拒绝其访问数据库系统。

(2)存取控制。

对存取权限的定义称为授权。这些定义经过编译后存储在数据字典中。每当用户发出数据库的操作请求后,DBMS查找数据字典,根据用户权限进行合法权益检查。若用户的操作请求超出了定义的权限,系统就拒绝此操作。授权编译程序和合法权益检查机制一起组成了安全性子系统。

在数据库系统中,不同的用户对象有不同的操作权力。对数据库的操作权限一般包括查询权、记录的修改权、索引的建立权和数据库的创建权。应将这些权限按一定的规则授予用户,以保证用户的操作在自己的权限范围之内。数据库的授权由SQL的GRANT(授权)和REVOKE(回收)来完成。

下面是3个安全性公理,第②和第③公理都假定允许用户更新数据。①如果用户i对属性集A的访问(存取)是有条件的选择访问(带谓词P),那么用户i对A的每个子集也是可以有条件的选择访问(但没有一个谓词比P强)。②如果用户i对A的访问是有条件的更新访问(带谓词P),那么用户i对A也可以是有条件的选择访问(但谓词不能比P强)。③如果用户i对属性A不能进行选择访问,那么用户i也不能对A有更新访问。

(3)数据分级。

有些数据库系统对安全性的处理是把数据分级。这种方案为每一数据对象(文件、记录或字段等)赋予一定的保密级。例如,绝密级、机密级、秘密级和公用级。对于用户,也分成类似的级别,系统便可制定如下两条规则。①用户i只能查看比他级别低的或同级的数据。②用户i只能修改和他同级的数据。

在第②条中,用户i不能修改比他级别高的数据,但同时他也不能修改比他级别低的数据,这是为了管理上的方便。如果用户i要修改比他级别低的数据,那么首先要降低用户i的级别或提高数据的级别使得两者之间的级别相等才能进行修改操作。

数据分级法是一种独立于值的一种简单的控制方式。它的优点是系统能执行“信息流控制”。在授权矩阵方法中,允许凡有权查看秘密数据的用户就可以把这种数据复制到非保密的文件中,那么就有可能使无权用户也可接触秘密数据了。在数据分级法中,就可以避免这种非法的信息流动。(www.xing528.com)

然而,这种方案只在某些专用系统中才有用。

(4)数据加密。

为了更好地保证数据的安全性,可用密码存储口令、数据,对远程终端信息用密码传输防止中途被非法截获等。我们把原始数据称为明文,用加密算法对明文进行加密。加密算法的输入是明文和密钥,输出是密码文。加密算法可以公开,但加密一定是保密的。密码文对于不知道加密钥的人来说是不易解密的。

数据加密不是绝对安全的,有些人掌握计算机的加密技术,很有可能会将加密文解密。目前比较流行的加密算法是“非对称加密法”,可以随意使用加密算法和加密钥,但相应的解密钥是保密的。因此非对称加密算法有两个密钥,一个用于加密,另一个用于解密。而且解密钥不能从加密钥推出。即便有人能进行数据加密,如果不授权解密,他也几乎不可能解密。

明钥加密法的具体步骤如下。

1)任意选择两个100位左右的质数p、q,计算qpr*=。

2)任意选择一个整数e,而e与(p*q)*(q-1)是互质的,把e作为加密钥(一般,比p、q大的质数就可选作)。

3)求解密钥d,使得(d*e)mod(p-1)*(q-1)=1。

4)r、e可以公开,但d是保密的。

5)对明文x进行加密,得到密文c,计算公式是c=xemodr。

6)对密文c进行解密,得到明文x,计算公式是x=cdmodr。

由于只公开r、e而求r的质因子几乎是不可能的,因此从r、e求d也几乎不可能,这样d就可以保密。只有用户知道d后,才能对密文进行解密。

这个方法是基于下列事实提出的。①已经存在一个快速算法,能测试一个大数是不是质数;②还不存在一个快速算法,去求一个大数的质因子。例如,有人曾计算过,测试一个130位的素数是否质数,计算机约需7min时间;但在同样的机器上,求两个63位质数的乘积的质因子约要花40×1015min的时间。

2.数据的完整性

数据的完整性主要是指防止数据库中存在不符合语义的数据,防止错误信息的输入和输出。数据完整性包括数据的正确性、有效性和一致性。

实现对数据的完整性约束要求系统有定义完整性约束条件的功能和检查完整性约束条件的方法。数据库中的所有数据都必须满足自己的完整性约束条件,这些约束包括以下几种。

(1)数据类型与值域的约束。

数据库中每个表的每个域都有自己的数据类型约束条件,如字符型、整形和实型等。在每个域中输入数据时,必须按照其约束条件进行输入,否则,系统不予受理。

对于符合数据类型约束的数据,还要符合其值域的约束条件。例如,一个整形数据只允许输入0~100之间的值,如果用户输入200便不符合约束条件。

(2)关键字约束。

关键字是用来标识一个表中唯一的一条记录的域,一个表中主关键字可以多于一个。

关键字约束又分为主关键字约束和外部关键字约束。主关键字约束要求一个表中的主关键字必须唯一,不能出现重复的主关键字值。外部关键字约束要求一个表中的外部关键字的值必须与另外一个表中主关键字的值相匹配。

(3)数据联系的约束。

一个表中的不同域之间也可以有一定的联系,从而应满足一定的约束条件。如表中有3个域:单价、数量和金额,它们之间符合金额=单价*数量,那么,当某记录的单价与数量一旦确定之后,它的金额就必须被确定。

以上所有约束都叫作静态约束,即它们都是在稳定状态下必须满足的条件。还有一种约束叫作动态约束,动态约束是指数据库中的数据从一种状态变为另外一种状态时,新、旧值之间的约束条件。例如,更新一个人的年龄时,新值不能小于旧值。

对于约束条件,按其执行状态分为立即执行约束和延迟执行约束。立即执行约束是指执行用户事务时,对事务中某一更新语句执行完成后马上对此数据所对应的约束条件进行完整性检查。延迟执行约束是指在整个事务执行结束后才对对应的约束条件进行完整性检查。

数据库系统可以由DBMS定义管理数据的完整性,完整性规则经过编译后,就被放人数据字典中,一旦进入系统,便开始执行这些规则。这种完整性管理方法比让用户的应用程序进行管理效率要高,而且规则集在数据字典中,易于从整体上进行管理。

对于SQL语言来说,只提供了安全性控制的功能,而没有定义完整性约束条件。

当前,大多数的DBMS都具有“触发器”功能。触发器用来保证当记录被插入、修改和删除时能够执行一个与其表有关的特定的事务规则,保证数据的一致性与完整性,而且,触发器的使用免除了利用前台应用程序进行控制数据完整性的烦琐工作。

3.数据库并发控制

目前,多数数据库都是大型多用户数据库,所以数据库中的数据资源必须是共享的。为了充分利用数据库资源,应允许多个用户并行操作数据库。数据库必须能对这种并行操作进行控制,即并发控制,以保证数据被不同的用户使用时的一致性。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈