CN109144978A - 权限管理方法及装置 - Google Patents

权限管理方法及装置 Download PDF

Info

Publication number
CN109144978A
CN109144978A CN201810928016.7A CN201810928016A CN109144978A CN 109144978 A CN109144978 A CN 109144978A CN 201810928016 A CN201810928016 A CN 201810928016A CN 109144978 A CN109144978 A CN 109144978A
Authority
CN
China
Prior art keywords
authority
sql statement
column
data table
permissions 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.)
Granted
Application number
CN201810928016.7A
Other languages
English (en)
Other versions
CN109144978B (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.)
New H3C Big Data Technologies Co Ltd
Original Assignee
New H3C Big Data Technologies 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 New H3C Big Data Technologies Co Ltd filed Critical New H3C Big Data Technologies Co Ltd
Priority to CN201810928016.7A priority Critical patent/CN109144978B/zh
Publication of CN109144978A publication Critical patent/CN109144978A/zh
Application granted granted Critical
Publication of CN109144978B publication Critical patent/CN109144978B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本公开涉及权限管理方法及装置,包括从接收到的授权SQL语句中获取授权信息;在所述授权信息中包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的列权限数据表中,在所述授权信息中不包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的表权限数据表中;接收到访问SQL语句时,根据所述表权限数据表中的权限记录对所述访问SQL语句进行表级权限验证,并在所述表级权限验证未通过时,根据所述列权限数据表中的权限记录对所述访问SQL语句进行列级权限验证。通过根据列级权限数据表和表级权限数据表进行权限验证,根据本公开实施例的权限管理方法及装置能够实现SparkSQL中细粒度的权限管理。

Description

