数据库系统平安性考虑数据库管理系统〔DBMS〕是一个非常复杂的系统,检测和评估数据库的平安性,涉及到众多的参数、设置、选项和数据库本身的方方面面平安评测可以采用专家评测或运行评测系统两种方式,二者各有所长一方面,专家评测比评测系统具有更强的灵敏性,可以充分发挥专家的智能和经历另一方面,评测系统更适用于数据库系统定期的平安评测专家评估只是针对被评估时的状态,但是系统是在不断变化的,假如系统状态发生了变化〔比方添加了一些新用户,修改了某些用户的权限〕,也许会出现新的平安破绽定期聘请专家评估的本钱比较高,平安评测系统那么可以在系统状态发生变化后重新进展评测一、自主访问控制模型自主访问控制模型是基于用户身份的访问和控制在自主型访问平安模型中,每个用户都要被分配一定的权限,例如用户或者是被允许读取,或是被允许写入也就是说,在自主型访问平安模型中,对资源对象的“拥有〞是用户最核心的权限属性当某个用户要求访问某个数据库资源时,系统检查该用户对该资源的所有权限,或衍生出来的访问权限,假如通过,那么允许该访问在答应的方式下进展,假如不能通过,那么回绝继续访问系统在自主型平安模型中,拥有某种权限的用户可以自主地将其所拥有的权限传授给其他任意在系统中登录的用户,它是该模型存在的致命缺点。
自主访问平安模型的典型代表是存取矩阵DAC模型可对用户提供灵敏和易行的数据访问方式,但平安性相对较低在该模型中,尽管访问控制只在受权后才能得到,但攻击者也很容易越过访问的受权限制如当一个用户有权对某数据进展读操作时,它可以把这个权利传递给无权读此数据的人,而数据的所有者并不知道这一切一旦某个信息为用户所获得,那么该模型策略对信息的使用是不加任何限制的也就是说,在该模型中,尽管有自主型控制,对于非受权的人来说,非法读取数据是可能的,这样一来,系统就很容易受到类似特洛伊木马的攻击特洛伊木马可以改变系统的保护状态,使系统平安受到威胁二、改造数据库实现数据库平安〔一〕采用对数据库驱动程序进展平安扩展的方法在数据库存取接口上,通过扩展标准的SQL语句,透明地实现对数据库中敏感信息的加密和完好性保护,对关系数据库的操作可以采用SQLDDL和SQLDML语言,通过ODBC、.IDBC、BDE等数据库驱动程序实现对数据库中表格、记录或字段的存取控制;并对用户操作进展日志记录和审计,从内部增强关系数据库的存储和存取平安这种方式具有通用性,并且不会对数据库系统的性能造成大的影响该模型在常规数据库驱动程序中增加密钥管理、审计日志管理、完好性验证和数据加解密等平安扩展模块,通过附加的平安属性如数据库存储加密密钥和审计日志等与平安相关的信息来加强数据库的平安;同时,增加数据库主密钥设置、更新和加密算法设置等平安属性来进步SQL语句的平安性。
〔二〕采用基于视图的数据库平安模型SQLServer通用平安模型的特点是将权限赋予表,用户要查询数据、更改数据或对数据库进展其它操作时,直接存取表,用户只要有对表的Select权限,就可以检索表中所有的信息但是,现实世界中大多数的应用都要求对信息本身划分为不同的保密级别,如军队中对信息的分类就不能简单地划分为公开和保密2类,而是需要更加细致的分类,可能对同一记录内的不同字段都要划分为不同的保密级别甚至同一字段的不同值之间都要求划分为不同的保密级别多级保密系统中,对不同数据项赋予不同的保密级别然后根据数据项的密级,给存取本数据项的操作赋予不同的级别SQLServer通用平安形式显然不能将不同的字段和同一字段的不同值分为不同的保密级别这是因为用户直接存取存储数据的数据库表采用基于视图的数据库平安模型这个问题就可迎刃而解利用视图限制对表的存取和操作:通过限制表中的某些列来保护数据;限制表中的某些行来保护数据视图和权限创立一个视图后,必须给视图授予对象权限,用户才能存取和操作视图中的数据,不必给作为视图表的根底表授予权限三、应用解析应用解析是数据库平安中间件〔DBSAPI〕的重要组成部分,包括语法分析、词法分析、加密字典信息的检索、访问控制字典信息的检索、SQL命令的加密变换等,目前语法分析并不能识别所有类型的SQL命令,可以不考虑那些与加脱密无关的SQL命令,遇到不认识的SQL命令,那么直接提交给DBMS的语法词法分析.基于如今对于数据库信息已做特殊处理,SQL恳求返回的信息已经不是其本身的价值方式,同时为了更好地实现业务层将用户和数据访问的复杂性相隔离的目的,将用户界面层的所有数据访问恳求提取出来,放到数据访问应用解析模块中.这不但将用户与数据访问完全隔离,而且大大改善了对数据访问操作的查询和管理效率.当用户界面层从客户端向数据库层发出对数据库的恳求时,首先对应的SQL恳求进展语法词法分析,接着检索访问控制和加密字典,根据访问控制和加密定义需求进展相关操作,然后提交给DBMS作数据提取处理,最后将结果返回到用户界面层,数据访问过程中实时出现的错误也返回用户界面层.。