访问控制机制在数据库中的应用研究
2010-06-13钮小勇韩桂明
钮小勇,韩桂明
1.江苏省楚州职业教育中心校,江苏淮安 223200
2.江苏盐城市信息工程技术学校,江苏盐城 223200
访问控制机制在数据库中的应用研究
钮小勇1,韩桂明2
1.江苏省楚州职业教育中心校,江苏淮安 223200
2.江苏盐城市信息工程技术学校,江苏盐城 223200
本文在明确信息安全重要性的基础上,阐述了访问控制机制的概念,分析了访问控制机制在数据库中的工作原理,并详细研究了访问控制机制在数据库中的应用。
数据库;访问控制机制;数据安全
随着信息技术及网络技术的发展,数据库的应用越来越广。如何保证数据库的安全已经成为迫切需要解决的问题。通过有效的访问控制机制保证数据库的安全性是一个非常有效的手段,本文重点研究访问控制机制在数据库中的应用。
1 访问控制机制的概念界定
访问控制机制是数据库系统安全性得到有效保障的重要机制,其本质就是按照系统权限,进行有效验证,实现授权用户才能进行相关的操作,而非授权用户视为非法用户,被禁止一切系统操作。访问控制机制的任务主要包括:鉴定对数据库提出操作请求的用户身份的合法性;明确用户的操作权限及规则;授权合法用户对应的访问机制等。
可见,通过访问控制机制能有效保证数据的完整性及保密性。
2 访问控制机制在数据库中的工作原理
访问控制机制的实现主要是通过解析器模块加以实现的。解析器主要负责分析用户提出的数据库访问请求语句,根据该SQL数据库访问语句,提取出其中涉及到的数据表名、字段名以及查询过滤条件等,然后生成一棵分析树。最后,根据生成分析树,判定该用户是否有对该数据库相关数据操作的权限。
解决器模块的工作流程如下描述:首先进行参数初始化,并针对用户访问请求分配对应的子线程;其次在cache中搜索该访问请求是否存在;接着根据访问机制对请求语句进行分析;最后根据分析树去执行请求并返回结果。其中,最关键点在于对请求语句进行分析,这主要借助于parse(thd)函数加以完成,也就是对SQL语句进行词法及语法的分析。
此外,访问控制机制也定义了检查接口的相关语句,比如:
bool mac_check_table_SELECT ( ) ;
bool mac_check_table_INSERT ( ) ;
bool mac_check_table_UPDATE ( ) ;
通过该3条语句,就能够对数据库常用的3个SQL操作语句(select,insert,update)进行访问控制的检测。因为3个函数都是返回bool型的数据,所以根据返回结果,如果是true,则表示末授权;反之,则表示授权。
3 访问控制机制在数据库中的应用
3.1 访问控制模块的组织结构
图1 访问控制模块的组成示意图
访问控制模块主要由3个子模块构成,涉及到:主客体信息的管理、主客体信息的维护以及客体的安全级别,他们之间的关系如图1所示。
针对一条SQL语句,通过访问控制模块进行检测时,首先是获取SQL语句主体的安全级别;其次是获取SQL语句客体的安全级别;最后是比较两者的安全级别。若符合访问控制模块规定的安全规则,则可以继续执行;反之,则结束操作,并返回相关信息。
3.2 访问控制机制的应用实现
当运行访问控制机制时,首先要启动数据库服务器,并将访问控制信息导入相关程序,这可以通过在主函数Win_main()中加入sec_init()函数实现,该函数又调用sec_reload()实现数据库表的导入,并将相关表存储至相应结构中,而哈希表中则保存了结构所对应的存储地址。关键代码如下描述:
哈希表的创建
获取数据表前的一些初始化;
// 哈希表sec_subjec的初始化
(void ) hash_init ( & sec_subject,system_charset_info, 0, 0, 0, (hash_get_key ) get_subject_table, 0, 0 ) ;
// 通过while语句从数据表中循环取出相关记录
While ( ! ( read_record_info.read_record ( & read_record_info ) ) ) {
Subject_Type* user = ( Subject_Type * ) alloc_root ( & mem,sizeof (Subject_Type ) ) ;
// 将相关记录信息存储至Subject_Type结构中
User -> user = get_field (&mem,table -> field[0] ) ;
// 将SQL语句主体结构的地址保存在Hash表
If ( my_hash_insert ( & sec_subject, ( uchar* )user ) )
{ goto end_unlock ; // hash表插入失败,并返回相关信息 }
end_read_record ( & read_record_info ) ; // 数据库表读取后,进行一些后期清理
至此,数据库服务器启动完毕,完成相关访问控制信息的初始化。此外,需要借助函数sec_reload ( )来对hash表进行重载,也允许数据库管理员修改访问控制相关的表,这样才能保证访问控制机制的一致性。
4 结论
针对数据库系统第三级安全的核心内容,访问控制机制的应用起到非常重要的作用。然而,大部分的数据库系统没有实现很好的灵活访问控制机制。但随着数据库技术以及信息技术的研究深入,访问控制机制将越来越受到人们的重视,并会不断得到有效的推广应用,这也将为数据库系统的安全性保障提供巨大作用。
[1]胡启韬,吴碧伟,姚培.强制访问控制在提高MySQL安全性上的应用[J].计算机与现代化,2009,9:160-166.
[2]吴飞林,王晓燕,朗波.基于MySQL的可定制强制访问控制的研究与实现[J].2007,24(11):117-120.
TP392
A
1674-6708(2010)30-0188-01