权限管理方法及装置
技术领域
本公开涉及数据库技术领域,尤其涉及一种权限管理方法及装置。
背景技术
Spark是一种基于内存计算的大数据计算框架,提供了分布式计算功能,将分布式存储的数据读入,同时将任务分发到各个节点进行计算。Spark提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。
SparkSQL是一种基于Spark的分布式SQL(Structured Query Language,结构化查询语言)引擎,支持SQL语句,极大的方便了熟悉关系型数据库的用户。
权限管理指根据系统设置的安全规则或者安全策略。在数据库操作中,只有授权的用户才能够对数据库有操作权限,普通用户无法查看或修改数据库的数据,提高了数据的安全性。
数据库权限管理包括表级权限管理和列级权限管理,表级权限管理是将表级权限赋给用户后,用户对表中所有列都具备操作权限。列级权限管理是将表中指定列的权限赋给用户后,用户仅对指定列具有操作权限。相关技术中,SparkSQL不具有列级权限管理功能。
发明内容
有鉴于此,本公开提出了一种权限管理方法及装置,能够实现SparkSQL中细粒度的权限管理。
根据本公开的一方面,提供了一种权限管理方法,所述方法包括:从接收到的授权SQL语句中获取授权信息;在所述授权信息中包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的列权限数据表中,在所述授权信息中不包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的表权限数据表中;接收到访问SQL语句时,根据所述表权限数据表中的权限记录对所述访问SQL语句进行表级权限验证,并在所述表级权限验证未通过时,根据所述列权限数据表中的权限记录对所述访问SQL语句进行列级权限验证。
根据本公开的另一方面,提供了一种权限管理装置,所述装置包括:第一获取模块,用于从接收到的授权SQL语句中获取授权信息;添加模块,用于在所述授权信息中包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的列权限数据表中,在所述授权信息中不包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的表权限数据表中;验证模块,用于接收到访问SQL语句时,根据所述表权限数据表中的权限记录对所述访问SQL语句进行表级权限验证,并在所述表级权限验证未通过时,根据所述列权限数据表中的权限记录对所述访问SQL语句进行列级权限验证。
在本公开实施例中,能够将从授权SQL语句获取的授权信息保存在列权限数据表或者表权限数据表中,从而对用户授予表级别的权限或者列级别的权限,并在接收到访问SQL语句时,先根据表权限数据表对访问SQL语句进行表级别权限验证,在表级别权限验证未通过时,再根据列权限数据表对访问SQL语句进行列级别权限验证,实现SparkSQL中细粒度的权限管理。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的权限管理方法的流程图。
图2示出一种Spark架构的示意图。
图3示出根据本公开一实施例的权限管理方法的流程图。
图4示出根据本公开一实施例的权限管理方法的流程图。
图5示出根据本公开一实施例的权限管理装置的框图。
图6示出根据本公开一实施例的权限管理装置的框图。
图7是根据一示例性实施例示出的一种用于权限管理的装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开一实施例的权限管理方法的流程图。
图2示出一种Spark架构的示意图。如图2所示,Spark架构中包括Driver(驱动器)、Cluster Manager(集群管理器)和Worker Node(工作节点)。其中,驱动器负责对应用程序进行调度、对task(任务)分配等进行管理,SparkContext是整个分布式程序运行的起点。集群管理器负责工作节点资源的分配和管理。工作节点负责创建Executor(执行器),将资源和任务进一步分配给执行器,并同步资源标识给集群管理器。其中,执行器是工作节点上的进程,负责对分配给该进程的任务进行处理。
图1所述的权限管理方法可以应用于图2所示的Spark架构中的驱动器。如图1所示,该权限管理方法可包括:
步骤S11,从接收到的授权SQL语句中获取授权信息。
SQL指结构化查询语言,是一种数据库查询和程序设计语言,用于访问数据库系统。对数据库的访问操作可以包括:插入、查询、更新和删除等,SQL语句可以用来实现上述访问操作。SQL语句是一种描述性的语言,指明了访问任务,驱动器需要根据SQL语句指定一个执行计划,该执行计划表明了如何完成所述访问任务,执行器执行该执行计划,从而实现访问任务。
一条SQL语句的处理流程包括词法解析、语法解析、优化、策略制定和执行。在词法解析阶段,SQL语句经过Parse(解析器)解析成Unresolved LogicalPlan;在语法解析阶段,Analyzer(分析器)结合Catalog(数据字典)对Unresolved LogicalPlan进行绑定,生成Resolved LogicalPlan;在优化阶段,Optimizer(优化器)对Resolved LogicalPlan进行优化,生成Optimized LogicalPlan;在策略制定阶段,SparkPlan(执行计划模块)将Optimized LogicalPlan转换成PhysicalPlan。进入执行阶段,执行器将PhysicalPlan转换成可执行物理计划,并执行该可执行物理计划,生成RDD(Resilient DistributedDatasets,弹性分布式数据集)。其中,一条SQL语句在进入执行阶段之前(词法解析、语法解析、优化和策略制定)都是在图2所示的驱动器执行,在执行时会被分发到图2所示的工作节点中的执行器执行。需要说明的是,在SQL语句处理流程中,Unresolved LogicalPlan、ResolvedLogicalPlan、Optimized LogicalPlan均为逻辑计划。
授权SQL语句可以用于向某些用户授予对某些资源(数据表或者数据表中的列)的执行某些操作(查询、插入、更新和删除中的一者或多者)的权限,例如,请求向用户A授予对数据表A进行插入、删除等操作的权限;再例如,请求向用户B授予对数据表B的列A进行删除、更新等操作的权限。驱动器接收到授权SQL语句时,可以从授权SQL语句中获取权限信息。
SparkSQL的语法文件中存储有SparkSQL所支持的语法,每条语法设置有对应的关键字。在词法解析阶段,驱动器可以根据SQL语句的关键字,查找到SQL语句对应的语法,进而按照语法对SQL语句进行解析,确定出SQL语句每一部分的含义。
在本公开实施例中,在词法解析阶段,增加对授权SQL语句的解析功能,使得驱动器能够解析授权SQL语句,从授权SQL语句中获取授权信息。
在一种可能的实现方式中,可以在SparkSQL的语法文件中添加授权语法,并为授权语法设置关键字,所述授权语法定义了用户标识、资源标识和类型标识。如此,步骤S11可以实现为:对接收到的SQL语句进行词法解析,获取关键字;若所述关键字映射到授权语法,则按照所述授权语法,从所接收到的SQL语句中获取用户标识、资源标识和类型标识,作为授权信息。
其中,资源标识可以为数据表名、数据表编号、列名、列编号等,对此本公开不做限制。
通过授权SQL语句可以向用户授予插入和/或查询和/或更新和/或删除的类型的权限,类型标识可以用于表示这些类型。例如,当授权SQL语句中类型标识为INSERT(或者SELECT或者UPDATE或者DELETE)时,驱动器可以确定授权类型为插入(或者查询或者更新或者删除)。当授权SQL语句中类型标识为INSERT和SELECT时,驱动器可以确定授权类型为插入和查询。在一个示例中,可以设置一个代表所有权限的类型标识ALL,当授权SQL语句中类型标识为ALL时,驱动器可以确定授权类型为插入、查询、更新和删除。
在一种可能的实现方式中,驱动器可以从授权SQL语句中获取一个或多个授权信息,每个授权信息对应一个数据表,每个授权信息可以包括一个或多个类型标识以及一个或多个用户标识。这样,驱动器可以同时对不同数据表进行授权,且针对每一个数据表,驱动器可以同时对不同用户授予相同的权限,同时对同一用户授予不同类型的权限。
步骤S12,在所述授权信息中包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的列权限数据表中,在所述授权信息中不包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的表权限数据表中。
在一种可能的实现方式中,元数据库可以为第三方元数据管理组件的用于保存元数据的数据库。第三方元数据管理组件提供了将元数据保存到数据库的功能和从数据库查询元数据的功能。在一个示例中,第三方元数据管理组件可以为Hive Metastore。驱动器通过调用第三方元数据管理组件接口,可以建立与第三方元数据管理组件的连接。由于第三方元数据管理组件提供了将元数据保存到数据库的功能,因此驱动器将授权信息传送给第三方元数据管理组件后,第三方元数据管理组件可以根据授权信息生成权限记录,并保存在数据库中,实现授权信息的存储,授权信息的存储由第三方元数据管理组件实现,节省了驱动器资源。
由于第三方元数据管理组件还提供了从数据库查询元数据的功能,因此,驱动器还可以通过第三方元数据管理组件查询权限记录,进而实现权限验证。
在一种可能的实现方式中,对应于授权语法可以增加一个实现授权功能的逻辑计划,记为GrantPriviledgeCommand,该逻辑计划可以继承自RunnableCommand,由于RunnableCommand是一种直接可执行的逻辑计划。驱动器对授权SQL语句进行词法解析,获取到授权信息后,可以根据授权信息构造并返回GrantPriviledgeCommand。
在GrantPriviledgeCommand中,驱动器可以判断授权信息中是否包括列标识。在授权信息中包括列标识时,表明授权SQL语句是对列级权限的授权,驱动器可以将根据授权信息生成的权限记录添加至元数据库的列权限数据表中。在授权信息中不包括列标识时,表明授权SQL语句是对列级权限的授权,驱动器可以将根据授权信息生成的权限记录添加至元数据库的表权限数据表中。
表权限数据表和列权限数据表的结构的区别是表权限数据表只需要存储表标识,而列权限数据表需要存储表标识和列标识。在一种可能的实现方式中,表权限数据表的结构可以为:表标识、类型标识和被授权的用户标识。列权限数据表的结构可以为:表标识、列标识、类型标识和被授权的用户标识。权限记录包括的内容与该权限记录被添加至的数据表的结构一致。当权限记录要被添加至表权限数据表时,权限记录包括的内容与表权限数据表的结构一致,权限记录中包括表标识、类型标识和被授权的用户标识。当权限记录要被添加至列权限数据表时,权限记录的内容与表权限数据表的结构一致,权限记录中包括表标识、列标识、类型标识和被授权的用户标识。
在一种可能的实现方式中,表权限数据表或者列权限数据表的结构还可以包括:记录创建时间、授权者的标识以及再授权标识中的一者或多者。其中,再授权标识用于表示被授权用户是否具有再次将该权限授予其他用户的权限。
需要说明的是,在本公开实施例中,表权限数据表和列权限数据表是不同的数据表,表级权限授权不会转为对表中所有列的权限授权,即在授权信息中包括表标识而不包括列标识,与授权信息中包括表标识对应的所有列标识是不同的。
步骤S13,接收到访问SQL语句时,根据所述表权限数据表中的权限记录对所述访问SQL语句进行表级权限验证,并在所述表级权限验证未通过时,根据所述列权限数据表中的权限记录对所述访问SQL语句进行列级权限验证。
访问SQL语句表示用户对资源进行访问操作,例如向数据库中插入数据、查询数据、更新数据,删除数据等。访问SQL语句可以为Insert语句、Select语句、Update语句、Delete语句等。
在一种可能的实现方式中,对接收到的SQL语句进行词法解析,获取关键字,若关键字映射到访问语法(例如:插入语法、查询语法、更新语法和删除语法等),则按照关键字映射到的语法进行词法解析,并在语法解析阶段将访问SQL语句转换成对应的逻辑计划并进入权限验证流程。
若验证通过,则驱动器确认逻辑计划构造完成,进入优化阶段;若验证未通过,则驱动器提示无权限,并结束流程。
语法解析阶段有一系列的rule(规则),驱动器可以遍历每一个规则,利用这些规则对词法解析阶段得到的逻辑计划进行处理,并返回处理后的逻辑计划。返回的逻辑计划会被下一个规则接着处理。
在本公开实施例中,在语法解析阶段增加了权限验证的规则,驱动器将经过其他规则处理后的逻辑计划传入权限验证规则中,根据权限验证规则,驱动器不对逻辑计划做任何改动,只是从逻辑计划中获取需要的验证信息,进行权限验证。权限验证流程将通过图3的实施例进行说明。
图3示出根据本公开一实施例的权限管理方法的流程图。如图3所示,权限验证的流程包括:
步骤S131,接收到所述访问SQL语句时,获取目标用户标识,所述目标用户标识为执行所述访问SQL语句的用户的标识。
执行访问SQL语句的用户为需要验证权限的用户,该用户的标识就是目标用户标识。
步骤S132,对所述访问SQL语句进行解析,得到目标权限信息,所述目标权限信息包括资源标识和类型标识。
在词法解析阶段,驱动器可以确定SQL语句的类型标识,例如,根据关键字映射到插入语法时,可确定类型标识为插入,根据关键字映射到删除语法时,可确定类型标识为删除等。根据类型标识可将SQL语句映射到相应类型的逻辑计划,例如,访问类型为查询时,可将SQL语句映射到Project类型的逻辑计划。
在语法解析阶段,利用权限验证规则对该逻辑计划执行处理时,可以获取到该逻辑计划的类型以及资源标识。基于在词法解析阶段得到的逻辑计划的类型和类型标识的映射,即可确定逻辑计划的类型对应的类型标识。
在一种可能的实现方式中,目标权限信息的资源标识可以在语法解析阶段从逻辑计划获取。该方式获取的资源标识较为详细,例如可以获取到被访问的数据表的表标识,以及该数据表中被访问的列标识等信息。
资源标识可以为数据表名、数据表编号、列名、列编号等,对此本公开不做限制。
步骤S133,将所述目标用户标识和所述目标权限信息作为目标验证信息。
步骤S134,在所述表权限数据表中查找与所述目标验证信息匹配的权限记录。
步骤S135,若在所述表权限数据表中查找到与所述目标验证信息匹配的权限记录,则确定所述目标验证信息验证通过。
步骤S136,若在所述表权限数据表中未查找到与所述目标验证信息匹配的权限记录,则在所述列权限数据表中查找与所述目标验证信息匹配的权限记录。
步骤S137,若在所述列权限数据表中查找到与所述目标验证信息匹配的权限记录,则确定所述目标验证信息验证通过。
在权限验证时,驱动器首先验证表级权限,在表级权限验证未通过时,再验证列级权限。表级权限验证通过或者列级权限验证通过时,可以确定目标验证信息验证通过。
其中,在验证表级权限时,驱动器在表权限数据表中查找与目标用户标识、目标权限信息中的表标识以及目标权限信息中的类型标识匹配的权限记录。在验证列级权限时,驱动器在列级权限表中查找与目标用户标识、目标权限信息中的表标识、目标权限信息中的列标识以及目标权限信息中的类型标识匹配的权限记录。
在本公开实施例中,能够将从授权SQL语句获取的授权信息保存在列权限数据表或者表权限数据表中,从而对用户授予表级别的权限或者列级别的权限,并在接收到访问SQL语句时,先根据表权限数据表对访问SQL语句进行表级别权限验证,在表级别权限验证未通过时,再根据列权限数据表对访问SQL语句进行列级别权限验证,实现SparkSQL中细粒度的权限管理,提高权限管理的灵活性。
由于本公开实施例中,表权限数据表和列权限数据表是不同的数据表,这样,每个数据表存储的信息明确,在权限验证时可以减少检索次数。
在一种可能的实现方式中,当存在多个目标权限信息时,各目标权限信息对应的目标验证信息均验证通过时,确定所述访问SQL语句验证通过。
举例来说,user1用户创建了tabl表和tab2表,其中tab1表包括id和name两列,tab2包括id、name、age和addr四列。假设user2用户执行一条insert语句:insert intotab1(select id,name from tab2where age>22)。对该SQL语句解析后可以得出,执行这条SQL语句需要user2用户具备以下权限:tab1表中id、name列的insert权限,tab2表中id、name和age列的select权限。也就是说,目标用户标识为user2,目标权限信息1包括:表标识tab1、列标识id、列标识name和类型标识insert,目标权限信息2包括:表标识tab2、列标识id、列标识name、列标识age和类型标识insert。
驱动器可以将目标用户标识user2和目标权限信息1作为目标验证信息1,将目标用户标识use2和目标权限信息2作为目标验证信息2。
驱动器在表权限数据表中查找与目标验证信息1匹配的权限记录。若在表权限数据表中查找了与目标验证信息1匹配的权限记录,则确定目标验证信息1验证通过,即user2用户具有tab1表中id、name列的insert权限。若在表权限数据表中未查找与目标验证信息1匹配的权限记录,则在列权限数据表中查找与目标验证信息1匹配的权限记录。若在列权限数据表中查找到了与目标验证信息1匹配的权限记录,则确定目标验证信息1验证通过,即user2用户具有tab1表中id、name列的insert权限。若在列权限数据表中未查找到与目标验证信息1匹配的权限记录,则确定目标验证信息1验证未通过,即user2用户不具有tab1表中id、name列的insert权限。
目标验证信息2的验证过程可以参照目标验证信息1,这里不再赘述。目标验证信息2验证通过,表明user2用户具有tab2表中id、name和age列的select权限。
当目标验证信息1和目标验证信息2均通过验证时,驱动器可以确定访问SQL语句:insert into tab1(select id,name from tab2where age>22)验证通过。目标验证信息1或者目标验证信息2验证未通过时,驱动器可以确定该访问SQL语句验证未通过。
图4示出根据本公开一实施例的权限管理方法的流程图。如图4所示,该权限管理方法还包括:
步骤S14,从接收到的权限回收SQL语句中获取回收信息。
步骤S15,在所述回收信息中包括列标识时,在所述列权限数据表中查找与所述回收信息匹配的权限记录,在所述回收信息中不包括列标识时,在所述表权限数据表中查找与所述回收信息匹配的权限记录。
步骤S16,删除查找到的权限记录。
权限回收SQL语句可以用于回收用户已有的表级权限或者列级权限。驱动器接收到权限回收SQL语句时,可以从权限回收语句中获取回收信息。
步骤S14至步骤S16的权限回收过程可以参照步骤S11和步骤S12的授权过程。
在本公开实施例中,在词法解析阶段,增加对权限回收SQL语句的解析功能,使得驱动器能够解析权限回收SQL语句,从权限回收SQL语句中获取回收信息。
在一种可能的实现方式中,可以在SparkSQL的语法文件中添加权限回收语法,并为权限回收语法设置关键字,所述权限回收语法定义了用户标识、资源标识和类型标识。如此,步骤S14可以实现为:对接收到的SQL语句进行词法解析,获取关键字;若所述关键字映射到权限回收语法,则按照所述权限回收语法,从所接收到的SQL语句中获取用户标识、资源标识和类型标识,作为回收信息。
在一种可能的实现方式中,对应于权限回收语法可以增加一个实现权限回收功能的逻辑计划,即为RevokePrivilegeCommand,该逻辑计划可以继承自RunnableCommand,由于RunnableCommand是一种直接可执行的逻辑计划。驱动器对权限回收SQL语句进行词法解析,获取到回收信息后,可以根据回收信息构造并返回RevokePrivilegeCommand。
在RevokePrivilegeCommand中,驱动器可以判断回收信息中是否包括列标识。在回收信息中包括列标识时,表明权限回收SQL语句回收的是列级权限,驱动器可以在所述列权限数据表中查找与所述回收信息匹配的权限记录并将查找到的权限记录删除。在回收信息中不包括列标识时,表明权限回收SQL语句回收的是表级权限,驱动器可以在所述表权限数据表中查找与所述回收信息匹配的权限记录并将查找到的权限记录删除。
需要说明的是,在权限回收时,表级权限的回收,不会同步回收对应表的列级权限。
图5示出根据本公开一实施例的权限管理装置的框图。如图5所示,该装置500可包括:
第一获取模块501,用于从接收到的授权SQL语句中获取授权信息;
添加模块502,用于在所述授权信息中包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的列权限数据表中,在所述授权信息中不包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的表权限数据表中;
验证模块503,用于接收到访问SQL语句时,根据所述表权限数据表中的权限记录对所述访问SQL语句进行表级权限验证,并在所述表级权限验证未通过时,根据所述列权限数据表中的权限记录对所述访问SQL语句进行列级权限验证。
在本公开实施例中,能够将从授权SQL语句获取的授权信息保存在列权限数据表或者表权限数据表中,从而对用户授予表级别的权限或者列级别的权限,并在接收到访问SQL语句时,先根据表权限数据表对访问SQL语句进行表级别权限验证,在表级别权限验证未通过时,再根据列权限数据表对访问SQL语句进行列级别权限验证,实现SparkSQL中细粒度的权限管理。
图6示出根据本公开一实施例的权限管理装置的框图。如图6所示,在一种可能的实现方式中,该装置500还可包括:
第二获取模块504,用于从接收到的权限回收SQL语句中获取回收信息;
查找模块505,用于在所述回收信息中包括列标识时,在所述列权限数据表中查找与所述回收信息匹配的权限记录,在所述回收信息中不包括列标识时,在所述表权限数据表中查找与所述回收信息匹配的权限记录;
删除模块506,用于删除查找到的权限记录。
在一种可能的实现方式中,该装置500还可包括:
第三获取模块507,用于对接收到的SQL语句进行词法解析,获取关键字;
第一确定模块508,用于若所述关键字映射到授权语法,则确定所接收到的SQL语句为授权SQL语句;
第二确定模块509,用于若所述关键字映射到权限回收语法,则确定所接收到的SQL语句为权限回收SQL语句。
在一种可能的实现方式中,所述验证模块503具体用于:
接收到所述访问SQL语句时,获取目标用户标识,所述目标用户标识为执行所述访问SQL语句的用户的标识;
对所述访问SQL语句进行解析,得到目标权限信息,所述目标权限信息包括资源标识和类型标识;
将所述目标用户标识和所述目标权限信息作为目标验证信息;
在所述表权限数据表中查找与所述目标验证信息匹配的权限记录;
若在所述表权限数据表中查找到与所述目标验证信息匹配的权限记录,则确定所述目标验证信息验证通过;
若在所述表权限数据表中未查找到与所述目标验证信息匹配的权限记录,则在所述列权限数据表中查找与所述目标验证信息匹配的权限记录;
若在所述列权限数据表中查找到与所述目标验证信息匹配的权限记录,则确定所述目标验证信息验证通过。
在一种可能的实现方式中,该装置500还可包括:
第三确定模块510,用于当存在多个目标权限信息时,各目标权限信息对应的目标验证信息均验证通过时,确定所述访问SQL语句验证通过。
图7是根据一示例性实施例示出的一种用于权限管理的装置900的框图。参照图7,该装置900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与权限管理逻辑对应的机器可执行指令以执行上文所述的权限管理方法。
本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (10)

