CN100498792C - 数据库表行级数据的自主访问控制方法 - Google Patents
数据库表行级数据的自主访问控制方法 Download PDFInfo
- Publication number
- CN100498792C CN100498792C CNB2007101003558A CN200710100355A CN100498792C CN 100498792 C CN100498792 C CN 100498792C CN B2007101003558 A CNB2007101003558 A CN B2007101003558A CN 200710100355 A CN200710100355 A CN 200710100355A CN 100498792 C CN100498792 C CN 100498792C
- Authority
- CN
- China
- Prior art keywords
- access control
- row
- user
- database table
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明为一种数据库表行级数据的自主访问控制方法,它包括以下步骤:A.建立行级访问控制策略:为启用行级访问控制的每一张数据库表增加一行级访问控制权限列,用于记录这一行的访问控制权限信息;B.授予用户行级访问权限:为数据库用户授予数据库表中相应行的访问权限及访问类型;C.行级访问控制:当用户对数据库表进行访问时,根据上述行级访问控制策略和授予该用户的行级访问权限,对该用户实施行级访问控制。本发明在数据库表上建立行级访问控制策略,为用户授予行级访问权限,实现了对用户的行级访问控制,有效保护了数据库行级数据,克服了传统数据库表级、属性级自主访问控制粒度过大的缺点,数据库安全性得以提高。
Description
技术领域
本发明涉及一种对数据库表的自主访问控制方法,具体地说,是涉及一种数据库表行级数据的自主访问控制方法。
背景技术
自主访问控制是操作系统和数据库管理系统的基础,其的一个重要属性是能够支持委托授权规则。目前,众多数据库的自主访问控制是基于访问控制矩阵(AccessControl Matrix)来实现对角色的表级、属性级(列级)的访问控制,这类访问控制可对数据库中的表、表中的某些列进行访问控制,但这类访问控制并不能对数据库中的行访问进行约束。例如,数据库用户如果具有某张数据库表的访问权限,则该用户便能对这张表中的每一行进行相关访问。故这种传统的表级、属性级(列级)粒度的对象权限管理已不能完全满足现今数据库系统的安全性要求,特别是不能满足将多个异构数据库中的信息整合到一起的数据库系统的安全性要求。
发明内容
本发明的目的是提供一种对于数据库表行级数据进行自主访问的控制方法,该方法可满足各种对安全性要求高的数据库系统的需求。
为实现上述目的,本发明采用以下技术方案:
一种数据库表行级数据的自主访问控制方法,其特征在于它包括以下步骤:
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工具中输入以下语句:
select apply_row_control(′COMPANY′,′Wage′);
其中,COMPANY是工资表所在的模式,Wage是工资表表名,apply_row_control系统函数的语义就是对指定模式下的指定表应用行级访问控制策略,在应用了该策略后,工资表中增加了一列ROWPRI,用来记录各个记录的行级授权情况。此时,ROWPRI列的值为0,只有工资表的创建者才能访问各行记录。
步骤2:为彭飞设置自主访问控制权限,DBA用户在交互式SQL工具中输入以下语句:
update company.wage set rowpri=getrowpriv(′COMPANY′,′WAGE′,′PengFei′,rowpri,0,false,true,false)where department=′ProductQuality′;
这条语句首先通过where查询条件选择需要授权的行记录集,然后通过update语句修改行记录集中每一条记录的ROWPRI值,通过getrowpriv函数可以获取彭飞在工资表中的偏移量,然后对ROWPRI列中偏移量指向的位置进行修改,以达到为用户彭飞进行行级授权的目的。修改前各个记录行的ROWPRIV值为0,彭飞的用户偏移量为1,则将修改ROWPRI的对应位置的数值,修改后ROWPRI值为0x00000002.
授权前,彭飞访问本部门员工工资情况表时,访问失败,即不显示任何数据。
授权后,当彭飞访问本部门员工工资情况表时,系统对彭飞的行级访问进行判断,判断过程为:
过程1:判断彭飞是否能否访问工资情况表,如果不能访问,则返回错误信息。
过程2:查找彭飞在工资情况表中的偏移量table_offset
过程3:通过table_offset,定位彭飞在每一条工资记录的行级访问权限,并依此判定彭飞能否对指定行进行访问。
由于对彭飞授予了查询本部门所有员工工资情况的访问权限,故当彭飞访问本部门员工工资情况表时,他可查看到该产品质量部所有员工的工资情况信息。
可见,本发明在表级、属性级自主访问控制的基础上进行扩充,在数据库表上建立行级访问控制策略,为用户授予行级访问权限,实现了行级粒度的访问控制方式,有效保护了数据库中的行级敏感数据,克服了传统数据库表级、属性级自主访问控制粒度过大的缺点,数据库安全性得以提高。
Claims (3)
1、一种数据库表行级数据的自主访问控制方法,其特征在于它包括以下步骤:
A.建立行级访问控制策略:为启用行级访问控制的每一张数据库表增加一行级访问控制权限列,用于记录这一行的访问控制权限信息;
B.授予用户行级访问权限:为数据库用户授予数据库表中相应行的访问权限及访问类型;
C.行级访问控制:当用户对数据库表进行访问时,根据上述行级访问控制策略和授予该用户的行级访问权限,对该用户实施行级访问控制。
2、根据权利要求1所述的数据库表行级数据的自主访问控制方法,其特征在于:
所述步骤B具体包括:
b1.根据数据库表中是否有行级访问控制权限列,判断数据库表是否建立行级访问控制策略,如果未建立,则无法为用户授予该数据库表的行级访问权限,流程结束;如果已建立行级访问控制策略,则继续步骤b2;
b2.通过行级自主访问控制系统表查找对应数据库表中是否有该用户的偏移量,此处的偏移量是指用来帮助系统标注用户的行级访问控制信息,由此判断是否是第一次为该用户授予该数据库表的行级访问权限,如果已经为该用户授权,则转步骤b3;如果没有,则在行级自主访问控制系统表中记载该用户对于该数据库表的授权信息,即增加一行记录,用于记录用户在数据库表上的行授权偏移量;
b3.在该用户授权的数据库表中,修改授权行行级访问控制权限列的值,修改后的行级访问控制权限列的值表示该用户可对该数据库表中该行执行的数据库操作。
3、根据权利要求1所述的数据库表行级数据的自主访问控制方法,其特征在于:
所述步骤C具体包括:
c1.判断该用户是否为数据库表的创建者,如果是,则成功返回;
c2.判断该用户是否具有该数据库表的访问权限,如果有,则继续步骤c3,如果没有,则该用户的访问失败;
c3.通过判定数据库表中是否包含行级访问控制权限列,判断该数据库表是否开启行级访问控制,如果未开启,表明不需要进行行级自主访问控制检查,用户具有访问权限,流程结束;如果已开启,则继续步骤c4;
c4.从行级自主访问控制系统表中查找数据库用户在这张数据库表中的偏移量,此处的偏移量是指用来帮助系统标注用户的行级访问控制信息,如果没有用户的偏移量信息,则表明用户无权对这张数据库表进行访问,流程结束,用户访问失败;如果有用户的偏移量信息,则通过用户的表偏移量定位用户在这张数据库表上的权限信息,由此判定用户是否具有相关的行级访问控制权限。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101003558A CN100498792C (zh) | 2007-06-08 | 2007-06-08 | 数据库表行级数据的自主访问控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101003558A CN100498792C (zh) | 2007-06-08 | 2007-06-08 | 数据库表行级数据的自主访问控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101075254A CN101075254A (zh) | 2007-11-21 |
CN100498792C true CN100498792C (zh) | 2009-06-10 |
Family
ID=38976307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101003558A Active CN100498792C (zh) | 2007-06-08 | 2007-06-08 | 数据库表行级数据的自主访问控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100498792C (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467416B (zh) * | 2010-11-05 | 2014-05-14 | 中科信息安全共性技术国家工程研究中心有限公司 | 一种访问控制客体粒度测试框架及方法 |
US8515948B2 (en) | 2011-03-09 | 2013-08-20 | International Business Machines Corporation | Managing materialized query tables (MQTS) over fine-grained access control (FGAC) protected tables |
CN102521385B (zh) * | 2011-12-21 | 2015-06-03 | 北京人大金仓信息技术股份有限公司 | 一种对数据库系统表设置强制访问控制的方法 |
CN103065100B (zh) * | 2012-12-26 | 2015-07-22 | 中国人民解放军总参谋部第六十一研究所 | 一种基于容器的用户私有数据保护方法 |
WO2017140213A1 (en) * | 2016-02-19 | 2017-08-24 | Huawei Technologies Co., Ltd. | System, method, and device for unified access control on federated database |
CN107292188A (zh) * | 2016-04-12 | 2017-10-24 | 北京明略软件系统有限公司 | 一种控制用户访问权限的方法和装置 |
CN107392560A (zh) * | 2016-05-16 | 2017-11-24 | 杨国成 | 一种基于互联网的Excel表格数据发布采集方法及系统 |
CN107944288B (zh) * | 2016-10-12 | 2022-09-06 | 北京京东尚科信息技术有限公司 | 一种数据访问控制方法和装置 |
CN107358093A (zh) * | 2017-07-11 | 2017-11-17 | 成都牵牛草信息技术有限公司 | 通过第三方字段对表单字段的字段值进行授权的方法 |
CN107330307A (zh) * | 2017-07-16 | 2017-11-07 | 成都牵牛草信息技术有限公司 | 一种表单数据操作权限授权方法 |
CN107480556A (zh) * | 2017-08-07 | 2017-12-15 | 成都牵牛草信息技术有限公司 | 基于列值对统计列表操作权限进行分别授权的方法 |
CN109995706B (zh) * | 2017-12-29 | 2021-06-11 | 中移(杭州)信息技术有限公司 | 一种安全审计的方法、装置、电子设备和存储介质 |
JP2020126409A (ja) * | 2019-02-04 | 2020-08-20 | 株式会社日立製作所 | データ管理システムおよびデータ管理方法 |
CN110046205B (zh) * | 2019-04-22 | 2021-04-09 | 瀚高基础软件股份有限公司 | 一种关系型数据库行安全访问控制方法及系统 |
CN110096892B (zh) * | 2019-04-29 | 2021-07-02 | 武汉中锐源信息技术开发有限公司 | 数据库属性访问控制方法及系统 |
CN110533477A (zh) * | 2019-09-03 | 2019-12-03 | 互动创想(厦门)数字科技有限公司 | 一种基于大数据的智能分析方法及系统 |
CN110717153B (zh) * | 2019-09-30 | 2021-08-24 | 新华三大数据技术有限公司 | 一种权限验证方法和装置 |
CN110909369A (zh) * | 2019-11-08 | 2020-03-24 | 拉货宝网络科技有限责任公司 | 一种基于报表平台的数据权限控制方法 |
CN115174128A (zh) * | 2021-03-19 | 2022-10-11 | 北京金山云网络技术有限公司 | 一种登录管理方法、装置及私有云控制服务器 |
CN113656827A (zh) * | 2021-07-19 | 2021-11-16 | 中共四川省委组织部 | 一种基于国产数据库实现行级权限控制的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1141091A (zh) * | 1994-02-16 | 1997-01-22 | 英国电讯有限公司 | 控制存取数据库的方法与装置 |
WO2003030032A2 (en) * | 2001-09-28 | 2003-04-10 | Oracle International Corporation | An index structure to access hierarchical data in a relational database system |
CN1729469A (zh) * | 2002-09-04 | 2006-02-01 | 国际商业机器公司 | 对关系数据库进行访问控制的方法 |
-
2007
- 2007-06-08 CN CNB2007101003558A patent/CN100498792C/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1141091A (zh) * | 1994-02-16 | 1997-01-22 | 英国电讯有限公司 | 控制存取数据库的方法与装置 |
WO2003030032A2 (en) * | 2001-09-28 | 2003-04-10 | Oracle International Corporation | An index structure to access hierarchical data in a relational database system |
CN1729469A (zh) * | 2002-09-04 | 2006-02-01 | 国际商业机器公司 | 对关系数据库进行访问控制的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101075254A (zh) | 2007-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100498792C (zh) | 数据库表行级数据的自主访问控制方法 | |
RU2373571C2 (ru) | Системы и способы осуществляемого посредством доступа на уровне мелких структурных единиц управления данными, хранящимися в реляционных базах данных | |
US10108813B2 (en) | Query conditions-based security | |
US5386559A (en) | Variant domains and variant maps in a versioned database management system | |
US5592661A (en) | Detection of independent changes via change identifiers in a versioned database management system | |
US5504879A (en) | Resolution of relationship source and target in a versioned database management system | |
US8166070B2 (en) | Techniques for sharing persistently stored query results between multiple users | |
US8078595B2 (en) | Secure normal forms | |
JP4398371B2 (ja) | リレーショナル・データベースへのアクセスを制御する方法 | |
US5890166A (en) | Versioned-database management system in which tasks are associated with promote groups which comprise a set of parts whose changes are to be promoted | |
CN100492357C (zh) | 最优化行级别数据库安全的系统和方法 | |
CN101448002B (zh) | 一种数字资源的访问方法及设备 | |
US7711750B1 (en) | Systems and methods that specify row level database security | |
Ferrari | Access control in data management systems | |
US8682912B2 (en) | Providing secure access to data with user defined table functions | |
EP2059881B1 (en) | Method for managing simultaneous modification of database objects during development | |
KR100820306B1 (ko) | 데이터 마스킹을 이용한 보안시스템과 이를 이용한 데이터보안방법 | |
CN101615203A (zh) | 并发控制方法及装置 | |
US11010456B2 (en) | Information access in a graph database | |
CN101847155A (zh) | 包括访问受保护的xml数据的xml数据库的管理系统 | |
CN101794312A (zh) | 基于安全视图的xml访问控制方法 | |
CN106383855A (zh) | 一种针对sql分析查询的静态授权方法 | |
Damiani et al. | Securely updating XML | |
Goyal et al. | Access control in distributed heterogeneous database management systems | |
Ferrari | Access Control in Data Management Systems: A Visual Querying Perspective |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100036 Beijing city Haidian District Fuchengmen Road, building 17 Yuhui Patentee after: Beijing Shenzhou Aerospace Software Technology Co.,Ltd. Address before: 100036 Beijing city Haidian District Fuchengmen Road, building 17 Yuhui Patentee before: BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co.,Ltd. |