CN107239710A - 一种数据库权限实现方法和系统 - Google Patents
一种数据库权限实现方法和系统 Download PDFInfo
- Publication number
- CN107239710A CN107239710A CN201610187615.9A CN201610187615A CN107239710A CN 107239710 A CN107239710 A CN 107239710A CN 201610187615 A CN201610187615 A CN 201610187615A CN 107239710 A CN107239710 A CN 107239710A
- Authority
- CN
- China
- Prior art keywords
- privilege
- authority
- metadata
- data
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库权限实现方法和系统,包括:对输入的SQL查询语句进行解析,生成语法树。通过元数据获得具有预设的描述形式的权限信息。将权限信息加入语法树,根据加入权限信息的语法树获取经权限信息过滤后的数据信息。对数据信息的可操作权限进行验证,根据验证结果对数据信息执行相关操作。通过本发明的方案,能够在结构化查询语言SQL以及元数据层面上实现跨数据库的统一授权。
Description
技术领域
本发明涉及数据库访问技术领域,尤其涉及一种数据库权限实现方法和系统。
背景技术
现有数据库的访问授权要么是在数据库的实现层面上来做,提供相关的结构化查询语言SQL语句或者管理套件来进行授权操作。要么是通过添加赘余的数据列来标示数据的权限,然后在应用层通过判断这些权限数据来实现对数据的授权访问。
上述方法最大的问题在于无法实现在所有不同类型的数据库上统一授权,并且需要存储大量的赘余权限数据来描述数据权限。
发明内容
为了解决上述问题,本发明提出了一种数据库权限实现方法和系统,能够在SQL以及元数据层面上实现跨数据库的统一授权。
为了达到上述目的,本发明提出了一种数据库权限实现方法,该方法包括:
对输入的结构化查询语言SQL查询语句进行解析,生成语法树。
通过语法树的元数据获得具有预设的描述形式的查询信息。
对查询信息的可操作权限进行验证,根据验证结果对通过查询信息查询到的数据信息执行相关操作。
优选地,
预设的描述形式包括:五元组形式;五元组包括数据库链接信息server、数据库名称database、表名称table、列名称column和权限类型privilege。
其中,privilege包括:读取Select、插入Insert、修改Alter、删除drop和全部All。
All包括:Select、Insert、Alter和drop。
优选地,通过语法树的元数据获得具有预设的描述形式的查询信息包括:
根据语法树的元数据获取与SQL查询语句的关键字相关的一个或多个第一server。
从一个或多个第一server中获取与SQL查询语句的关键字相关的一个或多个第一数据库。
从一个或多个第一数据库中获取与SQL查询语句的关键字相关的一个或多个第一数据表。
从一个或多个第一数据表中获取与SQL查询语句的关键字相关的一个或多个第一数据列。
将第一server、第一数据库、第一数据表、第一数据列和想要执行的privilege以五元组的形式形成查询信息。
优选地,
对查询信息的可操作权限进行验证包括:
将五元组形式的查询信息中所包含的第一privilege项与预存的五元组形势的权限信息中所包含的第二privilege项相比较;并且,对于第一privilege项所包含的一个或多个操作分别判断是否与第二privilege项中包含的一个或多个可执行操作中的至少一个可执行操作相同;其中,第一privilege项和第二privilege项分别至少包括以下一种:Select、Insert、Alter、drop和All。
根据验证结果对通过查询信息查询到的数据信息执行相关操作包括:
当第二privilege项为All时,执行第一privilege项所包含的一个或多个操作。
当第二privilege项不为All,并且所述第一privilege项所包含的一个操作与第二privilege项中的一个可执行操作相同时,执行该可执行操作。
当第二privilege项不为All,并且当第一privilege项所包含的多个操作与第二privilege项中的多个可执行操作分别对应相同时,分别执行该多个可执行操作。
优选地,该方法还包括:对数据信息执行可执行操作以后,如果数据信息有变更,保存变更后的数据信息并更新相应的元数据;并对更新后的元数据的可操作权限进行更新。
其中,对更新后的元数据的可操作权限进行更新包括:对经过Insert和/或Alter操作的元数据进行数据权限的变更或删除,以及对经过drop操作的元数据进行数据权限的删除。
为了达到上述目的,本发明还提出了一种数据库权限实现系统,该系统包括:结构化查询语言SQL解析器、元数据过滤模块和权限监测模块。
SQL解析器,用于对输入的SQL查询语句进行解析,生成语法树。
元数据过滤模块,用于通过语法树的元数据获得具有预设的描述形式的查询信息。
权限监测模块,用于对查询信息的可操作权限进行验证,根据验证结果对通过查询信息查询到的数据信息执行相关操作。
优选地,
预设的描述形式包括:五元组形式;五元组包括数据库链接信息server、数据库名称database、表名称table、列名称column和权限类型privilege。
其中,privilege包括:读取Select、插入Insert、修改Alter、删除drop和全部All。
All包括:Select、Insert、Alter和drop。
优选地,元数据过滤模块通过语法树的元数据获得具有预设的描述形式的查询信息包括:
根据语法树的元数据获取与SQL查询语句的关键字相关的一个或多个第一server。
从一个或多个第一server中获取与SQL查询语句的关键字相关的一个或多个第一数据库。
从一个或多个第一数据库中获取与SQL查询语句的关键字相关的一个或多个第一数据表。
从一个或多个第一数据表中获取与SQL查询语句的关键字相关的一个或多个第一数据列。
将第一server、第一数据库、第一数据表、第一数据列和想要执行的privilege以五元组的形式形成查询信息。
优选地,
权限监测模块对查询信息的可操作权限进行验证包括:
将五元组形式的查询信息中所包含的第一privilege项与预存的五元组形势的权限信息中所包含的第二privilege项相比较;并且,对于第一privilege项所包含的一个或多个操作分别判断是否与第二privilege项中包含的一个或多个可执行操作中的至少一个可执行操作相同;其中,第一privilege项和第二privilege项分别至少包括以下一种:Select、Insert、Alter、drop和All。
权限监测模块根据验证结果对通过查询信息查询到的数据信息执行相关操作包括:
当第二privilege项为All时,执行第一privilege项所包含的一个或多个操作。
当第二privilege项不为All,并且当第一privilege项所包含的一个操作与第二privilege项中的一个可执行操作相同时,执行可执行操作。
当第二privilege项不为All,并且当第一privilege项所包含的多个操作与第二privilege项中的多个可执行操作分别对应相同时,分别执行多个可执行操作。
优选地,该系统还包括元数据变更反馈模块。
元数据变更反馈模块,用于对数据信息执行可执行操作以后,如果数据信息有变更,保存变更后的数据信息并更新相应的元数据;并对更新后的元数据的可操作权限进行更新。
其中,元数据变更反馈模块对更新后的元数据的可操作权限进行更新包括:对经过Insert和/或Alter操作的元数据进行数据权限的变更或删除,以及对经过drop操作的元数据进行数据权限的删除。
与现有技术相比,本发明包括:对输入的结构化查询语言SQL查询语句进行解析,生成语法树。语法树的元数据获得具有预设的描述形式的查询信息。对查询信息的可操作权限进行验证,根据验证结果对通过查询信息查询到的数据信息执行相关操作。通过本发明的方案,能够在结构化查询语言SQL以及元数据层面上实现跨数据库的统一授权。
附图说明
下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
图1为本发明的数据库权限实现方法流程图;
图2为本发明实施例的DML操作处理流程图;
图3为本发明实施例的DDL操作处理流程图;
图4为本发明实施例的权限数据库更新操作处理流程图;
图5为本发明实施例的授予或撤销操作处理流程图;
图6为本发明的数据库权限实现系统组成框图;
图7为本发明的数据库权限实现系统组成结构示意图。
具体实施方式
为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。
数据库访问的认证与授权在不同类型的数据库上,实现方法以及支持粒度有所不同,有些不支持,有些仅支持到表粒度,很少支持到列粒度。并且很多类型的数据库访问控制或授权要么作为数据库实现的一部分而存在的,要么作为该类型数据库专有的工具套件而存在。
而通用的BI(Business Intelligence)软件,越来越多地被要求提供安全的访问控制,并且需要在接入的各类型数据库上都能够支持统一的细粒度授权,例如:统一支持到列权限。
BI软件一般主要针对标准结构化查询语言SQL,如SQL92等支持较好,对于特定数据库的特定操作并不是BI软件关注的。因此本方法提出一种在SQL以及元数据层面上实现的跨数据库实现的统一授权的数据库权限体系结构。
为了达到上述目的,本发明具体提出了一种数据库权限实现方法,如图1所示,该方法包括:
S101、对输入的SQL查询语句进行解析,生成语法树。
S102、通过语法树的元数据获得具有预设的描述形式的查询信息。
该步骤具有重要的作用,其用来消除不同数据库实现中对数据库、表、列的实现差异。使得不同数据库的元数据最终都能被归结为:数据库、表、列这三级数据组织模型。
优选地,预设的描述形式包括:五元组形式;该五元组包括数据库链接信息server、数据库名称database、表名称table、列名称column和权限类型privilege。
其中,privilege包括:读取Select、插入Insert、修改Alter、删除drop和全部All。
All包括:Select、Insert、Alter和drop。
另外,需要说明的是,上述的查询信息也可以是二元组、三元组和四元组的形式。
查询二元组包括数据库链接信息server和权限类型privilege,即(server,privilege)。
查询三元组包括数据库链接信息server、数据库名称database和权限类型privilege,即(server,database,privilege)。
查询四元组包括数据库链接信息server、数据库名称database、表名称table和权限类型privilege,即(server,database,table,privilege)。
下面仍然以五元组形式为例来进行说明。
优选地,通过语法树的元数据获得具有预设的描述形式的查询信息包括:
S1021、根据语法树的元数据获取与SQL查询语句的关键字相关的一个或多个第一server。
S1022、从一个或多个第一server中获取与SQL查询语句的关键字相关的一个或多个第一数据库。
S1023、从一个或多个第一数据库中获取与SQL查询语句的关键字相关的一个或多个第一数据表。
S1024、从一个或多个第一数据表中获取与SQL查询语句的关键字相关的一个或多个第一数据列。
S1025、将第一server、第一数据库、第一数据表、第一数据列和想要执行的privilege以五元组的形式形成查询信息。
在本发明实施例中,这里仍以上述的举例为例来进行说明。
例如,使用jdbc链接服务器example.com的3306端口上Mysql服务器,并且具有对mysql中default数据库下的名叫test表的id列具有select权限。
那么可以将以上查询信息被描述为:
Server | Database | Table | Column | Privilege |
example.com∶3306 | Default | test | id | select |
则根据该查询信息的描述,我们会根据SQL查询语句的关键字获取一个语法树,从该语法树上首先获得一个或多个example.com∶3306链接分支,在该一个或多个链接分支的基础上再分别获得符合Default数据库名称的一个或多个数据库分支,在该一个或多个Default数据库分支的基础上,获得符合test表名称的一个或多个数据表分支,在该一个或多个数据表分支的基础上,获得符合id列名称的一个或多个数据列,最后需要对获得的一个或多个数据列进一步验证,看哪个或哪些数据列具有select权限,这将在接下来的步骤S103中进行验证。
S103、对查询信息的可操作权限进行验证,根据验证结果对通过查询信息查询到的数据信息执行相关操作。
在本发明实施例中,本发明中的权限体系也可以被定义成上述的五元组形式,即,被定义为四个级别(Level),分别为:数据库链接(Server),数据库(Database),表(Table),列(Column)。每一种数据库权限级别,又具有三种权限类型:读取(Select),插入(Insert)和全部(All)。
三者之间具有如下关系:
1)“select”和“insert”之间具有相互独立的关系;
2)“all”权限包含“select”以及“insert”权限,以及该两项权限之外的权限,例如,对元数据的修改(Alter)、删除(drop)的权限。如果是对表有All权限,那么我们同时具有对表的删除,以及表结构修改权限。
综上所述,一条权限可以用如下的字段来描述:
Server | Database | Table | Column | Privilege |
各字段的具体含义如下表所示:
例如,使用jdbc链接服务器example.com的3306端口上Mysql服务器,并且具有对mysql中default数据库下的名叫test表的id列具有select权限。那么以上权限信息被描述为:
Server | Database | Table | Column | Privilege |
example.com∶3306 | Default | test | id | select |
如上述定义,任意一条权限信息都可以被定义为一个五元组(server,database,table,column,privilege),五元组中的每一个字段分别代表着:数据库链接的名称,数据库名称,表名称,列名称以及权限的取值(“select”,“insert”,或“all”)。其中server,privilege字段不能为空,其余字段可以为空。
优选地,对查询信息的可操作权限进行验证包括:
将五元组形式的查询信息中所包含的第一privilege项与预存的五元组形势的权限信息中所包含的第二privilege项相比较;并且,对于第一privilege项所包含的一个或多个操作分别判断是否与第二privilege项中包含的一个或多个可执行操作中的至少一个可执行操作相同;其中,第一privilege项和第二privilege项分别至少包括以下一种:Select、Insert、Alter、drop和All。
根据验证结果对数据信息执行相关操作包括:
当第二privilege项为All时,执行第一privilege项所包含的一个或多个操作。
当第二privilege项不为All,并且所述第一privilege项所包含的一个操作与第二privilege项中的一个可执行操作相同时,执行该可执行操作。
当第二privilege项不为All,并且当第一privilege项所包含的多个操作与第二privilege项中的多个可执行操作分别对应相同时,分别执行该多个可执行操作。
以上内容都是当查询信息和预存的权限信息都是五元组形式时的方案。需要说明的是,与上述的查询信息相同,这里的权限信息也不限于五元组形式,同样可以是二元组、三元组和四元组的形式。
权限二元组包括:(server,privilege)、(database,privilege)、(table,privilege)和(column,privilege)。
权限三元组包括:(server,database,privilege)、(database,table,privilege)和(table,column,privilege)。
权限四元组包括:(server,database,table,privilege)、(database,table,column,privilege)
基于上述各种权限信息的形式和查询信息的形式,对查询信息的可操作权限进行验证还包括:将获得的查询信息与预存的权限信息相比较,当元组形式的查询信息中除privilege项以外的项等于或包含于元组形式的权限信息中除privilege项以外的项时,权限信息中的privilege对该查询信息仍然具有限制作用,同样需要根据以五元组为例时所说的查询信息的可操作权限验证方法进行验证。例如,一个查询信息是四元组(server,database,table,第一privilege),而预存的权限信息为三元组(server,database,第二privilege),则这里第二privilege对于第一privilege的限制有效,需要进一步将第一privilege和第二privilege比较,确定该第一privilege是否包含于第二privilege,或者该第一privilege是否与第二privilege相同;如果该第一privilege包含于第二privilege,或者该第一privilege与第二privilege相同,则可以执行该第一privilege,否则不可以执行。
相反地,当元组形式的查询信息中除privilege项以外的项包含元组形式的权限信息中除privilege项以外的项时,确定该查询信息中的privilege不可执行。例如,一个查询信息是三元组(server,database,第一privilege),而预存的权限信息为四元组(server,database,table,第二privilege),这时,无论第二privilege是什么,第一privilege都不可执行。
这里需要说明的是,上述的元组形式包括:二元组、三元组、四元组和五元组。
下面以不等式形式表达上述方案。
假设有两条权限Pi、Pj,它们的五元组表示如下:
Pi=(Li1,Li2,Li3,Li4,pi)
Pj=(Lj1,Lj2,Lj3,Lj4,pj)
并且定义pi与pj取值相同或者pi的取值为“all”时pi≥pj。
那么Pi≥Pj在以下条件下成立:
Li1…m=Lj1…m≠null其中m∈{1,2,3,4},并且pi≥pj;
如果一条SQL查询语句q所要求的权限为Pi,那么该用户至少需要拥有一条Pi,使得Pi≥Pj;否则q将不被允许执行。
在本发明实施例中,下面将分别具体叙述四种SQL操作在本发明中的处理流程:
1)DML(Data Manipulation Language数据操控语言)操作:包括select、insert等以数据库内数据对象为目标的操作,如图2所述,具体处理流程如下:
S201、输入SQL查询语句。
S202、根据该SQL查询语句的关键字生成语法树。
S203、判断是不是DML查询。
S204、如果不是DML查询,则进入相关查询的操作流程。
S205、如果是DML查询,则遍历语法树,获取要访问的数据库、数据表和数据列。
S206、采用JDBC(Java Data Base Connectivity Java数据库链接)验证元数据的真实性。
S207、验证结果为虚假,判定SQL语法检查错误,退出流程。
S208、验证结果为真实,从权限数据库中读取预存的操作权限信息。
S209、将申请的操作与预存的操作权限信息相比较进行权限验证。
S210、如果权限验证失败,判定权限不够,退出流程。
S211、如果权限验证成功,判定权限通过,执行所申请的操作。
2)DDL(Data Definition Language数据定义语言)读操作:包括展示数据库show databases、描述数据表describe table等展示数据库元数据结构的操作;针对DDL操作,除了正常执行具有DML操作的权限检查流程之外,如图3所示,还需要经过如下流程:
S301、采用JDBC获取元数据。
S302、针对每一条元数据,根据预存的操作权限信息检查该元数据是否允许被查看。
S303、该元数据不允许被查看,则该元数据不加入输出列表。
S304,该元数据允许被查看,则将该元数据加入输出列表。
S305、循环上述步骤S301至S304,直至每一条元数据检查完毕,并输出DDL查看结果。
3)DDL写操作,在经过与DML操作相同的权限检查后,如果符合权限,被允许执行,则执行相应的写操作。
这里需要说明的是,假如执行写操作成功了,则相应的数据信息或元数据就已经改变了,则还需要对权限数据库Privilege Storage进行更新,这种更新主要针对alter table(修改表的定义)以及drop table(从数据库中删除表)的操作。这两类操作都会使原先存储在Privilege Storage中原表的权限描述失效,如果不进行更新,会导致严重安全漏洞,例如,原先具有对表T的读权限,当表T被删除后,这条对表T的读权限也需要删除;否则新建的同名表T就在无显示配置访问权限的情况下被赋予了上一个同名表T的权限。因此,必须对权限数据库进行及时更新。
具体地,本发明方法还包括;对数据信息执行可执行操作以后,如果数据信息有变更,保存变更后的数据信息并更新相应的元数据;并对更新后的元数据的可操作权限进行更新。
其中,对更新后的元数据的可操作权限进行更新包括:对经过Insert和/或Alter操作的元数据进行数据权限的变更或删除,以及对经过drop操作的元数据进行数据权限的删除。
如图4所示,需要经过如下流程完成更新:
S401、从权限数据库中读取进行更改以前的数据信息或元数据的相关权限信息。
S402、针对每一条权限信息针对预定的权限规则判断该权限信息是否需要删除或修改。这里提到的“针对每一条权限规则判断是否需要删除”指的是如果规则中涉及到的Table的元数据被修改了,那么这条权限信息就需要被删除。
S403、需要删除该权限信息,则从权限数据库中删除该条权限信息。
S404、需要修改该权限信息,则根据更改后的数据信息对其权限信息进行修改。
4)权限授予或撤销操作,其流程较为简单:第一步通过语法解析判断是否为权限授予或删除操作,并翻译为对权限数据的读写操作;第二步,通过权限读取或写入服务来完成权限的授予或删除。如图5所示,总的流程如下所示:
S501、输入SQL查询语句。
S502、根据该SQL查询语句的关键字生成语法树。
S503、判断是不是授予或删除权限的查询。
S504、如果不是授予或删除权限的查询,则进入相关查询的操作流程。
S505、如果是授予或删除权限的查询,则判断是查看权限还是修改权限。这里,该修改权限包括授予或删除权限
S506、如果是修改权限,则在权限数据库中进行相应的权限修改并保存。
S507、如果是查看权限,则在权限数据库中读取相应的权限。
至此,便完整地介绍了本发明的数据库权限实现方法。本方法提出了一种在SQL以及元数据层面上实现的跨数据库实现的统一授权的数据库权限体系结构。
为了达到上述目的,本发明还提出了一种数据库权限实现系统01,如图6、图7所示,该系统包括:结构化查询语言SQL解析器02、元数据过滤模块03和权限监测模块04。
SQL解析器02,用于对输入的SQL查询语句进行解析,生成语法树。
元数据过滤模块03,用于通过语法树的元数据获得具有预设的描述形式的查询信息。
权限监测模块04,用于对查询信息的可操作权限进行验证,根据验证结果对通过查询信息查询到的数据信息执行相关操作。
优选地,预设的描述形式包括:五元组形式;该五元组包括数据库链接信息server、数据库名称database、表名称table、列名称column和权限类型privilege;
其中,privilege包括:读取Select、插入Insert、修改Alter、删除drop和全部All。
All包括:Select、Insert、Alter和drop。
优选地,元数据过滤模块03通过语法树的元数据获得具有预设的描述形式的查询信息包括:
根据语法树的元数据获取与SQL查询语句的关键字相关的一个或多个第一server。
从一个或多个第一server中获取与SQL查询语句的关键字相关的一个或多个第一数据库。
从一个或多个第一数据库中获取与SQL查询语句的关键字相关的一个或多个第一数据表。
从一个或多个第一数据表中获取与SQL查询语句的关键字相关的一个或多个第一数据列。
将第一server、第一数据库、第一数据表、第一数据列和想要执行的privilege以五元组的形式形成查询信息。
优选地,
权限监测模块04对查询信息的可操作权限进行验证包括:
将五元组形式的查询信息中所包含的第一privilege项与预存的五元组形势的权限信息中所包含的第二privilege项相比较;并且,对于第一privilege项所包含的一个或多个操作分别判断是否与第二privilege项中包含的一个或多个可执行操作中的至少一个可执行操作相同;其中,第一privilege项和第二privilege项分别至少包括以下一种:Select、Insert、Alter、drop和All。
权限监测模块04根据验证结果对通过查询信息查询到的数据信息执行相关操作包括:
当第二privilege项为All时,执行第一privilege项所包含的一个或多个操作。
当第二privilege项不为All,并且当第一privilege项所包含的一个操作与第二privilege项中的一个可执行操作相同时,执行可执行操作。
当第二privilege项不为All,并且当第一privilege项所包含的多个操作与第二privilege项中的多个可执行操作分别对应相同时,分别执行多个可执行操作。
优选地,该系统还包括元数据变更反馈模块05。
元数据变更反馈模块05,用于对数据信息执行可执行操作以后,如果数据信息有变更,保存变更后的数据信息并更新相应的元数据;并对更新后的元数据的可操作权限进行更新。
其中,元数据变更反馈模块05对更新后的元数据的可操作权限进行更新包括:对经过Insert和/或Alter操作的元数据进行数据权限的变更或删除,以及对经过drop操作的元数据进行数据权限的删除。
与现有技术相比,本发明包括:对输入的结构化查询语言SQL查询语句进行解析,生成语法树。语法树的元数据获得具有预设的描述形式的查询信息。对查询信息的可操作权限进行验证,根据验证结果对通过查询信息查询到的数据信息执行相关操作。通过本发明的方案,能够在结构化查询语言SQL以及元数据层面上实现跨数据库的统一授权。
需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。
Claims (10)
1.一种数据库权限实现方法,其特征在于,所述方法包括:
对输入的结构化查询语言SQL查询语句进行解析,生成语法树;
通过所述语法树的元数据获得具有预设的描述形式的查询信息;
对所述查询信息的可操作权限进行验证,根据验证结果对通过所述查询信息查询到的数据信息执行相关操作。
2.如权利要求1所述的数据库权限实现方法,其特征在于,
所述预设的描述形式包括:五元组形式;所述五元组包括数据库链接信息server、数据库名称database、表名称table、列名称column和权限类型privilege;
其中,所述privilege包括:读取Select、插入Insert、修改Alter、删除drop和全部All;
所述All包括:所述Select、Insert、Alter和drop。
3.如权利要求2所述的数据库权限实现方法,其特征在于,所述通过所述语法树的元数据获得具有预设的描述形式的查询信息包括:
根据所述语法树的元数据获取与所述SQL查询语句的关键字相关的一个或多个第一server;
从所述一个或多个第一server中获取与所述SQL查询语句的关键字相关的一个或多个第一数据库;
从所述一个或多个第一数据库中获取与所述SQL查询语句的关键字相关的一个或多个第一数据表;
从所述一个或多个第一数据表中获取与所述SQL查询语句的关键字相关的一个或多个第一数据列;
将所述第一server、所述第一数据库、所述第一数据表、所述第一数据列和想要执行的privilege以所述五元组的形式形成所述查询信息。
4.如权利要求3所述的数据库权限实现方法,其特征在于,
所述对所述查询信息的可操作权限进行验证包括:
将所述五元组形式的查询信息中所包含的第一privilege项与预存的五元组形势的权限信息中所包含的第二privilege项相比较;并且,对于所述第一privilege项所包含的一个或多个操作分别判断是否与所述第二privilege项中包含的一个或多个可执行操作中的至少一个可执行操作相同;其中,所述第一privilege项和所述第二privilege项分别至少包括以下一种:Select、Insert、Alter、drop和All;
所述根据验证结果对通过所述查询信息查询到的数据信息执行相关操作包括:
当所述第二privilege项为All时,执行所述第一privilege项所包含的一个或多个操作;
当所述第二privilege项不为All,并且当所述第一privilege项所包含的一个操作与所述第二privilege项中的一个可执行操作相同时,执行所述可执行操作;
当所述第二privilege项不为All,并且当所述第一privilege项所包含的多个操作与所述第二privilege项中的多个可执行操作分别对应相同时,分别执行所述多个可执行操作。
5.如权利要求4所述的数据库权限实现方法,其特征在于,所述方法还包括;
对所述数据信息执行所述可执行操作以后,如果所述数据信息有变更,保存变更后的所述数据信息并更新相应的元数据;并对更新后的元数据的可操作权限进行更新;
其中,所述对更新后的元数据的可操作权限进行更新包括:对经过所述Insert和/或Alter操作的元数据进行数据权限的变更或删除,以及对经过所述drop操作的元数据进行数据权限的删除。
6.一种数据库权限实现系统,其特征在于,所述系统包括:结构化查询语言SQL解析器、元数据过滤模块和权限监测模块;
所述SQL解析器,用于对输入的SQL查询语句进行解析,生成语法树;
所述元数据过滤模块,用于通过所述语法树的元数据获得具有预设的描述形式的查询信息;
所述权限监测模块,用于对所述查询信息的可操作权限进行验证,根据验证结果对通过所述查询信息查询到的数据信息执行相关操作。
7.如权利要求6所述的数据库权限实现系统,其特征在于,
所述预设的描述形式包括:五元组形式;所述五元组包括数据库链接信息server、数据库名称database、表名称table、列名称column和权限类型privilege;
其中,所述privilege包括:读取Select、插入Insert、修改Alter、删除drop和全部All;
所述All包括:所述Select、Insert、Alter和drop。
8.如权利要求7所述的数据库权限实现系统,其特征在于,所述元数据过滤模块通过所述语法树的元数据获得具有预设的描述形式的查询信息包括:
根据所述语法树的元数据获取与所述SQL查询语句的关键字相关的一个或多个第一server;
从所述一个或多个第一server中获取与所述SQL查询语句的关键字相关的一个或多个第一数据库;
从所述一个或多个第一数据库中获取与所述SQL查询语句的关键字相关的一个或多个第一数据表;
从所述一个或多个第一数据表中获取与所述SQL查询语句的关键字相关的一个或多个第一数据列;
将所述第一server、所述第一数据库、所述第一数据表、所述第一数据列和想要执行的privilege以所述五元组的形式形成所述查询信息。
9.如权利要求8所述的数据库权限实现系统,其特征在于,
所述权限监测模块对所述查询信息的可操作权限进行验证包括:
将所述五元组形式的查询信息中所包含的第一privilege项与预存的五元组形势的权限信息中所包含的第二privilege项相比较;并且,对于所述第一privilege项所包含的一个或多个操作分别判断是否与所述第二privilege项中包含的一个或多个可执行操作中的至少一个可执行操作相同;其中,所述第一privilege项和所述第二privilege项分别至少包括以下一种:Select、Insert、Alter、drop和All;
所述权限监测模块根据验证结果对通过所述查询信息查询到的数据信息执行相关操作包括:
当所述第二privilege项为All时,执行所述第一privilege项所包含的一个或多个操作;
当所述第二privilege项不为All,并且当所述第一privilege项所包含的一个操作与所述第二privilege项中的一个可执行操作相同时,执行所述可执行操作;
当所述第二privilege项不为All,并且当所述第一privilege项所包含的多个操作与所述第二privilege项中的多个可执行操作分别对应相同时,分别执行所述多个可执行操作。
10.如权利要求9所述的数据库权限实现系统,其特征在于,所述系统还包括元数据变更反馈模块;
所述元数据变更反馈模块,用于对所述数据信息执行所述可执行操作以后,如果所述数据信息有变更,保存变更后的所述数据信息并更新相应的元数据;并对更新后的元数据的可操作权限进行更新;
其中,所述元数据变更反馈模块对更新后的元数据的可操作权限进行更新包括:对经过所述Insert和/或Alter操作的元数据进行数据权限的变更或删除,以及对经过所述drop操作的元数据进行数据权限的删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610187615.9A CN107239710B (zh) | 2016-03-29 | 2016-03-29 | 一种数据库权限实现方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610187615.9A CN107239710B (zh) | 2016-03-29 | 2016-03-29 | 一种数据库权限实现方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107239710A true CN107239710A (zh) | 2017-10-10 |
CN107239710B CN107239710B (zh) | 2020-06-16 |
Family
ID=59983395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610187615.9A Active CN107239710B (zh) | 2016-03-29 | 2016-03-29 | 一种数据库权限实现方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107239710B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108629201A (zh) * | 2018-04-24 | 2018-10-09 | 山东华软金盾软件股份有限公司 | 一种对数据库非法操作进行阻断的方法 |
CN108681563A (zh) * | 2018-04-28 | 2018-10-19 | 新疆熙菱信息技术股份有限公司 | 基于一表多用户的服务发布及访问系统 |
CN109063439A (zh) * | 2018-08-17 | 2018-12-21 | 杭州数梦工场科技有限公司 | 一种用于Spark SQL的用户权限控制方法和系统 |
CN109582691A (zh) * | 2018-11-15 | 2019-04-05 | 百度在线网络技术(北京)有限公司 | 用于控制数据查询的方法和装置 |
CN109766686A (zh) * | 2018-04-25 | 2019-05-17 | 新华三大数据技术有限公司 | 权限管理 |
CN109815284A (zh) * | 2019-01-04 | 2019-05-28 | 平安科技(深圳)有限公司 | 一种数据处理的方法和装置 |
CN109992989A (zh) * | 2017-12-29 | 2019-07-09 | 西普霍特公司 | 使用抽象语法树的用于查询注入检测的系统 |
CN110555039A (zh) * | 2018-03-29 | 2019-12-10 | 武汉斗鱼网络科技有限公司 | 数据查询控制方法、存储介质、设备及系统 |
CN111523098A (zh) * | 2020-04-15 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 数据权限管理方法及装置 |
CN112347108A (zh) * | 2020-11-26 | 2021-02-09 | 上海天旦网络科技发展有限公司 | 适用于混合后端的数据查询方法和系统 |
CN114692208A (zh) * | 2022-05-31 | 2022-07-01 | 中建电子商务有限责任公司 | 一种数据查询服务权限的处理方法 |
CN116756727A (zh) * | 2023-08-22 | 2023-09-15 | 浙江华东工程数字技术有限公司 | 一种数据权限控制方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101448002A (zh) * | 2008-12-12 | 2009-06-03 | 北京大学 | 一种数字资源的访问方法及设备 |
CN104123288A (zh) * | 2013-04-24 | 2014-10-29 | 阿里巴巴集团控股有限公司 | 一种数据查询方法及装置 |
WO2015150802A1 (en) * | 2014-03-31 | 2015-10-08 | Perform Media Services Ltd | Distributed database access control method and system |
CN105205053A (zh) * | 2014-05-30 | 2015-12-30 | 阿里巴巴集团控股有限公司 | 一种数据库增量日志解析方法及系统 |
-
2016
- 2016-03-29 CN CN201610187615.9A patent/CN107239710B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101448002A (zh) * | 2008-12-12 | 2009-06-03 | 北京大学 | 一种数字资源的访问方法及设备 |
CN104123288A (zh) * | 2013-04-24 | 2014-10-29 | 阿里巴巴集团控股有限公司 | 一种数据查询方法及装置 |
WO2015150802A1 (en) * | 2014-03-31 | 2015-10-08 | Perform Media Services Ltd | Distributed database access control method and system |
CN105205053A (zh) * | 2014-05-30 | 2015-12-30 | 阿里巴巴集团控股有限公司 | 一种数据库增量日志解析方法及系统 |
Non-Patent Citations (1)
Title |
---|
宋金玉等: "《数据库原理与应用》", 30 June 2011, 清华大学出版社 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992989A (zh) * | 2017-12-29 | 2019-07-09 | 西普霍特公司 | 使用抽象语法树的用于查询注入检测的系统 |
CN109992989B (zh) * | 2017-12-29 | 2023-10-13 | 西普霍特公司 | 使用抽象语法树的用于查询注入检测的系统 |
CN110555039A (zh) * | 2018-03-29 | 2019-12-10 | 武汉斗鱼网络科技有限公司 | 数据查询控制方法、存储介质、设备及系统 |
CN108629201A (zh) * | 2018-04-24 | 2018-10-09 | 山东华软金盾软件股份有限公司 | 一种对数据库非法操作进行阻断的方法 |
CN109766686A (zh) * | 2018-04-25 | 2019-05-17 | 新华三大数据技术有限公司 | 权限管理 |
CN108681563B (zh) * | 2018-04-28 | 2021-08-27 | 新疆熙菱信息技术股份有限公司 | 基于一表多用户的服务发布及访问系统 |
CN108681563A (zh) * | 2018-04-28 | 2018-10-19 | 新疆熙菱信息技术股份有限公司 | 基于一表多用户的服务发布及访问系统 |
CN109063439A (zh) * | 2018-08-17 | 2018-12-21 | 杭州数梦工场科技有限公司 | 一种用于Spark SQL的用户权限控制方法和系统 |
CN109582691A (zh) * | 2018-11-15 | 2019-04-05 | 百度在线网络技术(北京)有限公司 | 用于控制数据查询的方法和装置 |
CN109815284A (zh) * | 2019-01-04 | 2019-05-28 | 平安科技(深圳)有限公司 | 一种数据处理的方法和装置 |
CN111523098A (zh) * | 2020-04-15 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 数据权限管理方法及装置 |
CN112347108A (zh) * | 2020-11-26 | 2021-02-09 | 上海天旦网络科技发展有限公司 | 适用于混合后端的数据查询方法和系统 |
CN114692208A (zh) * | 2022-05-31 | 2022-07-01 | 中建电子商务有限责任公司 | 一种数据查询服务权限的处理方法 |
CN114692208B (zh) * | 2022-05-31 | 2022-09-27 | 中建电子商务有限责任公司 | 一种数据查询服务权限的处理方法 |
CN116756727A (zh) * | 2023-08-22 | 2023-09-15 | 浙江华东工程数字技术有限公司 | 一种数据权限控制方法、装置、电子设备和存储介质 |
CN116756727B (zh) * | 2023-08-22 | 2023-12-29 | 浙江华东工程数字技术有限公司 | 一种数据权限控制方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107239710B (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107239710A (zh) | 一种数据库权限实现方法和系统 | |
US11972006B2 (en) | System of decentralized zero-trust services for creating, using and analyzing securely commingled self-governing data sets | |
US8930382B2 (en) | High performance secure data access in a parallel processing system | |
US10659467B1 (en) | Distributed storage and distributed processing query statement reconstruction in accordance with a policy | |
CN108475288B (zh) | 一种联合数据库统一访问控制的系统、方法和设备 | |
EP2565802B1 (en) | Data masking setup | |
US8930403B2 (en) | Fine-grained relational database access-control policy enforcement using reverse queries | |
US9626452B2 (en) | Fine-grained database access-control policy enforcement using reverse queries | |
CN104063482B (zh) | 一种面向不动产登记的业务数据整合方法 | |
US20120271854A1 (en) | Optimizing A Compiled Access Control Table In A Content Management System | |
US11971981B2 (en) | Systems and methods for a virtual sandbox database | |
US20110313981A1 (en) | Data Privacy, Redaction and Integrity for Relational Databases | |
US8301660B2 (en) | Enforcing restrictions for graph data manipulation operations | |
CN104781809A (zh) | 容器数据库 | |
US11620378B2 (en) | Systems and methods for proactive and reactive data security | |
JP2010533915A (ja) | データマスキングを用いた保安システムおよびそのデータ保安方法 | |
CN102880835A (zh) | 在多节点环境中用于数据库的数据安全性方法和系统 | |
CN109906447A (zh) | 管理请求数据库系统中不存在的索引键的事务 | |
CN114424191A (zh) | 基于被访问资源的对数据库的过程语言的细粒度访问控制 | |
Safaee et al. | StreamFilter: a framework for distributed processing of range queries over streaming data with fine-grained access control | |
Zhezhnych et al. | On restricted set of DML operations in an ERP System’s database | |
Carter et al. | Data-Level Security | |
Pollack et al. | Permissions and Security | |
Larson | Separating Production from Development | |
Carter et al. | Policy-based management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220701 Address after: 15, second floor, east side of clean coal workshop, No. 68, Shijingshan Road, Shijingshan District, Beijing 100043 (cluster registration) Patentee after: Beijing Zhizhi Heshu Technology Co.,Ltd. Address before: Floor 5, building 1, No. 398, Zhongdong Road, Dongxiaokou Town, Changping District, Beijing 102218 Patentee before: MININGLAMP SOFTWARE SYSTEMS Co.,Ltd. |
|
TR01 | Transfer of patent right |