一种数据访问控制方法和装置与流程

文档序号:14249856阅读:155来源:国知局
一种数据访问控制方法和装置与流程

本发明涉及移动通信技术,特别是涉及一种数据访问控制方法和装置。



背景技术:

随着大数据时代的来临,对数据分析类软件的要求越来越高,传统的针对某些特定功能进行开发的软件逐渐被功能丰富、操作灵活的商业智能(businessintelligence,bi)系统所取代。bi系统是在erp等信息化管理工具的基础上提出的,是基于信息技术构建的智能化管理工具,它实时地对erp、crm、scm等管理工具生成的企业数据进行各种分析,并给出报告,帮助管理者认识企业和市场的现状,做出正确的决策。

目前大多数bi系统都提供使用数据库查询命令(sql)直接查询数据库的功能,一般来讲通常有两种数据查询实现方案:一种是为每个用户分配用于登录数据库的用户名和密码,用户查询数据库时需要在bi系统中输入登录数据库的用户名和密码信息,然后,再由bi系统根据用户输入的该用户名和密码信息,访问数据库查询用户所需要的数据,其中,登录数据库的用户名和密码是由数据库管理员(dba)负责在数据库中进行设置;另一种是在bi系统中预先配置一个具有较高访问权限的数据库访问账户并建立相应的访问数据库的连接,用户在使用sql查询数据库时不需要进行数据库登录,bi系统直接利用上述数据库访问账户,访问数据库查询用户所需要的数据。

hive是一个hadoop体系下的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为mapreduce任务进行运行。hive在bi系统中得到了广泛的应用,是目前构建大数据平台的标准选择。

对于利用hive实现数据库访问的bi系统而言,上述第一种数据查询方案无法应用。因为第一种方案中数据库管理员需要在数据库中设置各用户的访问授权,而hive中只能为所有用户配置一个数据访问账户,不具有对每个用户分别进行访问授权配置的功能,因此,数据库管理员无法实现在数据库中为每个用户配置用于登录数据库的用户名和密码,从而导致第一种方案不能应用于基于hive实现数据访问的数据仓库中。

而第二种方案中,由于hive的访问权限控制功能的不完善,使得所有用户只能配置相同的数据库访问权限,而无法针对不同的用户设置不同的访问权限,进而无法通过对用户数据访问权限的更细粒度控制,来满足区分用户进行访问权限管理的需要。



技术实现要素:

有鉴于此,本发明的主要目的在于提供一种数据访问控制方法和装置,可以在基于hive实现数据库访问的场景中,实现对不同用户的数据访问权限的控制。

为了达到上述目的,本发明提出的技术方案为:

一种数据访问控制方法,包括:

当应用系统接收到用户的数据库查询命令时,确定所述数据库查询命令需要访问的数据表;

所述应用系统根据预设的授权规则,判断所述用户是否对所述需要访问的所有数据表均拥有相应的访问权限,如果是,则执行所述数据库查询命令,否则,拒绝执行所述数据库查询命令。

一种数据访问控制装置,包括:

表提取单元,用于当应用系统接收到用户的数据库查询命令时,确定所述数据库查询命令需要访问的数据表;

授权控制单元,所述应用系统根据预设的授权规则,判断所述用户是否对所述需要访问的所有数据表均拥有相应的访问权限,如果是,则执行所述数据库查询命令,否则,拒绝执行所述数据库查询命令。

综上所述,本发明提出的数据访问控制方法和装置,预先在应用系统中设置数据访问的授权规则,在收到用户的sql命令时,提取出该命令涉及的所有数据表的表名,再根据所述授权规则判断该用户是否有权限访问这些数据表,只有用户具有访问所有这些数据表的权限的情况下,才执行该sql命令。这样,在应用系统中即可完成数据库访问的权限控制的功能,从而可以克服现有数据查询方案由于受限于hive的访问权限控制功能的不完善,而不能区分用户进行访问权限管理的问题。

附图说明

图1为本发明实施例的方法流程示意图;

图2为本发明实施例的装置结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。

本发明的核心思想是:预先在应用系统中设置数据访问的授权规则,在应用系统收到用户的sql命令时,提取其中涉及的所有数据表的表名,再根据所述授权规则判断该用户是否有权限访问这些数据表,然后根据判断结果控制sql命令的执行。这样,在应用系统中即可完成数据库访问的权限控制的功能,从而可以克服现有数据查询方案不能区分用户进行访问权限管理的问题。

图1为本发明实施例的方法流程示意图,如图1所示,该实施例实现的数据访问控制方法主要包括:

步骤101、当应用系统接收到用户的数据库查询命令时,确定所述数据库查询命令需要访问的数据表。

