一种数据库行权限控制方法和系统技术方案

技术编号:16365732 阅读:35 留言:0更新日期:2017-10-10 21:50
本发明专利技术公开一种数据库行权限控制方法和系统,包括:在预设的数据权限管理系统中对用户输入的结构化查询语言SQL查询语句进行初步解析,获得含有未解决节点的SQL解析树。通过元数据信息完善未解决节点的信息。将当前用户信息与数据权限管理系统中预存的用户权限信息进行比较,获取当前用户的权限限制信息。将权限限制信息与完善后的未解决节点相结合生成过滤节点。将过滤节点添加到SQL解析树上的未解决节点处生成最终SQL解析树。根据最终SQL解析树获得用户的SQL查询结果。通过本发明专利技术的方案,能够使得用户进行数据查询时合理限制用户权限。

Method and system for controlling row authority of database

The invention discloses a method and system for database access control, including: data in the privilege management system default user input on the structured query language SQL query for the preliminary analysis, which contains unresolved SQL parse tree node. Improving the information of unresolved nodes through metadata information. Compare the current user information and the data stored in the data authority management system to obtain the privilege restriction information of the current user. Combining the permissions restriction information with the perfect unresolved nodes, the filter nodes are generated. Add the filter node to the unresolved node on the SQL parse tree to generate the final SQL parse tree. Obtain the user's SQL query results based on the final SQL parse tree. Through the scheme of the invention, users can reasonably restrict the user's authority when the data is searched.

