CN109409120B - 一种面向Spark的访问控制方法及*** - Google Patents
一种面向Spark的访问控制方法及*** Download PDFInfo
- Publication number
- CN109409120B CN109409120B CN201710713347.4A CN201710713347A CN109409120B CN 109409120 B CN109409120 B CN 109409120B CN 201710713347 A CN201710713347 A CN 201710713347A CN 109409120 B CN109409120 B CN 109409120B
- Authority
- CN
- China
- Prior art keywords
- access control
- spark
- safety
- data
- access
- 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
Links
Images
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
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种面向Spark的访问控制方法,其步骤包括:识别访问Spark***用户的身份信息,从访问控制策略集中找到所有相关的访问控制规则,将所述访问控制规则转化为安全控制规则;根据所述安全控制规则,对用户的逻辑计划进行安全重写,将所述逻辑计划变换成符合访问需求的安全逻辑计划;针对输入Spark***的外部数据,保存其身份标识和结构信息;对所述安全逻辑计划进行优化,根据优化后的安全逻辑计划生成可运行代码,通过身份标识和结构信息选择控制外部数据,实现Spark数据处理的访问控制。本发明还提供一种面向Spark的访问控制***。
Description
技术领域
本发明涉及大数据分析工具Spark的数据安全技术领域,具体涉及一种面向Spark的访问控制方法及***,在数据分析过程中限制用户对数据集内数据的访问权限,使得用户只能按照访问控制的要求访问数据记录中特定的字段组分,最终实现数据的细粒度的访问控制。
背景技术
大数据蕴含着极大价值,而挖掘这些价值的大数据工具则成为驾驭大数据的关键。Spark(全称:Apache Spark)已成为当今最流行的大数据工具,得到了各界的极大关注。虽然Spark技术在性能和通用性方面取得了巨大进步,但仍面临诸多问题,其中数据安全是亟待解决的重大隐患。首先,大数据的巨大价值使其极易成为攻击者的目标。其次,为了最大程度地利用数据的价值,Spark支持多用户共同使用共享的数据集以满足各方的分析决策的现实需求,又进一步加大了数据保护的难度。然而,当前Spark技术的发展并未考虑数据安全保护机制,无法实现大数据的安全共享。
访问控制是公认的确保数据安全共享的重要方法,也是抵御内部威胁和攻击的基础手段。然而在Spark***中却缺乏完整的访问控制解决方案。
图1展示了Spark应用场景的典型架构。该架构具有混合分析特点:***可接入不同类型数据源,既有分布式文件***的持久化文件、关系型数据库的关系表、实时流数据,甚至有其它大数据***的输出数据。现有访问控制要么是一种特定化(adhoc)的定制措施,要么属于补丁式的增强机制,从不是一种完整普适的解决方案。首先,各类外接数据源***对访问控制的支持参差不齐。其次,中间件式的访问控制增强***,虽然能提供细粒度访问控制,但尚不能支持所有的数据源。由于需要屏蔽各种异构数据源的差异,中间件式***复杂度高,并且开发周期长,需要不断支持新的数据源。
近年来,用户的敏感数据泄露的事件不断发生,因此设计出统一、集中式的访问控制已刻不容缓。本发明对完善Spark***中数据的访问控制意义重大。
发明内容
本发明的目的在于提供一种面向Spark的访问控制方法及***,基于Spark现有架构的访问控制增强机制,在数据处理阶段对数据的访问权限施加控制,使用该方法的Spark***能实现细粒度的访问控制,不同的用户只能按照预先设定的权限访问所授权的数据记录。
为实现上述目的,本发明的技术方案是在Spark现有数据处理机制的基础上,分析现有访问控制机制的不足,进而对相应结构或函数进行更改,针对用户作业的逻辑表达进行安全变换,使其满足访问控制策略的需要。本发明的技术方案如下:
一种面向Spark的访问控制方法,其步骤包括:
识别访问Spark***用户的身份信息,从访问控制策略集中找到所有相关的访问控制规则,将所述访问控制规则转化为优化器可执行的安全控制规则;
根据所述安全控制规则,对用户的逻辑计划进行安全重写,将所述逻辑计划变换成符合访问需求的安全逻辑计划;
针对输入Spark***的外部数据,保存其身份标识和结构信息;
对所述安全逻辑计划进行优化,根据优化后的安全逻辑计划生成满足控制需求的可运行代码,通过身份标识和结构信息选择控制外部数据,实现Spark数据处理的访问控制。
进一步地,所述身份标识包括UUID、URL、文件保存路径信息。
进一步地,针对所述外部数据,通过有向无环图DAG对其世系变换进行追踪,保存其世系变换信息。
进一步地,通过对DataFrame和LogicalPlan进行标记,即对创建DataFrame或者Table的操作符进行改造,以使所述外部数据通过API接口进入Spark***时生成的Catalog元数据中包含身份标识。
进一步地,所述外部数据输入Spark***时,通过sql语句、调用Dataframe运算符或者RDD转换,创建DataFrame。
进一步地,所述逻辑计划为将用户基于DataFrame的数据处理作业解析为高级操作符的树状结构。
进一步地,所述访问控制规则的访问对象和访问权限决定所述安全控制规则的表达形式,所述访问权限与所述安全控制规则规定的变换方式相对应,所述访问对象体现在所述安全控制规则的匹配模式上。
进一步地,所述安全重写是指根据所述安全控制规则的定义查找并匹配所述逻辑计划中子结构,对满足条件的子结构适用所述安全控制规则,完成所述逻辑计划的安全变换。
进一步地,对所述安全逻辑计划进行优化的优化规则包括常数折叠、谓词下移、投影剪裁、空值传播、布尔表达式求值。
一种面向Spark的访问控制***,基于Spark***,包括:
一策略管理模块,含有访问控制策略集,用于定制及提供访问控制策略;
一访问控制实施模块,嵌入于Spark数据处理流程中,基于逻辑计划的安全重写实现Spark***统一集中的访问控制,其包括:
一数据标识模块,为输入的外部数据源建立唯一的身份标识和结构信息,实现数据的细粒度划分;
一策略引用模块,识别用户的身份信息并从所述访问控制策略集中找到所有相关的访问控制规则;以及
一安全重写模块,将所述访问控制规则转化为优化器可执行的安全控制规则,对所述逻辑计划进行安全重写,变换为安全逻辑计划;
一优化器,用于优化所述安全逻辑计划,基于该优化后的安全逻辑计划实现访问控制。
进一步地,策略管理模块支持安全管理员对访问控制策略进行添加、删除、更新的操作。
本发明与现有技术相比具有以下优点:
1.实现了Spark上的统一、集中式访问控制机制。
2.能够实现结构化数据源中键值对级别的细粒度的访问管理,并允许安全管理员根据需要定制安全控制规则,支持复杂的访问控制策略。
3.访问控制增强对用户透明,用户仍可照样提交分析作业,策略执行模块负责引用访问控制策略并基于定制规则对作业的逻辑树进行安全变换,实现访问控制增强。
4.访问控制与现有的优化流程相结合,使得访问控制兼顾了功能与性能,具备良好的可扩展性,适合大数据的应用场景。
附图说明
图1是面向大数据混合分析场景的Spark***框架图。
图2是Spark访问控制增强机制整体框架图。
图3是安全重写在数据分析过程中的位置图。
图4A至图4D是基于TPCDS查询的性能对比图。
图5A至图5D是Spark与GuardSpark优化时间对比图。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
为使本发明的目的、技术方案和优点表达得更加清楚明白,下面将结合本发明实施实例中的附图,对本发明再作进一步详细的说明。显然,所描述的实施例只是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员凡是采用本发明的设计结构和思想而在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种面向Spark的访问控制方法及***,图2为整体架构图。基于Spark的声明式编程接口(API)和Catalyst可扩展优化器,实现了访问对象(即数据)的识别和标识、细粒度的访问对象世系(provenance)、访问操作识别和访问策略实施。其主要思想是对具有标准表达形式的声明式编程进行安全规则检查并变换的过程,控制的对象是高级运算子的执行流,不直接控制数据源和用户程序代码,从而实现了集中统一的访问控制。
下面具体阐述每一部分的具体实现方式,下述实施例是基于Spark版本Spark2.1.0:
采用何种策略实施访问控制是实现访问控制的关键,从数据处理的流程角度,存在三种可能的解决方案:预处理(preprocessing)、后处理(postprocessing)以及中段处理。预处理在数据的输入阶段对数据进行清洗过滤完成访问控制,后处理对数据处理的结果进行二次过滤完成访问控制,而中段处理则将访问控制嵌入到数据分析流程之中,在执行过程中对数据进行控制。预处理实现简单,但存在两方面的不足:一是可能会造成数据***,不同的角色对应不同的安全分级,对于每个安全级别,都要生成单独的数据文件,角色的增长意味着数据副本数目的指数级增长,势必会造成数据量的爆增,这在大数据应用中尤为严重;另一方面,预处理范式无法支持复杂的访问控制策略,是一种允许访问与拒绝访问的二元对立。而后处理主要的问题是会产生大量的不必要运算,会造成运行时开销。相较而言,中段处理的方式既能满足Spark大数据处理中复杂的访问控制要求,又避免引入运行时开销,这是因为中段处理可在数据处理端到端的任意节点进行限制,可实现复杂的访问控制策略。
实现中段处理范式的访问控制常见的方式是直接改写用户程序代码。而Spark***面向的是大数据混合分析的场景,同时支持SQL查询、流处理、图处理和机器学习等不同的计算模式,这些计算模式有着采用完全不同的API,导致不同计算模式下用户程序代码存在明显的差异性,直接对数据分析代码实现访问控制必须根据不同模型针对性定制检查和访问控制实现算法,既增加了工作量又无法实现不同计算模式的统一控制。
为了达到统一的访问控制目标,本发明选择Catalyst作为访问控制实现的载体。Catalyst作为Spark大数据处理的底层优化机制,任何结构化数据的分析过程都默认经过Catalyst的优化。该优化过程在作业提交与作业执行之间起着关键的承接作用,是数据分析的共同环节。为实现优化功能,Catalyst提出了全新的数据结构Tree以及操作这些结构的规则(Rule)。Tree是用户程序的抽象,是由节点对象组成的树,每个节点拥有一个节点类型以及零个或多个子节点,节点的层次关系表示输入输出关系。节点对象本身不可更改但可通过基于规则的函数变换实现节点间的转换。规则是树从一种结构到另一种结构的函数映射,是树变换的具体方式。
作业进入Spark后会被解析成高级操作符的树状表达——逻辑计划,逻辑计划描述了数据集上的要进行的计算但不定义如何具体执行这些计算。Catalyst能够遍历树中的所有节点并对其适用模式匹配函数,每个与之匹配的模式会被变换成对应的结构。逻辑优化的过程就是解析后的原始执行树按照标准规则优化生成等价的最优执行树的过程。常见的规则包括常数折叠、谓词下移、投影剪裁、空值传播、布尔表达式求值等。
逻辑优化后的Catalyst树状表达变得简洁高效,在保证优化前后执行树等价的前提下实现了性能提升。然而,现有的逻辑优化规则只关心性能的优化,未提供访问控制方面的能力。为此需要对原有优化机制进行扩展定制,设计提出满足Spark细粒度访问控制需求的安全变换规则。本方法首次提出将访问控制与逻辑优化相结合,在实现访问控制的同时又保证了原有数据处理操作的高效执行。控制了优化过程等同于控制住了用户的数据分析代码,这样既能保留中段处理支持复杂访问策略的优势,又达到了Spark统一的访问控制目的。
由于未解析的逻辑计划尚不包含操作对象信息,故不适宜作为控制的对象。为了最大程度地利用Catalyst的优化能力,访问控制应该处于逻辑优化阶段之前,这样经过访问控制处理所得到的安全逻辑计划仍能按照正常逻辑优化规则进行优化,从而保证物理优化前的逻辑计划满足性能最优。
本方法访问控制实施过程如图3所示。其中,我们在Catalyst的数据处理过程中增加了一个安全重写阶段,实现了本方法对Spark大数据处理的访问控制。
第一部分的实现:
在外部数据的输入过程中保存数据源的唯一身份标识(可以是UUID、URL或者文件保存路径等信息)和结构信息。通过身份标识和结构信息能方便地定位需要施加控制的数据组分。由于数据结构在处理的过程中会发生改变,还应当保存数据的世系变换信息,本发明通过有向无环图DAG实现世系的追踪。
Catalyst的逻辑计划的层次结构就代表了数据的处理顺序和世系演化过程,需要扩展的是访问对象(即输入的外部数据)的标识输入与保存。为了从源头对数据控制,需要对DataFrame和LogicalPlan进行标记,标记的方法是对创建DataFrame或者Table的操作符进行改造,使得外部数据通过API接口进入Spark时,其生成的Catalog元数据中包含对象身份信息,比如外部文件的存放路径或者是数据流的ID等,这些唯一不重复的对象信息会作为对象的身份标识伴随着逻辑计划的优化执行的全过程。对于持久化存储的文件,无论是本地文件***还是HDFS分布式文件***中的数据,在数据输入Spark时,既可以使用sql语句创建,也可以调用Dataframe运算符实现DataFrame的新建。而数据流导入Spark***,也可由RDD转换成DataFrame,方便地参与查询。
以HDFS中持久化文件为例,文件加载入Spark***可调用数据定义操作符createExternalTable方法,createExternalTable会根据数据源、数据结构和一组选项从指定路径创建外部表,返回相应的DataFrame。在本方法的实现中,将输入的path参数保存在CatalogTable中properties成员字段内。在分析器解析逻辑计划时,通过检查properties映射集中是否包含path键值对判定访问对象的身份。例如可在代码中的properties字段中增添一个key/value对,srcPath的key保存的是加载路径的字符串。
第二部分的实现:
安全重写阶段将策略库中与访问主体相关的规则集合解析成逻辑计划变换规则——安全控制规则,安全重写将访问控制的强制执行过程转化为逻辑计划的变换过程。访问控制规则中的访问对象和访问权限决定了安全控制规则的表达形式,访问权限与安全控制规则规定的变换方式相对应,而访问对象则体现在安全控制规则的匹配模式上。安全重写将安全控制规则作用到解析后的逻辑计划树上,最终将满足匹配模式的逻辑计划变换成符合访问需求的安全逻辑计划。
安全控制规则与Catalyst自带的优化规则的区别:1)安全控制不再强调保持变换前后等价性,是一种条件等价变换,实际上安全规则会缩小执行树的授权视图或者说访问范围;2)安全控制规则的定制需要安全管理员完成,普通用户无权设定安全控制规则。常用的安全控制规则可以是在关系扫描输入结点后增加一个过滤结点,缩减投影结点的可投影列表集合中的元素等。
在实现上,当用户启动一个SparkSession时,用户的认证信息会作为访问主体传递到外部策略管理模块中,然后解析得到的安全控制规则会被添加到Catalyst优化流程中,这个过程类似于Spark提供的用户定制优化,区别在于Spark现阶段为用户提供的定制优化都位于逻辑优化阶段的末端,而考虑到安全控制规则可能对性能产生的影响,需要在优化阶段的特定位置部署安全控制,确保执行安全规则转化后的逻辑计划仍能进行性能优化。由于安全控制规则不同其在整相对顺序不尽相同,控制策略也不一致,需要为不同的安全规则定制不同的接口,参照现有用户定制规则接口,对SparkOptimizer类进行重写改造实现,最后将安全定制类置于优化batches中适当位置。
给出有效性验证过程所用到的两个安全控制规则:
规则1:过滤器添加规则。适用对象:不可访问的对象。检查所有叶子节点是否包含受保护对象中的files,当满足条件时在叶子结点上添加一个以object.predicate为过滤条件的Filter结点。
规则2:投影节点投影列表清洗规则。适用对象:间接访问对象。检查投影结点的输出列表是否包含间接访问权限的数据域,假如存在任意间接访问字段,则将其从投影列表中移除,用新的投影结点替换原来的结点。
第三部分的实现:
Catalyst会将用户基于DataFrame的数据处理作业解析为高级操作符的树状形式,即逻辑计划。在安全重写阶段,本方法对逻辑计划进行相应的安全控制规则变换,将原有逻辑计划树变换为满足访问控制规则的安全逻辑计划树。然后,基于现有的优化规则对上一步得到的安全逻辑计划树进行优化。最后,基于优化后的安全逻辑计划,Spark生成相应的满足访问控制需求的可运行代码,并通过最终执行实现了Spark大数据处理的访问控制。
实验验证
本节通过实验对GuardSpark访问控制有效性和性能开销进行了评价。测试环境介绍:一台安装有两个Intel Xeon E5-2650v4多核处理器曙光620服务器作为实验平台,处理器主频为2.2GHz,内存为128G,4TB硬盘,1000Mb/s网卡。在实验中,所有节点均安装使用CentOS7.3操作***,Linux内核版本3.10.0,jdk的版本为1.8.0,Spark的版本为2.1.0,Hadoop版本为2.6.4。
本文共采用了两种部署模式:本地模式和集群模式。本地模式用于有效性验证,本地模式直接运行在服务器上。集群模式用于性能测试,实验中使用一台服务器创建多个虚拟机组成伪集群,利用virtualbox创建3个虚拟机,包括1个master节点,2个slave节点。为每个节点分配4核,16G内存,200G虚拟磁盘的物理资源。所有节点部署成集群工作模式。
有效性实验中用到了TPC-DS[26]测试基,TPC-DS自带有数据集与查询生成工具,允许使用者根据需要生成可变规模的数据集。而在性能测试部分则使用了Databricks公司推荐的Spark-sql-perf[21]测试工具集,spark-sql-perf是针对Spark SQL的性能测试框架。而Spark-sql-perf内部选用的也是TPC-DS测试基。
有效性验证主要测试GuardSpark是否能做到细粒度复杂的访问控制,通过比较访问控制增强后的输出结果与预期结果是否一致进行验证。而性能评价指标为作业总的执行时间和优化时长(由逻辑优化时间与安全控制时间组成)。
访问控制有效性
GuardSpark访问控制有效性评价包括对复杂访问控制策略支持和细粒度访问控制实施的评价。简单起见,考虑单用户的场景,并选择Spark自带的SparkHiveExample示例进行验证,相关数据与查询在Spark的发布版本中可见。细粒度的访问控制体现在能实现结构化数据中键值对级别的控制。而复杂的访问控制体现在字段在不能直接输出的情况下仍可被用于分析目的,比如作为谓词条件。
首先给定访问控制策略:
{user,(examples/src/main/resources/kv1.txt,key,key>70),indirect}
以上规则表示受保护对象kv1.txt中的key字段,在满足key的值大于70的情况下,可被访问主体user间接访问,即可被用于过滤和排序,但无法直接投影到输出结果之中。根据上述规则,修改Catalyst的分析器和优化器代码,将安全控制规则集成到查询工作流执行中。编译打包得到满足控制规则的二进制安装文件,然后在集群上重新部署修改后的GuardSpark,并在其上运行查询看是否满足控制要求。
现将GuardSpark上的执行结果,与Spark原始发布版本上执行的重写过了的查询的结果作对比。重写查询需要移除原查询SELECT语句中所包含的key字段,并在WHERE表达式中增加过滤条件key>70。
实验结果表明,GuardSpark上部署的访问控制规则能够实现预期的控制目标,在保证key字段不被直接输出的情况下,仍能够作为filter/join的条件,且key允许访问的范围也受到了相应的控制。说明GuardSpark实现了细粒度的访问控制,并支持复杂的访问控制策略。
表1有效性实验结果
为了进一步验证所提机制的有效性,实验中又采用更为复杂的数据集进行了有效性验证。此处使用的是TPC-DS数据集。选择q7-derived中的查询作为测试样例,首先制定访问控制策略,为了证明GuardSpark的访问控制能力,根据每个查询的不同特点,随机指定2组访问控制规则。在Spark集群上运行的改造过的查询,需要将查询中的indirect权限的字段从select的输出列表中移除,而deny权限的字段不仅要从select的输出列表中移除,还不应出现在filter、join、sort的表达式中。
几种访问规则下的GuardSpark上查询结果,与Spark上执行的相对应的查询修改版本的结果比较见表2。实验结果表明q7-derived相关的查询都受到了预设控制规则的约束,得到了预期结果。
表2基于TPC-DS测试基准的AC有效性验证
性能评价
性能评价部分主要测试引入AC机制后带来的计算开销。
由于GuardSpark需要根据查询对象定制访问控制规则,需要首先选定某个查询作为实验目标。参考加州大学伯克利分校AMPLAB的大数据测试基准的选择标准,本实验仍选择tpcds包中的q7-derived测试用例作为标准查询。该查询涉及到了scan、join、group等操作,相对简单且具有代表性。
为了尽可能消除偶然性误差,采用多次测试取均值的方法作为实验结果进行比较,实验中每个查询重复的次数为20次,取其均值作为实验结果。由于实验原型中并不包含策略的解析单元,故本实验只对安全规则优化部分带来的性能开销进行评价。
在访问控制策略的作用下,GuardSpark实际允许用户访问的数据集是原始的数据集的子集,由于Spark采用的lazy执行的模式,数据的读入操作只在action触发执行流的时刻进行,故数据的可访问范围实际上决定了计算量的多少。当某个访问控制策略允许用户可访问数据集缩小很大时,对于同一个查询,查询的执行时间会明显缩短。这样就无法分析安全控制部分对整个***性能的影响。为排除数据集大小引入的干扰,实现单一变量条件下的对比分析,实验中将访问控制策略设计成用户仍能访问整个数据集,意味着在指定的约束条件下整个数据集仍会参与计算。事先通过对数据集查询获取数据的最小值和最大值,然后定义用户的可访问范围包含区间[min,max]。
Spark SQL作为结构化分析工具,结构信息对于数据的分析过程显得尤为重要。parquet列式存储文件是自描述性的且保留了schema信息,允许直接访问单独某列而避免了读入整个记录项,能够加速查询和减少磁盘空间的占用。在本实验中,数据集的生成过程中设置格式为parquet。
性能评价实验中GuardSpark和Spark同时部署在集群中,GuardSpark上定制的访问控制策略限定访问主体对整个数据集具有读权限,如此设计的目的就是要排除数据处理大小的影响,观察安全控制给运行时执行引入的***开销。
图4A至图4D展示的是4种不同查询下,GuardSpark与Spark的执行时间的比较,4个查询依次为simpleScan、twoMapJoins、noOrderBy以及selfJoin-1。实验测试了不同数据集规模的情况,数据集的大小依次为2G、4G、8G,用a、b、c标识。从图4A至图4D可见,两者的执行时间基本一致,GuardSpark的访问控制机制对Spark的性能影响微乎其微,性能损失小于6%。
由于本方法中安全控制作用在Catalyst的优化阶段,主要的影响的是优化时间,即由解析的逻辑计划得到优化的逻辑计划的时间。现将Spark与GuardSpark中的优化时间进行比较,可以看出在增加了安全控制之后优化时间会出现一定程度的增长,见图5A至图5D。
虽然优化时间会出现增加,但是由于毫秒级的优化时长在整个执行过程中占得比例非常小,而且优化时间与作业执行时间不同的是,其所占时长相对固定并不随数据集规模的增长而线性增加,所以对整个查询的执行而言,引入访问控制后***的性能并不会有明显的改变,证明GuardSpark访问控制的机制具有很好的性能和可扩展性。
Claims (9)
1.一种面向Spark的访问控制方法,其步骤包括:
识别访问Spark***用户的身份信息,从访问控制策略集中找到所有相关的访问控制规则,将所述访问控制规则转化为安全控制规则;
根据所述安全控制规则,对用户的逻辑计划LogicalPlan进行安全重写,将所述LogicalPlan变换成符合访问需求的安全逻辑计划;所述安全重写是指根据所述安全控制规则的定义查找并匹配所述LogicalPlan中子结构,对满足条件的子结构适用所述安全控制规则,完成所述LogicalPlan的安全变换;
针对输入Spark***的外部数据,保存其身份标识和结构信息DataFrame;
对所述安全逻辑计划进行优化,根据优化后的安全逻辑计划生成可运行代码,通过身份标识和DataFrame选择控制外部数据,实现Spark数据处理的访问控制。
2.根据权利要求1所述的方法,其特征在于,所述身份标识包括UUID、URL、文件保存路径信息。
3.根据权利要求1所述的方法,其特征在于,针对所述外部数据,通过有向无环图DAG对其世系变换进行追踪,保存其世系变换信息。
4.根据权利要求1所述的方法,其特征在于,通过对DataFrame和LogicalPlan进行标记,即对创建DataFrame或者Table的操作符进行改造,以使所述外部数据通过API接口进入Spark***时生成的Catalog元数据中包含身份标识。
5.根据权利要求4所述的方法,其特征在于,所述外部数据输入Spark***时,通过sql语句、调用Dataframe运算符或者RDD转换,创建DataFrame。
6.根据权利要求5所述的方法,其特征在于,所述LogicalPlan为将用户基于DataFrame的数据处理作业解析为高级操作符的树状结构。
7.根据权利要求1所述的方法,其特征在于,所述访问控制规则的访问对象和访问权限决定所述安全控制规则的表达形式,所述访问权限与所述安全控制规则规定的变换方式相对应,所述访问对象体现在所述安全控制规则的匹配模式上。
8.根据权利要求1所述的方法,其特征在于,对所述安全逻辑计划进行优化的优化规则包括常数折叠、谓词下移、投影剪裁、空值传播、布尔表达式求值。
9.一种面向Spark的访问控制***,基于Spark***,包括:
一策略管理模块,含有访问控制策略集,用于定制及提供访问控制策略;
一访问控制实施模块,嵌入于Spark数据处理流程中,基于逻辑计划LogicalPlan的安全重写实现Spark***统一集中的访问控制,其包括:
一数据标识模块,为输入的外部数据源建立唯一的身份标识和结构信息DataFrame,实现数据的细粒度划分;
一策略引用模块,识别用户的身份信息并从所述访问控制策略集中找到所有相关的访问控制规则;以及
一安全重写模块,将所述访问控制规则转化为安全控制规则,对所述LogicalPlan进行安全重写,变换为安全逻辑计划;所述安全重写是指根据所述安全控制规则的定义查找并匹配所述LogicalPlan中子结构,对满足条件的子结构适用所述安全控制规则,完成所述LogicalPlan的安全变换;
一优化器,用于优化所述安全逻辑计划,基于该优化后的安全逻辑计划实现访问控制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710713347.4A CN109409120B (zh) | 2017-08-18 | 2017-08-18 | 一种面向Spark的访问控制方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710713347.4A CN109409120B (zh) | 2017-08-18 | 2017-08-18 | 一种面向Spark的访问控制方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109409120A CN109409120A (zh) | 2019-03-01 |
CN109409120B true CN109409120B (zh) | 2021-12-10 |
Family
ID=65463211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710713347.4A Active CN109409120B (zh) | 2017-08-18 | 2017-08-18 | 一种面向Spark的访问控制方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109409120B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968895B (zh) * | 2019-11-29 | 2022-04-05 | 北京百度网讯科技有限公司 | 一种数据的处理方法、装置、电子设备及存储介质 |
CN111143403B (zh) * | 2019-12-10 | 2021-05-14 | 跬云(上海)信息科技有限公司 | Sql转换方法及装置、存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1729469A (zh) * | 2002-09-04 | 2006-02-01 | 国际商业机器公司 | 对关系数据库进行访问控制的方法 |
CN101030242A (zh) * | 2007-02-12 | 2007-09-05 | 深圳市迈科龙电子有限公司 | 一种控制数据库安全访问的方法 |
CN102073817A (zh) * | 2010-12-29 | 2011-05-25 | 北京理工大学 | 一种基于rbac模型的动态访问控制改进方法 |
CN103294966A (zh) * | 2013-03-12 | 2013-09-11 | 中国工商银行股份有限公司 | 一种数据库的安全访问控制方法以及*** |
CN104008349A (zh) * | 2014-04-28 | 2014-08-27 | 国家电网公司 | 数据库安全访问控制方法和*** |
CN104967620A (zh) * | 2015-06-17 | 2015-10-07 | 中国科学院信息工程研究所 | 一种基于属性访问控制策略的访问控制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150026823A1 (en) * | 2013-03-15 | 2015-01-22 | Dataguise, Inc. | Method and system for entitlement setting, mapping, and monitoring in big data stores |
-
2017
- 2017-08-18 CN CN201710713347.4A patent/CN109409120B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1729469A (zh) * | 2002-09-04 | 2006-02-01 | 国际商业机器公司 | 对关系数据库进行访问控制的方法 |
CN101030242A (zh) * | 2007-02-12 | 2007-09-05 | 深圳市迈科龙电子有限公司 | 一种控制数据库安全访问的方法 |
CN102073817A (zh) * | 2010-12-29 | 2011-05-25 | 北京理工大学 | 一种基于rbac模型的动态访问控制改进方法 |
CN103294966A (zh) * | 2013-03-12 | 2013-09-11 | 中国工商银行股份有限公司 | 一种数据库的安全访问控制方法以及*** |
CN104008349A (zh) * | 2014-04-28 | 2014-08-27 | 国家电网公司 | 数据库安全访问控制方法和*** |
CN104967620A (zh) * | 2015-06-17 | 2015-10-07 | 中国科学院信息工程研究所 | 一种基于属性访问控制策略的访问控制方法 |
Non-Patent Citations (1)
Title |
---|
A Framework to Enforce Access Controlover Data Streams;B. Carminati, E. Ferrari, J. Cao, and K.L. Tan;《ACM Transaction on Information System Security》;20100730;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109409120A (zh) | 2019-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9128728B2 (en) | Locating security vulnerabilities in source code | |
Lam et al. | Context-sensitive program analysis as database queries | |
US9298924B2 (en) | Fixing security vulnerability in a source code | |
Ulusoy et al. | GuardMR: Fine-grained security policy enforcement for MapReduce systems | |
US8396846B2 (en) | Database trigger modification system and method | |
US11620378B2 (en) | Systems and methods for proactive and reactive data security | |
Delgado‐Pérez et al. | Performance mutation testing | |
US10268461B2 (en) | Global data flow optimization for machine learning programs | |
CN109409120B (zh) | 一种面向Spark的访问控制方法及*** | |
Salvaneschi et al. | Language-integrated privacy-aware distributed queries | |
Dörre et al. | Modeling and optimizing MapReduce programs | |
Xue et al. | SparkAC: Fine-grained access control in Spark for secure data sharing and analytics | |
Dexter et al. | Lazy graph processing in Haskell | |
US11748458B2 (en) | Systems and methods for a governance engine | |
Zhang et al. | Sharing Computations for User-Defined Aggregate Functions. | |
WO2022011102A1 (en) | Systems and methods for software security analysis | |
US11157491B2 (en) | Compilation framework for dynamic inlining | |
Rogala et al. | DatalogRA: Datalog with recursive aggregation in the Spark RDD model | |
Lyu et al. | Analyzing Ethereum Smart Contract Vulnerabilities at Scale Based on Inter-Contract Dependency. | |
Sarthi et al. | Generalized {Sub-Query} Fusion for Eliminating Redundant {I/O} from {Big-Data} Queries | |
Zandi et al. | LRBAC: Flexible function-level hierarchical role based access control for Linux | |
Dubrovin et al. | Symbolic step encodings for object based communicating state machines | |
Stoller et al. | Algorithm Diversity for Resilient Systems | |
US20230350893A1 (en) | Performance optimizations for secure objects evaluations | |
Ul Ain et al. | A model-driven approach for token based code clone detection techniques-an introduction to UMLCCD |
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 |