本步骤中,应用系统对于用户输入的数据库查询命令即sql命令,需要确定出执行该sql命令需要访问的数据表,以便在后续步骤中,进一步判断用户是否有权访问这些表,以实现由应用系统对不同用户的数据访问进行控制。

具体的,所述应用系统可以为bi系统,但不限于此,只要是软件应用系统均可。

较佳地,可以采用下述方法确定所述数据库查询命令需要访问的数据表:

所述应用系统利用本系统预设的数据表名提取文件,提取出所述数据库查询命令包含的所有数据表名,将所述数据表名确定为所述需要访问的数据表的表名。

在上述方法中应用系统利用本系统中的数据表名提取文件来实现对sql命令中的表名的提取,该数据表名提取文件为预先生成的文件。较佳地,可以采用下述方法生成该数据表名提取文件:

步骤x1、从所述应用系统使用的数据库查询工具的源代码中,获取select查询语句的语法规范和文法规范。

这里,为了确保正确获取sql命令中的数据表名,需要从应用系统使用的数据库查询工具的源代码中提取出相应的select查询语句的语法规范和文法规范,来作为用于解析sql命令的规则。

具体地,所述数据库查询工具可以为hive。具体地,可以采用下述方法从hive的源代码中提取出select查询语句的语法规范和文法规范。

从当前应用系统使用的hive的源代码中找到hplsql.g4文件,从中提取从select_stmt子句到func_param子句部分的代码作为select查询语句的语法规范,同时也将hplsql.g4文件中词法定义部分提取出来作为select查询语句的文法规范。

步骤x2、利用所述select查询语句的语法规范和文法规范以及用于从数据库查询命令中提取数据表名的语义动作指令,生成sql语法文件。

本步骤用于将步骤x1中提取出的select查询语句的语法规范和文法规范和用于从数据库查询命令中提取数据表名的语义动作指令一起放到一新建的sql语法文件中,从而得到一个可以执行从数据库查询命令中提取表名操作的sql语法文件。具体地,对于hive而言,该sql语法文件为select.g4文件。

步骤x3、对所述sql语法文件编译,生成java代码文件,将所述java代码文件确定为所述数据表名提取文件。

当所述数据表名提取文件为select.g4文件时,应用系统利用select.g4文件,提取出数据库查询命令包含的所有数据表名的具体方法为本领域人员所掌握,即调用select.g4文件中的selectstmt方法,并传入用户输入的数据库查询命令的字符串进行表名提取,由于antlr使用自顶向下递归方式进行文法处理,当处理到func_param子句时,调用语义动作将表名加入到列表对象list中,整个文法处理完成后selectstmt方法返回包含所有表名的list对象。

步骤102、所述应用系统根据预设的授权规则,判断所述用户是否对所述需要访问的所有数据表均拥有相应的访问权限,如果是,则执行所述数据库查询命令,否则,拒绝执行所述数据库查询命令。

具体地,所述授权规则包括数据仓库中每个数据表对应的授权用户信息。

本步骤中,只有在用户被预先授权访问数据库查询命令中所涉及的所有数据表的情况下,应用系统才执行该数据库查询命令,这样,就可以通过预设的区分用户进行授权的数据库访问授权规则,来实现区分用户的数据访问控制。该控制是由应用系统实现的,而不依赖于数据库查询工具是否具有授权管理功能,因此,在hive场景下,可以克服传统方案无法区分用户进行访问权限管理的问题。

图2为与上述方法相对应的一种数据访问控制装置,如图2所示,该装置包括:

表提取单元,用于当应用系统接收到用户的数据库查询命令时,确定所述数据库查询命令需要访问的数据表;

授权控制单元,所述应用系统根据预设的授权规则,判断所述用户是否对所述需要访问的所有数据表均拥有相应的访问权限,如果是,则执行所述数据库查询命令,否则,拒绝执行所述数据库查询命令。

较佳地,所述授权规则包括数据仓库中每个数据表对应的授权用户信息。

较佳地,所述表提取单元,用于利用本应用系统中预设的数据表名提取文件,提取出所述数据库查询命令包含的所有数据表名,将所述数据表名确定为所述需要访问的数据表的表名。

较佳地,所述数据表名提取文件的生成包括:

从所述应用系统使用的数据库查询工具的源代码中,获取select查询语句的语法规范和文法规范;

利用所述select查询语句的语法规范和文法规范以及用于从数据库查询命令中提取数据表名的语义动作指令,生成sql语法文件;

对所述sql语法文件编译,生成java代码文件,将所述java代码文件确定为所述数据表名提取文件。

较佳地,所述数据库查询工具为hive,所述sql语法文件为select.g4文件。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1