多层数据库损害控制系统设计研究

时间:2022-04-16 09:25:14

多层数据库损害控制系统设计研究

摘要:传统的数据库损害控制是一阶段的,在损害评估期间损害会扩散。本文我们给出名为一种多阶段数据库损害控制系统的设计与实现。通过这种方法,系统保证在损害评估期间不会发生损害扩散。

关键词:多层数据库损害控制;系统设计

最近,越来越多的人发现现有的安全的系统对于多种攻击来说依旧易于攻击,现有安全机制缺乏阻止攻击能力。入侵容忍系统不同于传统的安全系统,扩展传统安全系统经历攻击后能够生存或可操作。入侵容忍系统的焦点在于面临攻击时有能力提供持续的基本服务。本文中,我们给出一个多阶段数据库损害控制的完整模型,并且设计和实现一个多阶段数据库损害控制系统。本系统的关键特性是实现多阶段损害控制,因此能够确保修复期间不会存在损害漏出。同时能立即控制多个恶意事务造成的损害,没有损害漏出,而且对于最终用户是透明的,因此数据库应用开发人员感觉不到损害控制的复杂。

1多级数据库控制元素

1.1一阶段损害控制

可生存数据库系统执行一阶段损害控制,只对修复管理鉴别出被破坏的数据项进行控制,直到它们被修复。一个被控制的数据项不能被新的事务读取或更新。

1.2多阶段损害控制

可生存数据库系统实行多阶段损害控制:(1)一旦恶意事务B被发现,一组特殊的数据项,记做SE,将被立即控制。SE的定义是被B破坏的数据集,记做SD,是SE的子集。这个阶段叫做最初控制。最初控制应该迅速完成。被控制的数据集被称作控制集。为确保最初控制之后没有损害扩散,每一个活动事务应该被回滚到SE被控制之前。(2)整个多阶段损害控制过程是一系列控制集,即SE,S1,S2,...,Sk,...,这些集合汇聚到一个空集合¥,SE是最初控制的结果,而且可能包括很多错误控制的未被损害的数据项。Si(i>=1)是解除错误控制数据项或已经被修复的数据项的解除控制操作集合的结果。作为结果,当i<j时Sj包含于Si。当这个集合为空集时,所有被控制的损害都被修复,没有对象需要被控制了。解除控制操作通常非为几个解除阶段,尽管这些解除阶段能够同时存在。多阶段控制的优点在于修复期间没有损害漏出以及修复非常简便。

2应对多个恶意事务的算法设计

我们针对多个恶意事务提出一种多阶段控制算法,能够保证被控制的数据库部分不会有损害泄漏。处理多个恶意事务的具体算法如下:When系统只有一个恶意事务Bi正在被修复,且恶意事务Bj被发现:控制操作:(a)回滚所有当前活动事务(b)设置t2为当前时间(c)设置t1的值为min(tBis,tBjs)。这里tBis和tBjs分别是Bi及Bj开始时间。注意Bj可能早于Bi开始。(d)在U_SET被随后解除控制操作调整之后,允许新事务进入。解除控制操作:(1)Case1Bj早于Bi提交(a)从U_SET中移除所有数据(b)停止当前所有解除控制阶段(c)通过扫描Bj开始时间的日志来重启解除控制阶段A、B和C。被重启的阶段现在应该处理Bj和Bi,而不是仅仅处理Bi。例如,阶段A应该只把Bi和Bj都没破坏的数据项放入U_SET。(d)通过扫描Bj开始时间的日志来重启修复进程(连同解除控制阶段D)。被重启的修复进程现在应该处理Bi和Bj。(e)随时将解除控制的数据项放入U_SET。(2)Case2Bj晚于Bi提交If没有解除控制阶段完成这部分包含Bj提交之后执行操作的日志的扫描继续每一个解除阶段,方法是每一个控制阶段调整为不仅仅处理Bi,而是处理Bi和Bj。Else对于每个已经扫描到某些Bj提交之后执行的操作的解除控制阶段(包括修复进程)(a)停止解除控制阶段(或修复进程)(b)移除Bj提交之后被更新而且被这个阶段(或进程)从U_SET中解除控制的数据项(c)通过重新扫描Bj开始以后的日志重启这个解除控制阶段(或修复进程)。重启的阶段(或修复进程)现在应该处理Bj和Bi上述算法确保所有被恶意事务引起的损害将在恶意事务被检测到的时候立刻被控制,并且在如何时间点,不会有损害从被控制的数据库部分泄漏出去。

3系统组成

本系统的主要组成包括:控制执行器、解除控制执行器。系统的关键操作是通过三个主要事件触发的。

3.1控制执行器

当控制执行器从它的消息队列里取回一个恶意事务,它将执行算法1中的控制操作。特别的,它将(1)停止执行新事务,(2)中止所有活动事务,(3)调整控制时间窗口,(4)在从解除控制器和修复管理报告U_SET已经调整的“准备好”消息后,允许新事务执行。由于TRANS_LIST表包括活动事务的标识,控制执行器能够要求DBMS中止这些事务。因为事务的开始时间也保持在TRANS_LIST表,调整控制时间窗口将会很容易。当一个新的用户事务在上述控制操作完成后到达时,控制执行器需要这样实现损害控制:在控制时间窗口内更新的任何数据项都不允许访问,除非是U_SET中的对象。控制管理算法如下所示。注意损害控制管理的实现以SQL语句为单位而不是事务,因为:(1)读提取也是以SQL语句为单位;(2)在某些事务里某些稍晚的SQL语句执行可能依赖于先前的语句;(3)这中方法能够实现更快的控制检查。对于有多个SQL语句的事务,我们不检查任何其他SQL语句的读操作,就能够拒绝或延迟这个事务的访问。

3.2解除控制执行器

解除控制执行器负责解除控制阶段。为了实现控制,系统需要保持事务类型间的依赖关系。特别的,利用“类型图”表保持类型依赖。

作者:任强 单位:中国人民银行廊坊市中心支行

参考文献:

[1]孙玉海,孟丽荣.基于多级入侵容忍的数据库安全解决方案[J].计算机工程与设计,2005(03).