论文部分内容阅读
[摘要]数据库技术已经被广泛应用于各行业,据有关报道,数据库的应用已经占到整个计算机应用的80%。数据库中的数据越来越重要,不论是在单机还是在网络环境下,数据库系统受到各个方面的威胁,数据存储的安全设计问题越来越引起人们的重视。
[关键词]数据库 管理系统 安全设计
中图分类号:TP3 文献标识码:A 文章编号:1671—7597(2009)1010069—01
数据库安全涉及的范围很广,本文主要从数据库管理系统层所提供的数据库安全和保护功能角度来设计。主要有以下四个方面:1,安全性(security)保护:即防止非法用户对数据库的非法使用,以避免数据的泄露、篡改或破坏。2,完整性(integrity)保护:即保证数据源的正确性和一致性。3,并发控制(concurrent control):即保证多个用户能共享数据库,并维护数据的一致性。4,数据库恢复(database recovery);即在系统失效后的数据库恢复,配合定时备份数据库,使数据库不丢失数据。
一、数据库的安全性保护
采取前台和后台相结合的安全性保护措施来共同维护数据库应用系统的安全。
1,用户身份鉴别。对于后台数据库,服务器主机用户如果采用了Windows集成登录方式,只有合法的服务器计算机用户才能登录数据库,远程数据库用户采用身份验证方式,给远程每一个合法用户建立用户名和密码,在用户连接数据库时,需要验证。只有通过验证的用户才能顺利进入数据库。对于前台程序,同样采取此方法,在数据库中为每一个应用系统用户建立了用户编号、用户名、密码及权限,每次登录时都要进行身份验证,只有合法的系统用户才能进入该系统。
2,权限控制。对于后台数据库,可以根据用户终端的不同而设置不同的权限。对于前台程序,系统设置要更加细致,首先对每个合法用户在建立用户时就设好权限等级,具有不同权限的用户看到的同一模块的窗体是有差别的。再次,对外部用户,只设置了有限的查询功能,故不会危及到数据库系统的安全。
3,视图机制。视图机制就是把要保密的数据对无权查看这些数据的用户隐藏起来,并且用户看到的数据仍然存在于原来的地方,从而自动地对数据库提供根本性的安全保护。
二、数据库的完整性保护
数据库的完整性是指数据库中数据的正确性、一致性和相容性。完整性是防止合法用户使用数据库时向数据库中加入不合语义的数据。保证数据库中数据的完整性的方法之一设置完整性检查,对数据库中的数据设置一些约束条件,数据库管理系统自动检查。完整性约束条件的作用对象分为列、元组和关系三种级别,其中对列的约束主要指对其取值类型、范围、精度、排序等的约束条件。对元组的约束主要指对记录中各个属性之间的联系的约束条件。对关系的约束是指对若干记录间、关系集合上以及关系之间联系的约束条件。在一个数据库管理系统中,完整性约束功能一般包括完整性约束条件设置和检查两部分,一般通过完整性约束语句给出。
三、数据库的并发控制
在数据库系统运行过程中,如果数据库管理系统可以同时接纳多个事务,事务可以在时间上重叠执行,则称这种执行方式为并发访问(concurr ent access)。实现数据库并发控制的方法很多,常用的是封锁技术。所谓封锁即是在某一时间内禁止某用户对数据对象做某些操作以避免产生数据不一致的问题。基本的封锁一般有排它锁(x锁)和共享锁(s锁)两种类型。
在任何数据库系统中,不可避免地会产生死锁现象。数据库管理系统使用的SQLServer数据库也不例外,死锁的发生并不可怕,最重要的发生死锁后能尽快消除,使系统重新正常运转。在sQL Server系统中,在以下两种情况下都可能发生死锁现象。第一种情况是,当两个事务分别锁定了两个单独的对象,这时每个事务又要求在对方已经封锁的对象上获得一个锁,因此每一个事务都必须等待另外一个事务释放占有的锁,这时,就发生了死锁。这种死锁是最典型的死锁形式。死锁的第二种情况是,在一个数据库中,有若干个长时间运行的事务执行并行的操作,当查询分析器处理一种非常复杂的连接查询时,由于不能控制处理的顺序,有可能发生死锁现象。当发生死锁时,SQL Server系统可以自动检测到,然后通过自动取消其中一个事务来结束死锁。在发生死锁的两个事务中,根据事务处理时间的长短作为规则来确定它们的优先级。处理时间长的事务具有较高的优先级,处理时间短的事务具有较低的优先级。在发生死锁冲突时,保留优先级高的事务,取消优先级低的事务。
四、数据库的恢复
数据库恢复的基本原理其实十分简单,就是数据库中任何一部分数据可以利用存储在系统其他存储器上的冗余数据来重建。数据库恢复首先要建立冗余数据,然后利用这些冗余数据实施恢复。建立冗余数据最常用的技术是数据转储和日志文件。
1,数据转储。所谓数据转储即由DBA(数据库管理员)定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文件称为后备副本或后援副本。当数据库遭到破坏后就可以利用后备副本把数据库恢复至某个一致性状态。转储可以分为静态转储和动态转储。静态转储指的是转储期间不允许对数据库有任何操作(包括存取、修改等),静态转储操作相对简单,但要求在数据库无用户使用的情况下进行;动态转储指的是在转储期间允许对数据库进行存取等操作,即数据转储和用户事务并发进行,动态存储虽然可以随时进行,但由于与用户事务并行执行,不容易保证转储结束时后备副本上数据的一致性,因此实现起来技术要求较高。
数据转储还可分为海量转储与增量转储。海量转储指的是每次转储数据库的全部数据,而增量转储指的是每次只转储数据库中上次转储以来所产生变化的那些数据,即数据库中的数据只转储其修改过的物理块,这样转储的数据量少,也不必花很多时间,但需经常转储,从而减少事故发生时更新丢失。由于海量转储数据量大,不易进行,因此,增量转储往往是一种有效的方法。
2,日志文件。日志文件是记录每一次对数据库进行更新操作的文件,该文件由数据库管理系统自动建立和记录。文件中包括的内容有t事务名称、操作时间、操作类型、修改前数据值以及修改后数据值等等,还有事务的开支、提交(COMMIT)及回滚(ROLLBACK)等执行情况记录。在动态转储方式中必须建立日志文件,后各副本和日志文件综合起来才能有效地恢复数据库。静态转储方式也可建立日志文件。日志文件在数据恢复中起着非常重要的作用,为了保证数据库是可恢复的,日志文件登记时必须遵循两条原则;一是严格按照并行事务执行的时间次序登记;二是必须先写日志文件,后写数据库。
总而言之,为了实现数据库中的数据恢复,必须将数据转储与日志文件相结合才能完成。一般情况下,当数据库遭到破坏后,可以先用后备副本,将数据库恢复到拷贝此副本时的一致状态,再利用日志文件将拷贝后至破坏时刻所更改过的数据全部恢复。
[关键词]数据库 管理系统 安全设计
中图分类号:TP3 文献标识码:A 文章编号:1671—7597(2009)1010069—01
数据库安全涉及的范围很广,本文主要从数据库管理系统层所提供的数据库安全和保护功能角度来设计。主要有以下四个方面:1,安全性(security)保护:即防止非法用户对数据库的非法使用,以避免数据的泄露、篡改或破坏。2,完整性(integrity)保护:即保证数据源的正确性和一致性。3,并发控制(concurrent control):即保证多个用户能共享数据库,并维护数据的一致性。4,数据库恢复(database recovery);即在系统失效后的数据库恢复,配合定时备份数据库,使数据库不丢失数据。
一、数据库的安全性保护
采取前台和后台相结合的安全性保护措施来共同维护数据库应用系统的安全。
1,用户身份鉴别。对于后台数据库,服务器主机用户如果采用了Windows集成登录方式,只有合法的服务器计算机用户才能登录数据库,远程数据库用户采用身份验证方式,给远程每一个合法用户建立用户名和密码,在用户连接数据库时,需要验证。只有通过验证的用户才能顺利进入数据库。对于前台程序,同样采取此方法,在数据库中为每一个应用系统用户建立了用户编号、用户名、密码及权限,每次登录时都要进行身份验证,只有合法的系统用户才能进入该系统。
2,权限控制。对于后台数据库,可以根据用户终端的不同而设置不同的权限。对于前台程序,系统设置要更加细致,首先对每个合法用户在建立用户时就设好权限等级,具有不同权限的用户看到的同一模块的窗体是有差别的。再次,对外部用户,只设置了有限的查询功能,故不会危及到数据库系统的安全。
3,视图机制。视图机制就是把要保密的数据对无权查看这些数据的用户隐藏起来,并且用户看到的数据仍然存在于原来的地方,从而自动地对数据库提供根本性的安全保护。
二、数据库的完整性保护
数据库的完整性是指数据库中数据的正确性、一致性和相容性。完整性是防止合法用户使用数据库时向数据库中加入不合语义的数据。保证数据库中数据的完整性的方法之一设置完整性检查,对数据库中的数据设置一些约束条件,数据库管理系统自动检查。完整性约束条件的作用对象分为列、元组和关系三种级别,其中对列的约束主要指对其取值类型、范围、精度、排序等的约束条件。对元组的约束主要指对记录中各个属性之间的联系的约束条件。对关系的约束是指对若干记录间、关系集合上以及关系之间联系的约束条件。在一个数据库管理系统中,完整性约束功能一般包括完整性约束条件设置和检查两部分,一般通过完整性约束语句给出。
三、数据库的并发控制
在数据库系统运行过程中,如果数据库管理系统可以同时接纳多个事务,事务可以在时间上重叠执行,则称这种执行方式为并发访问(concurr ent access)。实现数据库并发控制的方法很多,常用的是封锁技术。所谓封锁即是在某一时间内禁止某用户对数据对象做某些操作以避免产生数据不一致的问题。基本的封锁一般有排它锁(x锁)和共享锁(s锁)两种类型。
在任何数据库系统中,不可避免地会产生死锁现象。数据库管理系统使用的SQLServer数据库也不例外,死锁的发生并不可怕,最重要的发生死锁后能尽快消除,使系统重新正常运转。在sQL Server系统中,在以下两种情况下都可能发生死锁现象。第一种情况是,当两个事务分别锁定了两个单独的对象,这时每个事务又要求在对方已经封锁的对象上获得一个锁,因此每一个事务都必须等待另外一个事务释放占有的锁,这时,就发生了死锁。这种死锁是最典型的死锁形式。死锁的第二种情况是,在一个数据库中,有若干个长时间运行的事务执行并行的操作,当查询分析器处理一种非常复杂的连接查询时,由于不能控制处理的顺序,有可能发生死锁现象。当发生死锁时,SQL Server系统可以自动检测到,然后通过自动取消其中一个事务来结束死锁。在发生死锁的两个事务中,根据事务处理时间的长短作为规则来确定它们的优先级。处理时间长的事务具有较高的优先级,处理时间短的事务具有较低的优先级。在发生死锁冲突时,保留优先级高的事务,取消优先级低的事务。
四、数据库的恢复
数据库恢复的基本原理其实十分简单,就是数据库中任何一部分数据可以利用存储在系统其他存储器上的冗余数据来重建。数据库恢复首先要建立冗余数据,然后利用这些冗余数据实施恢复。建立冗余数据最常用的技术是数据转储和日志文件。
1,数据转储。所谓数据转储即由DBA(数据库管理员)定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文件称为后备副本或后援副本。当数据库遭到破坏后就可以利用后备副本把数据库恢复至某个一致性状态。转储可以分为静态转储和动态转储。静态转储指的是转储期间不允许对数据库有任何操作(包括存取、修改等),静态转储操作相对简单,但要求在数据库无用户使用的情况下进行;动态转储指的是在转储期间允许对数据库进行存取等操作,即数据转储和用户事务并发进行,动态存储虽然可以随时进行,但由于与用户事务并行执行,不容易保证转储结束时后备副本上数据的一致性,因此实现起来技术要求较高。
数据转储还可分为海量转储与增量转储。海量转储指的是每次转储数据库的全部数据,而增量转储指的是每次只转储数据库中上次转储以来所产生变化的那些数据,即数据库中的数据只转储其修改过的物理块,这样转储的数据量少,也不必花很多时间,但需经常转储,从而减少事故发生时更新丢失。由于海量转储数据量大,不易进行,因此,增量转储往往是一种有效的方法。
2,日志文件。日志文件是记录每一次对数据库进行更新操作的文件,该文件由数据库管理系统自动建立和记录。文件中包括的内容有t事务名称、操作时间、操作类型、修改前数据值以及修改后数据值等等,还有事务的开支、提交(COMMIT)及回滚(ROLLBACK)等执行情况记录。在动态转储方式中必须建立日志文件,后各副本和日志文件综合起来才能有效地恢复数据库。静态转储方式也可建立日志文件。日志文件在数据恢复中起着非常重要的作用,为了保证数据库是可恢复的,日志文件登记时必须遵循两条原则;一是严格按照并行事务执行的时间次序登记;二是必须先写日志文件,后写数据库。
总而言之,为了实现数据库中的数据恢复,必须将数据转储与日志文件相结合才能完成。一般情况下,当数据库遭到破坏后,可以先用后备副本,将数据库恢复到拷贝此副本时的一致状态,再利用日志文件将拷贝后至破坏时刻所更改过的数据全部恢复。