1.一种权限管理方法,其特征在于,所述方法包括:
从接收到的授权SQL语句中获取授权信息;
在所述授权信息中包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的列权限数据表中,在所述授权信息中不包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的表权限数据表中;
接收到访问SQL语句时,根据所述表权限数据表中的权限记录对所述访问SQL语句进行表级权限验证,并在所述表级权限验证未通过时,根据所述列权限数据表中的权限记录对所述访问SQL语句进行列级权限验证。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从接收到的权限回收SQL语句中获取回收信息;
在所述回收信息中包括列标识时,在所述列权限数据表中查找与所述回收信息匹配的权限记录,在所述回收信息中不包括列标识时,在所述表权限数据表中查找与所述回收信息匹配的权限记录;
删除查找到的权限记录。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
对接收到的SQL语句进行词法解析,获取关键字;
若所述关键字映射到授权语法,则确定所接收到的SQL语句为授权SQL语句;
若所述关键字映射到权限回收语法,则确定所接收到的SQL语句为权限回收SQL语句。
4.根据权利要求1至3中任意一项所述的方法,其特征在于,接收到访问SQL语句时,根据所述表权限数据表中的权限记录对所述访问SQL语句进行表级权限验证,并在所述表级权限验证未通过时,根据所述列权限数据表中的权限记录对所述访问SQL语句进行列级权限验证,包括:
接收到所述访问SQL语句时,获取目标用户标识,所述目标用户标识为执行所述访问SQL语句的用户的标识;
对所述访问SQL语句进行解析,得到目标权限信息,所述目标权限信息包括资源标识和类型标识;
将所述目标用户标识和所述目标权限信息作为目标验证信息;
在所述表权限数据表中查找与所述目标验证信息匹配的权限记录;
若在所述表权限数据表中查找到与所述目标验证信息匹配的权限记录,则确定所述目标验证信息验证通过;
若在所述表权限数据表中未查找到与所述目标验证信息匹配的权限记录,则在所述列权限数据表中查找与所述目标验证信息匹配的权限记录;
若在所述列权限数据表中查找到与所述目标验证信息匹配的权限记录,则确定所述目标验证信息验证通过。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当存在多个目标权限信息时,各目标权限信息对应的目标验证信息均验证通过时,确定所述访问SQL语句验证通过。
6.一种权限管理装置,其特征在于,所述装置包括:
第一获取模块,用于从接收到的授权SQL语句中获取授权信息;
添加模块,用于在所述授权信息中包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的列权限数据表中,在所述授权信息中不包括列标识时,将根据所述授权信息生成的权限记录添加至元数据库的表权限数据表中;
验证模块,用于接收到访问SQL语句时,根据所述表权限数据表中的权限记录对所述访问SQL语句进行表级权限验证,并在所述表级权限验证未通过时,根据所述列权限数据表中的权限记录对所述访问SQL语句进行列级权限验证。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于从接收到的权限回收SQL语句中获取回收信息;
查找模块,用于在所述回收信息中包括列标识时,在所述列权限数据表中查找与所述回收信息匹配的权限记录,在所述回收信息中不包括列标识时,在所述表权限数据表中查找与所述回收信息匹配的权限记录;
删除模块,用于删除查找到的权限记录。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第三获取模块,用于对接收到的SQL语句进行词法解析,获取关键字;
第一确定模块,用于若所述关键字映射到授权语法,则确定所接收到的SQL语句为授权SQL语句;
第二确定模块,用于若所述关键字映射到权限回收语法,则确定所接收到的SQL语句为权限回收SQL语句。
9.根据权利要求6至8中任意一项所述的装置,其特征在于,所述验证模块具体用于:
接收到所述访问SQL语句时,获取目标用户标识,所述目标用户标识为执行所述访问SQL语句的用户的标识;
对所述访问SQL语句进行解析,得到目标权限信息,所述目标权限信息包括资源标识和类型标识;
将所述目标用户标识和所述目标权限信息作为目标验证信息;
在所述表权限数据表中查找与所述目标验证信息匹配的权限记录;
若在所述表权限数据表中查找到与所述目标验证信息匹配的权限记录,则确定所述目标验证信息验证通过;
若在所述表权限数据表中未查找到与所述目标验证信息匹配的权限记录,则在所述列权限数据表中查找与所述目标验证信息匹配的权限记录;
若在所述列权限数据表中查找到与所述目标验证信息匹配的权限记录,则确定所述目标验证信息验证通过。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第三确定模块,用于当存在多个目标权限信息时,各目标权限信息对应的目标验证信息均验证通过时,确定所述访问SQL语句验证通过。
CN201810928016.7A 2018-08-15 2018-08-15 权限管理方法及装置 Active CN109144978B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810928016.7A CN109144978B (zh) 2018-08-15 2018-08-15 权限管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810928016.7A CN109144978B (zh) 2018-08-15 2018-08-15 权限管理方法及装置

