CN107944288B - 一种数据访问控制方法和装置 - Google Patents

一种数据访问控制方法和装置 Download PDF

Info

Publication number
CN107944288B
CN107944288B CN201610889223.7A CN201610889223A CN107944288B CN 107944288 B CN107944288 B CN 107944288B CN 201610889223 A CN201610889223 A CN 201610889223A CN 107944288 B CN107944288 B CN 107944288B
Authority
CN
China
Prior art keywords
database query
file
data table
application system
data
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
Application number
CN201610889223.7A
Other languages
English (en)
Other versions
CN107944288A (zh
Inventor
魏佳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201610889223.7A priority Critical patent/CN107944288B/zh
Publication of CN107944288A publication Critical patent/CN107944288A/zh
Application granted granted Critical
Publication of CN107944288B publication Critical patent/CN107944288B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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
    • G06F21/6227Protecting 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 where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Abstract

本申请公开了一种数据访问控制方法和装置,其中方法包括:当应用系统接收到用户的数据库查询命令时,确定所述数据库查询命令需要访问的数据表;所述应用系统根据预设的授权规则,判断所述用户是否对所述需要访问的所有数据表均拥有相应的访问权限,如果是,则执行所述数据库查询命令,否则,拒绝执行所述数据库查询命令。在基于Hive实现数据库访问的场景中,采用本发明可以实现对不同用户的数据访问权限进行控制。

Description

一种数据访问控制方法和装置
技术领域
本发明涉及移动通信技术,特别是涉及一种数据访问控制方法和装置。
背景技术
随着大数据时代的来临,对数据分析类软件的要求越来越高,传统的针对某些特定功能进行开发的软件逐渐被功能丰富、操作灵活的商业智能(Business Intelligence,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文件。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种数据访问控制方法,其特征在于,包括:
当应用系统接收到用户的数据库查询命令时,所述应用系统确定所述数据库查询命令需要访问的数据表;所述应用系统为利用Hive实现数据库访问的软件应用系统;所述数据库查询命令为SQL命令;
所述应用系统根据预设的授权规则,判断所述用户是否对所述需要访问的所有数据表均拥有相应的访问权限,如果是,则执行所述数据库查询命令,否则,拒绝执行所述数据库查询命令;
其中,所述确定所述数据库查询命令需要访问的数据表包括:
所述应用系统利用本系统预设的数据表名提取文件,提取出所述数据库查询命令包含的所有数据表名,将所述数据表名确定为所述需要访问的数据表的表名。
2.根据权利要求1所述的方法,其特征在于,所述授权规则包括数据仓库中每个数据表对应的授权用户信息。
3.根据权利要求1所述的方法,其特征在于,所述数据表名提取文件的生成方法包括:
从所述应用系统使用的数据库查询工具的源代码中,获取select查询语句的语法规范和文法规范;
利用所述select查询语句的语法规范和文法规范以及用于从数据库查询命令中提取数据表名的语义动作指令,生成sql语法文件;
对所述sql语法文件编译,生成JAVA代码文件,将所述JAVA代码文件确定为所述数据表名提取文件。
4.根据权利要求3所述的方法,其特征在于,
所述数据库查询工具为Hive,所述sql语法文件为select.g4文件。
5.一种数据访问控制装置,其特征在于,包括:
表提取单元,用于当应用系统接收到用户的数据库查询命令时,所述应用系统确定所述数据库查询命令需要访问的数据表;所述应用系统为利用Hive实现数据库访问的软件应用系统;所述数据库查询命令为SQL命令;所述确定所述数据库查询命令需要访问的数据表包括:利用本应用系统中预设的数据表名提取文件,提取出所述数据库查询命令包含的所有数据表名,将所述数据表名确定为所述需要访问的数据表的表名;
授权控制单元,所述应用系统根据预设的授权规则,判断所述用户是否对所述需要访问的所有数据表均拥有相应的访问权限,如果是,则执行所述数据库查询命令,否则,拒绝执行所述数据库查询命令。
6.根据权利要求5所述的装置,其特征在于,所述授权规则包括数据仓库中每个数据表对应的授权用户信息。
7.根据权利要求5所述的装置,其特征在于,所述数据表名提取文件的生成包括:
从所述应用系统使用的数据库查询工具的源代码中,获取select查询语句的语法规范和文法规范;
利用所述select查询语句的语法规范和文法规范以及用于从数据库查询命令中提取数据表名的语义动作指令,生成sql语法文件;
对所述sql语法文件编译,生成JAVA代码文件,将所述JAVA代码文件确定为所述数据表名提取文件。
8.根据权利要求7所述的装置,其特征在于,
所述数据库查询工具为Hive,所述sql语法文件为select.g4文件。
CN201610889223.7A 2016-10-12 2016-10-12 一种数据访问控制方法和装置 Active CN107944288B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610889223.7A CN107944288B (zh) 2016-10-12 2016-10-12 一种数据访问控制方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610889223.7A CN107944288B (zh) 2016-10-12 2016-10-12 一种数据访问控制方法和装置

Publications (2)

Publication Number Publication Date
CN107944288A CN107944288A (zh) 2018-04-20
CN107944288B true CN107944288B (zh) 2022-09-06

Family

ID=61928200

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610889223.7A Active CN107944288B (zh) 2016-10-12 2016-10-12 一种数据访问控制方法和装置

Country Status (1)

Country Link
CN (1) CN107944288B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109214210A (zh) * 2018-09-14 2019-01-15 南威软件股份有限公司 一种优化蜂巢权限管理的方法及系统
CN109543448B (zh) * 2018-11-16 2022-07-15 深圳前海微众银行股份有限公司 Hdfs文件访问权限控制方法、设备及存储介质
CN114609985B (zh) * 2022-03-11 2024-01-26 傲普(上海)新能源有限公司 一种ems系统的控制方法、装置、介质及设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100456237C (zh) * 2007-01-31 2009-01-28 华为技术有限公司 数据库访问方法和装置
CN100498792C (zh) * 2007-06-08 2009-06-10 北京神舟航天软件技术有限公司 数据库表行级数据的自主访问控制方法
CN104077284A (zh) * 2013-03-26 2014-10-01 中国移动通信集团湖北有限公司 一种数据安全访问方法及系统
CN103412766A (zh) * 2013-09-05 2013-11-27 曙光云计算技术有限公司 基于用户权限的数据访问方法和装置
CN103488791B (zh) * 2013-09-30 2018-03-27 华为技术有限公司 数据访问方法、系统及数据仓库
CN104484621B (zh) * 2014-12-31 2017-09-29 中博信息技术研究院有限公司 基于sql的数据权限控制方法
CN105812338B (zh) * 2014-12-31 2020-04-21 中国移动通信集团公司 一种数据访问管控方法及网络管理设备
CN105656903B (zh) * 2016-01-15 2018-07-27 国家计算机网络与信息安全管理中心 一种Hive平台的用户安全管理系统及应用

Also Published As

Publication number Publication date
CN107944288A (zh) 2018-04-20

Similar Documents

Publication Publication Date Title
US11099823B2 (en) Systems and methods for transformation of reporting schema
CN104123227A (zh) 一种自动生成测试用例的方法
WO2020238359A1 (zh) 分区授权方法、装置、设备及计算机可读存储介质
CN104363211A (zh) 一种权限管理方法及系统
CN111460506A (zh) 数据访问控制方法及装置
CN111552678A (zh) 数据权限的配置方法、装置及计算机设备
CN110908997A (zh) 数据血缘构建方法、装置、服务器及可读存储介质
CN104133772A (zh) 一种自动生成测试数据的方法
CN107122365A (zh) 异构数据库的访问方法及装置
CN107358069B (zh) 一种基于Hue的权限管理系统
CN107944288B (zh) 一种数据访问控制方法和装置
US20160132308A1 (en) Leveraging legacy applications for use with modern applications
CN110781505B (zh) 系统构建方法及装置、检索方法及装置、介质和设备
CN104461531A (zh) 一种报表系统自定义函数的实现方法
CN113282599A (zh) 数据同步方法及系统
US8214382B1 (en) Database predicate constraints on structured query language statements
CN110334545B (zh) 一种基于sql的权限控制方法、装置和电子设备
KR102421397B1 (ko) 프로그래밍 코드 자동생성을 통한 백엔드 구축 방법
WO2018076971A1 (zh) 一种xml数据的操作方法及设备
CN114443015A (zh) 一种基于数据库元数据的增删改查服务接口生成方法
US10291746B2 (en) Context switch of database connections
US10003492B2 (en) Systems and methods for managing data related to network elements from multiple sources
US20120330923A1 (en) Value-based positioning for outer join queries
CN106020923A (zh) SELinux策略的编译方法及系统
CN111158653B (zh) 基于sql语言的实时计算程序的集成开发及执行系统

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