【技术实现步骤摘要】
一种数据库行权限控制方法和系统
本专利技术涉及数据安全领域,尤其涉及一种数据库行权限控制方法和系统。
技术介绍
如何有效地保证数据的安全,实现数据的保密性,对如今的数据库系统来说是至关重要的。因为数据库中存放着大量的数据,这些数据可供拥有一定职责和权力的用户共享。但是,很难严格的限制用户只能得到一些与他们权力相当的数据。目前存在的对数据做权限的限制方法粒度过于粗糙,只能在表级别或者列级别对数据的访问权限做限制。这样就造成为了限制用户数据访问,对用户应有权限的数据也做了限制。
技术实现思路
为了解决上述问题,本专利技术提出了一种数据库行权限控制方法和系统,能够使得用户进行数据查询时合理限制用户权限。为了达到上述目的,本专利技术提出了一种数据库行权限控制方法,该方法包括:在预设的数据权限管理系统中对用户输入的结构化查询语言SQL查询语句进行初步解析,获得含有未解决节点的SQL解析树。通过元数据信息完善未解决节点的信息。将当前用户信息与数据权限管理系统中预存的用户权限信息进行比较,获取当前用户的权限限制信息。将权限限制信息与完善后的未解决节点相结合生成过滤节点。将过滤节点添加到SQL解析树上的未解决节点处生成最终SQL解析树。根据最终SQL解析树获得用户的SQL查询结果。优选地,未解决节点包括:需要查询的还未得到表结构的数据表。其中,数据表包括:人员信息表。表结构包括:数据表中各个字段的信息。优选地,通过元数据信息完善未解决节点的信息包括:从元数据信息中获取查询时需要操作的数据表的表结构的信息。优选地,将权限限制信息与完善后的未解决节点相结合生成过滤节点包括:将权限限制信息与需要查询的数据表中的各个字段分别进行比较,生成符合权限限制信息的各个字段的限制范围,将各个字段的限制范围作为过滤节点。优选地,权限限制信息包括:姓名、年龄、通讯方式和职位。为了达到上述目的,本专利技术还提出了一种数据库行权限控制系统,该系统包括:初步解析模块、完善模块、获取模块、生成模块、添加模块和结果获取模块。初步解析模块,用于在预设的数据权限管理系统中对用户输入的结构化查询语言SQL查询语句进行初步解析,获得含有未解决节点的SQL解析树。完善模块,用于通过元数据信息完善未解决节点的信息。获取模块,用于将当前用户信息与数据权限管理系统中预存的用户权限信息进行比较,获取当前用户的权限限制信息。生成模块,用于将权限限制信息与完善后的未解决节点相结合生成过滤节点。添加模块,用于将过滤节点添加到SQL解析树上的未解决节点处生成最终SQL解析树。结果获取模块,用于根据最终SQL解析树获得用户的SQL查询结果。优选地,未解决节点包括:需要查询的还未得到表结构的数据表。其中,数据表包括:人员信息表。表结构包括:数据表中各个字段的信息。优选地,完善模块通过元数据信息完善未解决节点的信息包括:从元数据信息中获取查询时需要操作的数据表的表结构的信息。优选地,生成模块将权限限制信息与完善后的未解决节点相结合生成过滤节点包括:将所权限限制信息与需要查询的数据表中的各个字段分别进行比较,生成符合权限限制信息的各个字段的限制范围,将各个字段的限制范围作为过滤节点。优选地,权限限制信息包括:姓名、年龄、通讯方式和职位。与现有技术相比,本专利技术包括:在预设的数据权限管理系统中对用户输入的结构化查询语言SQL查询语句进行初步解析,获得含有未解决节点的SQL解析树。通过元数据信息完善未解决节点的信息。将当前用户信息与数据权限管理系统中预存的用户权限信息进行比较,获取当前用户的权限限制信息。将权限限制信息与完善后的未解决节点相结合生成过滤节点。将过滤节点添加到SQL解析树上的未解决节点处生成最终SQL解析树。根据最终SQL解析树获得用户的SQL查询结果。通过本专利技术的方案,能够使得用户进行数据查询时合理限制用户权限。附图说明下面对本专利技术实施例中的附图进行说明,实施例中的附图是用于对本专利技术的进一步理解,与说明书一起用于解释本专利技术,并不构成对本专利技术保护范围的限制。图1为本专利技术的一种数据库行权限控制方法流程图;图2为本专利技术的一种数据库行权限控制系统组成框图。具体实施方式为了便于本领域技术人员的理解,下面结合附图对本专利技术作进一步的描述,并不能用来限制本专利技术的保护范围。本专利技术方法通过在结构化查询语言SQL(StructuredQueryLanguage,简称SQL)解析过程中将数据行权限作为过滤节点添加到语法树中,从而完成数据库行级别权限的限制。本方法依赖于一个存储用户权限的系统,在用户执行SQL查询时从该系统中获取需要访问数据的用户拥有的行权限,接着将该权限转换为表达式添加到过滤节点中,并且将该节点添加到SQL解析出的语法树的相应位置,然后继续将该语法树转换为物理查询,最后返回的查询结果。为了达到上述目的,本专利技术提出了一种数据库行权限控制方法,该方法包括:S101、在预设的数据权限管理系统中对用户输入的结构化查询语言SQL查询语句进行初步解析,获得含有未解决节点的SQL解析树。在本专利技术实施例中,需要预先设置一个数据权限管理系统,用户进行数据查询时,通过在该数据权限管理系统中输入SQL查询语句进行查询。在SQL查询语句中,会包含一些关键字,例如,当用户输入“王红联系方式”时,该语句中的关键字是“联系方式”。数据权限管理系统会解析SQL查询语句中的这个关键字,并根据这些关键字初步建立起SQL解析树,即,根据关键字“联系方式”将数据库中存储的相关的通讯表信息以树形结构分别罗列出来,即本专利技术所说的SQL解析树。当然,在这个SQL解析树的每个分支上,即上述举例中的每个相关通讯表分支上,会存在一些未知内容,即本专利技术中的未解决节点,例如,具体每个通讯表的表格结构、形式及内容等,具体地,该通讯表的形式可以是人员信息表。优选地,未解决节点包括:需要查询的还未得到表结构的数据表。其中,数据表包括:人员信息表。表结构包括:数据表中各个字段的信息。例如,如果数据表为人员信息表,该人员信息表中的字段可以是姓名、年龄、通讯方式和职位。S102、通过元数据信息完善未解决节点的信息。优选地,通过元数据信息完善未解决节点的信息包括:从元数据信息中获取查询时需要操作的数据表的表结构的信息。S103、将当前用户信息与数据权限管理系统中预存的用户权限信息进行比较,获取当前用户的权限限制信息。在本专利技术实施例中,需要预先配置每个用户的数据行权限,并将该数据行权限存储在预设的数据权限管理系统中。例如,预先在数据权限管理系统中设置为上述的人员信息表仅仅针对年龄在16岁到35岁之间的人员有查询权限。基于在步骤S101中初步建立的SQL解析树,当用户的查询内容涉及到该人员信息表的查询时,会首先将当前用户信息与数据权限管理系统中预存的用户权限信息进行比较,检查当前用户是否在查询权限内,并返回检查结果,即上述的当前用户的权限限制信息。例如,如果当前查询者为20岁,则对该人员信息表有查询权限,如果当前查询者为18岁或40岁,则对该人员信息表没有查询权限。另外,还可以是人员信息表中的某些姓名、某些年龄或某些通讯方式针对当前查询者具有权限。优选地,权限限制信息包括:姓名、年龄、通讯方式和职位。在本专利技术实施例中,该权限限制信息除了上述举例中的年本文档来自技高网...
一种数据库行权限控制方法和系统