Publications (2)

Publication Number Publication Date
CN109144978A true CN109144978A (zh) 2019-01-04
CN109144978B CN109144978B (zh) 2020-12-01

Family

ID=64789516

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810928016.7A Active CN109144978B (zh) 2018-08-15 2018-08-15 权限管理方法及装置

Country Status (1)

Country Link
CN (1) CN109144978B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109446219A (zh) * 2018-10-10 2019-03-08 新华三大数据技术有限公司 权限管理方法及装置
CN110334545A (zh) * 2019-06-28 2019-10-15 北京淇瑀信息科技有限公司 一种基于sql的权限控制方法、装置和电子设备
CN111460506A (zh) * 2020-04-03 2020-07-28 中国工商银行股份有限公司 数据访问控制方法及装置
CN111737293A (zh) * 2019-10-21 2020-10-02 北京京东尚科信息技术有限公司 一种数据仓库权限管理方法、装置、设备和存储介质
CN111767572A (zh) * 2020-06-28 2020-10-13 北京天融信网络安全技术有限公司 一种安全访问数据库的方法及装置
CN114651245A (zh) * 2019-11-06 2022-06-21 西格玛计算机有限公司 提供对基于云的数据仓库上的使用报告的访问

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103500297A (zh) * 2013-10-11 2014-01-08 济钢集团有限公司 信息系统中细粒度权限管理方法
CN103699565A (zh) * 2013-10-31 2014-04-02 于丽珠 一种分布式数据库的建立
CN106484740A (zh) * 2015-09-01 2017-03-08 北京国双科技有限公司 一种数据表连接方法及装置
CN107045542A (zh) * 2017-02-23 2017-08-15 上海赛可电子商务有限公司 数据查询系统及查询方法
CN107403106A (zh) * 2017-07-18 2017-11-28 北京计算机技术及应用研究所 基于终端用户的数据库细粒度访问控制方法
US20180121665A1 (en) * 2016-10-31 2018-05-03 International Business Machines Corporation Automated mechanism to analyze elevated authority usage and capability
CN108304732A (zh) * 2017-12-22 2018-07-20 石化盈科信息技术有限责任公司 一种用于细化数据库权限的方法和系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103500297A (zh) * 2013-10-11 2014-01-08 济钢集团有限公司 信息系统中细粒度权限管理方法
CN103699565A (zh) * 2013-10-31 2014-04-02 于丽珠 一种分布式数据库的建立
CN106484740A (zh) * 2015-09-01 2017-03-08 北京国双科技有限公司 一种数据表连接方法及装置
US20180121665A1 (en) * 2016-10-31 2018-05-03 International Business Machines Corporation Automated mechanism to analyze elevated authority usage and capability
CN107045542A (zh) * 2017-02-23 2017-08-15 上海赛可电子商务有限公司 数据查询系统及查询方法
CN107403106A (zh) * 2017-07-18 2017-11-28 北京计算机技术及应用研究所 基于终端用户的数据库细粒度访问控制方法
CN108304732A (zh) * 2017-12-22 2018-07-20 石化盈科信息技术有限责任公司 一种用于细化数据库权限的方法和系统

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109446219A (zh) * 2018-10-10 2019-03-08 新华三大数据技术有限公司 权限管理方法及装置
CN110334545A (zh) * 2019-06-28 2019-10-15 北京淇瑀信息科技有限公司 一种基于sql的权限控制方法、装置和电子设备
CN111737293A (zh) * 2019-10-21 2020-10-02 北京京东尚科信息技术有限公司 一种数据仓库权限管理方法、装置、设备和存储介质
CN114651245A (zh) * 2019-11-06 2022-06-21 西格玛计算机有限公司 提供对基于云的数据仓库上的使用报告的访问
CN114651245B (zh) * 2019-11-06 2023-12-12 西格玛计算机有限公司 提供对基于云的数据仓库上的使用报告的访问
CN111460506A (zh) * 2020-04-03 2020-07-28 中国工商银行股份有限公司 数据访问控制方法及装置
CN111460506B (zh) * 2020-04-03 2024-04-16 中国工商银行股份有限公司 数据访问控制方法及装置
CN111767572A (zh) * 2020-06-28 2020-10-13 北京天融信网络安全技术有限公司 一种安全访问数据库的方法及装置

