数据库表行级数据的自主访问控制方法

文档序号:6608849阅读:348来源:国知局

专利名称::数据库表行级数据的自主访问控制方法
技术领域
:本发明涉及一种对数据库表的自主访问控制方法,具体地说,是涉及一种数据库表行级数据的自主访问控制方法。
背景技术
:自主访问控制是操作系统和数据库管理系统的基础,其的一个重要属性是能够支持委托授权规则。目前,众多数据库的自主访问控制是基于访问控制矩阵(AccessControlMatrix)来实现对角色的表级、属性级(列级)的访问控制,这类访问控制可对数据库中的表、表中的某些列进行访问控制,但这类访问控制并不能对数据库中的行访问进行约束。例如,数据库用户如果具有某张数据库表的访问权限,则该用户便能对这张表中的每一行进行相关访问。故这种传统的表级、属性级(列级)粒度的对象权限管理已不能完全满足现今数据库系统的安全性要求,特别是不能满足将多个异构数据库中的信息整合到一起的数据库系统的安全性要求。
发明内容本发明的目的是提供一种对于数据库表行级数据进行自主访问的控制方法,该方法可满足各种对安全性要求高的数据库系统的需求。为实现上述目的,本发明采用以下技术方案一种数据库表行级数据的自主访问控制方法,其特征在于它包括以下步骤A.建立行级访问控制策略为启用行级访问控制的每一张数据库表增加一行级访问控制权限列,用于记录这一行的访问控制权限信息;B.授予用户行级访问权限为数据库用户授予数据库表中相应行的访问权限,及访问类型;C.行级访问控制当用户对数据库表进行访问时,根据上述行级访问控制策略和授予该用户的行级访问权限,对该用户实施行级访问控制。所述步骤B具体包括b1.根据数据库表中是否有行级访问控制权限列,判断数据库表是否建立行级访问控制策略,如果未建立,则无法为用户授予该数据库表的行级访问权限,流程结束;如果已建立行级访问控制策略,则继续步骤b2;b2.通过行级自主访问控制系统表查找对应数据库表中是否有该用户的偏移量,判断是否是第一次为该用户授予该表的行级访问权限,如果已经为该用户授权,则转步骤b3;如果没有,则在行级自主访问控制系统表中记载该用户对于该数据库表的授权信息,即增加一行记录,用于记录用户在数据库表上的行授权偏移量;b3.在该用户授权的数据库表中,修改授权行行级访问控制权限列的值,修改后的行级访问控制权限列的值表示该用户可对该表中该行执行的数据库操作。所述步骤C具体包括c1.判断该用户是否为数据表的创建者,如果是,则成功返回;c2.判断该用户是否具有该表的访问权限,如果有,则继续步骤c3,如果没有,则该用户的访问失败;c3.通过判定数据表中是否包含行级访问控制权限列,判断该表是否开启行级访问控制,如果未开启,表明不需要进行行级自主访问控制检查,用户具有访问权限,流程结束;如果已开启,则继续步骤c4;c4.从行级自主访问控制系统表中查找数据库用户在这张数据表中的偏移量,如果没有用户的偏移量信息,则表明用户无权对这张表进行访问,流程结束,用户访问失败;如果有用户的偏移量信息,则通过用户的表偏移量定位用户在这张表上的权限信息,由此判定用户是否具有相关的行级访问控制权限。本发明的优点是本发明在表级、属性级自主访问控制的基础上进行扩充,在数据库表上建立行级访问控制策略,为用户授予行级访问权限,实现了对用户的行级访问控制,有效保护了数据库行级数据,克服了传统数据库表级、属性级自主访问控制粒度过大的缺点,数据库安全性得以提高。图1是行级访问控制模型图;图2是授予用户行级访问权限的流程图;图3是行级访问控制权限检查流程图。具体实施例方式本发明对数据库表进行了修改,在应用了行级自主访问控制策略的数据表中增加了一列,用于记录每一条记录行的行级授权情况,以实现行级自主访问控制。与此同时,在行级自主访问控制系统表中记录下数据库用户在该数据库表中的偏移量,通过这个偏移量找到该用户在此记录行的权限信息。行级自主访问控制模型结构图如图1所示。运用了行级自主访问的数据库中包含以下数据对象●一张系统表行级自主访问控制系统表(sys_user_row_privilege),该表主要用于记录使用了行级访问控制策略的数据库表的信息,包括应用了行级访问控制的表的名称(T1)、具有访问T1权限的用户(U1)以及用户(U1)具有的对数据表(T1)的偏移量(offset)。Offset是一个整型数据,它的大小固定在1-16这个范围当中,偏移量用来帮助系统标注用户的行级访问控制信息。●应用了行级访问控制策略的数据表(T1),应用了行级访问控制策略的数据表中包含了一列系统自动创建的64位整型列行级访问控制权限列(ROWPRI)。该列记录了本行记录的访问控制信息。行级自主访问控制可以为16个用户(U1-U16)进行授权操作,行级访问控制权限列(ROWPRI)中的每四位标识了一个用户的访问权限(分别代表了读、更新、删除、全部操作的权限),如1-4位标识了用户U1的访问控制权限,5-8位标识了用户U2访问控制权限。而行级自主访问控制系统表(sys_user_row_privilege)中标识了用户对应的偏移量。为此,我们可以定义以下公式,用来获取用户Ui的行级自主访问控制权限定义函数offset(Ui,T),该函数输入用户信息Ui、用户访问的表T,返回用户的偏移量。因此,用户ui的行级访问控制权限信息由表T中对应行的行级访问控制的权限列的以下四位组成offset(ui,T)*4-offset(ui,T)*4+3本发明方法包括以下步骤A.建立行级访问控制策略为启用行级访问控制的每一张数据库表增加一列,该列为行级访问控制权限列,列名为行级访问控制权限列(ROWPRI),列类型为64位整型,用于记录这一行的访问控制权限信息;在具体实施中,实行行级访问控制的数据库表的ROWPRI列的默认值可设为0,此时,除该表的创建者之外,其他所有的数据库用户都不能对该表进行查询、修改、删除记录的操作。B.授予用户行级访问权限为用户指定可对数据库表中哪些行进行访问,及访问类型。如图2所示,用户U访问数据库表T的具体步骤包括b1.判断数据库表T是否建立行级访问控制策略,如果数据库表应用了行级访问控制,那么这张数据表中将会增加行级访问控制权限列ROWPRI,以表明该数据表已经建立了行级访问控制策略。如果未建立行级访问控制策略,则无法为用户授予该数据库表T的行级访问权限,流程结束。如果已建立行级访问控制策略,则继续步骤b2;b2.判断是否是第一次为用户U授予该表的行级访问权限,通过查找行级自主访问控制系统表,来查找对应数据库表T中是否具有用户U的偏移量。如果没有,则表明是第一次为该用户进行授权。如果是第一次,则在行级自主访问控制系统表中记载该用户对于该数据库表的授权信息,即在行级自主访问控制系统表中增加一行记录,记录用户在数据库表T上的行授权偏移量offset。该偏移量标识使用了行级访问控制表上授权用户的偏移量。该记录包括授权用户的ID、数据库表的ID(数据库表T对应的唯一的ID标识)及该用户在数据库表T上的偏移量,如果已经为该用户授权,则直接跳到b3。b3.在该用户授权的数据库表中,修改授权行行级访问控制权限列ROWPRI的值,修改后的行级访问控制权限列ROWPRI的值表示该用户可对该表中该行执行的数据库操作。用户可对该行执行的数据库操作包括删除操作(DELETEOPER)、更新操作(UPDATEOPER)、查询操作(SELECTOPER)。C.行级访问控制当用户对数据库表进行访问时,根据上述行级访问控制策略和授予该用户的行级访问权限,对该用户实施行级访问控制。如图3所示,具体步骤包括c1.判断该用户是否为数据表的创建者,如果是,则成功返回。c2.判断该用户是否具有该表的访问权限,如果有,则继续步骤c3,如果没有,则该用户的访问失败;c3.判断该表是否开启行级访问控制,通过判定数据表中是否包含行级访问控制权限列(ROWPRI),即可判定是否开启了行级访问控制策略。如果已开启,则继续步骤c4,如果未开启,则不需要进行行级自主访问控制检查,流程结束,用户具有访问权限;c4.从行级自主访问控制系统表中查找数据库用户在这张数据表中的偏移量,如果没有用户的偏移量信息,则表明用户无权对这张表进行访问,流程结束,用户访问失败;如果有用户的偏移量信息,便通过用户的表偏移量定位用户在这张表上的权限信息,由此判定用户是否具有相关的行级访问控制权限。在实际应用中,该数据库表行级数据的自主访问控制可与基于角色的自主访问控制相结合,以配置不同数据库角色在数据库表中不同的行级访问权限。本发明已在Oscar安全数据库系统中得以实现。在Oscar安全数据库系统中,在重要的表上建立了行级访问控制策略,用户若想访问该系统中的某张表,则必须通过行级访问控制过程才可实现。在该系统中,普通用户只可查看自己的工资情况表,而科室领导可查看其所在科室的所有员工的工资情况表。因此,在设计数据库时,工资情况表上建立了行级访问控制策略,系统在工资情况表上自动增加了ROWPRI列,用于记录该行的访问控制偏移量。创建该工资情况表后,首先赋予所有员工查询操作的权限,即所有员工都可查看到该工资情况表中的信息。然后在该工资情况表上为每一角色授予用户行级访问权限。之后,该系统就可以通过工资情况表的行级访问控制策略和各用户的行级访问权限来判定来访用户是否可对该工资情况表进行相应的操作。例如,彭飞是产品质量部经理,他能查询本部门所有员工的工资情况。因此,系统管理员对角色“产品质量部经理”授予行级访问权限。操作步骤如下所示步骤1对工资表应用行级自主访问控制策略,DBA用户在交互式SQL工具中输入以下语句selectapply_row_control(′COMPANY′,′Wage′);其中,COMPANY是工资表所在的模式,Wage是工资表表名,apply_row_control系统函数的语义就是对指定模式下的指定表应用行级访问控制策略,在应用了该策略后,工资表中增加了一列ROWPRI,用来记录各个记录的行级授权情况。此时,ROWPRI列的值为0,只有工资表的创建者才能访问各行记录。步骤2为彭飞设置自主访问控制权限,DBA用户在交互式SQL工具中输入以下语句updatecompany.wagesetrowpri=getrowpriv(′COMPANY′,′WAGE′,′PengFei′,rowpri,0,false,true,false)wheredepartment=′ProductQuality′;这条语句首先通过where查询条件选择需要授权的行记录集,然后通过update语句修改行记录集中每一条记录的ROWPRI值,通过getrowpriv函数可以获取彭飞在工资表中的偏移量,然后对ROWPRI列中偏移量指向的位置进行修改,以达到为用户彭飞进行行级授权的目的。修改前各个记录行的ROWPRIV值为0,彭飞的用户偏移量为1,则将修改ROWPRI的对应位置的数值,修改后ROWPRI值为0x00000002。授权前,彭飞访问本部门员工工资情况表时,访问失败,即不显示任何数据。授权后,当彭飞访问本部门员工工资情况表时,系统对彭飞的行级访问进行判断,判断过程为过程1判断彭飞是否能否访问工资情况表,如果不能访问,则返回错误信息。过程2查找彭飞在工资情况表中的偏移量table_offset过程3通过table_offset,定位彭飞在每一条工资记录的行级访问权限,并依此判定彭飞能否对指定行进行访问。由于对彭飞授予了查询本部门所有员工工资情况的访问权限,故当彭飞访问本部门员工工资情况表时,他可查看到该产品质量部所有员工的工资情况信息。可见,本发明在表级、属性级自主访问控制的基础上进行扩充,在数据库表上建立行级访问控制策略,为用户授予行级访问权限,实现了行级粒度的访问控制方式,有效保护了数据库中的行级敏感数据,克服了传统数据库表级、属性级自主访问控制粒度过大的缺点,数据库安全性得以提高。权利要求1.一种数据库表行级数据的自主访问控制方法,其特征在于它包括以下步骤A.建立行级访问控制策略为启用行级访问控制的每一张数据库表增加一行级访问控制权限列,用于记录这一行的访问控制权限信息;B.授予用户行级访问权限为数据库用户授予数据库表中相应行的访问权限及访问类型;C.行级访问控制当用户对数据库表进行访问时,根据上述行级访问控制策略和授予该用户的行级访问权限,对该用户实施行级访问控制。2.根据权利要求1所述的数据库表行级数据的自主访问控制方法,其特征在于所述步骤B具体包括b1.根据数据库表中是否有行级访问控制权限列,判断数据库表是否建立行级访问控制策略,如果未建立,则无法为用户授予该数据库表的行级访问权限,流程结束;如果已建立行级访问控制策略,则继续步骤b2;b2.通过行级自主访问控制系统表查找对应数据库表中是否有该用户的偏移量,判断是否是第一次为该用户授予该表的行级访问权限,如果已经为该用户授权,则转步骤b3;如果没有,则在行级自主访问控制系统表中记载该用户对于该数据库表的授权信息,即增加一行记录,用于记录用户在数据库表上的行授权偏移量;b3.在该用户授权的数据库表中,修改授权行行级访问控制权限列的值,修改后的行级访问控制权限列的值表示该用户可对该表中该行执行的数据库操作。3.根据权利要求1所述的数据库表行级数据的自主访问控制方法,其特征在于所述步骤C具体包括c1.判断该用户是否为数据表的创建者,如果是,则成功返回;c2.判断该用户是否具有该表的访问权限,如果有,则继续步骤c3,如果没有,则该用户的访问失败;c3.通过判定数据表中是否包含行级访问控制权限列,判断该表是否开启行级访问控制,如果未开启,表明不需要进行行级自主访问控制检查,用户具有访问权限,流程结束;如果已开启,则继续步骤c4;c4.从行级自主访问控制系统表中查找数据库用户在这张数据表中的偏移量,如果没有用户的偏移量信息,则表明用户无权对这张表进行访问,流程结束,用户访问失败;如果有用户的偏移量信息,则通过用户的表偏移量定位用户在这张表上的权限信息,由此判定用户是否具有相关的行级访问控制权限。全文摘要本发明为一种数据库表行级数据的自主访问控制方法,它包括以下步骤A.建立行级访问控制策略为启用行级访问控制的每一张数据库表增加一行级访问控制权限列,用于记录这一行的访问控制权限信息;B.授予用户行级访问权限为数据库用户授予数据库表中相应行的访问权限及访问类型;C.行级访问控制当用户对数据库表进行访问时,根据上述行级访问控制策略和授予该用户的行级访问权限,对该用户实施行级访问控制。本发明在数据库表上建立行级访问控制策略,为用户授予行级访问权限,实现了对用户的行级访问控制,有效保护了数据库行级数据,克服了传统数据库表级、属性级自主访问控制粒度过大的缺点,数据库安全性得以提高。文档编号G06F17/30GK101075254SQ20071010035公开日2007年11月21日申请日期2007年6月8日优先权日2007年6月8日发明者王渊申请人:北京神舟航天软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1