【技术保护点】
一种数据库行权限控制方法,其特征在于,所述方法包括:在预设的数据权限管理系统中对用户输入的结构化查询语言SQL查询语句进行初步解析,获得含有未解决节点的SQL解析树;通过元数据信息完善所述未解决节点的信息;将当前用户信息与所述数据权限管理系统中预存的用户权限信息进行比较,获取当前用户的权限限制信息;将所述权限限制信息与完善后的所述未解决节点相结合生成过滤节点;将所述过滤节点添加到所述SQL解析树上的未解决节点处生成最终SQL解析树;根据所述最终SQL解析树获得用户的SQL查询结果。

【技术特征摘要】
1.一种数据库行权限控制方法,其特征在于,所述方法包括:在预设的数据权限管理系统中对用户输入的结构化查询语言SQL查询语句进行初步解析,获得含有未解决节点的SQL解析树;通过元数据信息完善所述未解决节点的信息;将当前用户信息与所述数据权限管理系统中预存的用户权限信息进行比较,获取当前用户的权限限制信息;将所述权限限制信息与完善后的所述未解决节点相结合生成过滤节点;将所述过滤节点添加到所述SQL解析树上的未解决节点处生成最终SQL解析树;根据所述最终SQL解析树获得用户的SQL查询结果。2.如权利要求1所述的数据库行权限控制方法,其特征在于,所述未解决节点包括:需要查询的还未得到表结构的数据表;其中,所述数据表包括:人员信息表;所述表结构包括:数据表中各个字段的信息。3.如权利要求2所述的数据库行权限控制方法,其特征在于,所述通过元数据信息完善所述未解决节点的信息包括:从所述元数据信息中获取查询时需要操作的数据表的所述表结构的信息。4.如权利要求2所述的数据库行权限控制方法,其特征在于,所述将所述权限限制信息与完善后的所述未解决节点相结合生成过滤节点包括:将所述权限限制信息与需要查询的所述数据表中的各个字段分别进行比较,生成符合所述权限限制信息的各个字段的限制范围,将所述各个字段的限制范围作为所述过滤节点。5.如权利要求1所述的数据库行权限控制方法,其特征在于,所述权限限制信息包括:姓名、年龄、通讯方式和职位。6.一种数据库行权限控制系统,其特征在于,所述系统包括:初步解析模块、完善模块、获取模块、生成模块、添加...

【专利技术属性】
技术研发人员:徐安华李少辉王超冯是聪
申请(专利权)人:北京明略软件系统有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1