Also Published As

Publication number Publication date
CN109144978B (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
CN109144978A (zh) 权限管理方法及装置
US7299171B2 (en) Method and system for processing grammar-based legality expressions
KR102157925B1 (ko) 데이터 질의 방법 및 장치
CN109766686A (zh) 权限管理
US9141678B2 (en) Distributed query cache in a database system
US10885031B2 (en) Parallelizing SQL user defined transformation functions
US11556534B2 (en) Subquery predicate generation to reduce processing in a multi-table join
US20080104070A1 (en) Pattern-based filtering of query input
US8364714B2 (en) Servicing query with access path security in relational database management system
US10936478B2 (en) Fast change impact analysis tool for large-scale software systems
WO2019237333A1 (en) Converting database language statements between dialects
Schueler et al. Querying for meta knowledge
US20160342646A1 (en) Database query cursor management
CA2461871A1 (en) An efficient index structure to access hierarchical data in a relational database system
KR20200094074A (ko) 인덱스 관리 방법, 장치, 기기 및 저장 매체
US11080043B1 (en) Data structures for managing configuration versions of cloud-based applications
CN117421302A (zh) 一种数据处理方法及相关设备
CN109446219B (zh) 权限管理方法及装置
KR102182573B1 (ko) 대용량 데이터 환경에서 접근권한 인증 장치 및 그를 위한 컴퓨터로 읽을 수 있는 기록매체
CN113626870A (zh) 访问控制方法、装置、电子设备及存储介质
CN115827589A (zh) 一种权限验证方法、装置、电子设备及存储介质
Groth A distributed algorithm for determining the provenance of data
US10977284B2 (en) Text search of database with one-pass indexing including filtering
KR100238439B1 (ko) 스키마 관리자의 객체지향 경로 인데스 관리방법
CN115455462A (zh) 一种基于Elasticsearch策略的Trino权限控制及装置

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