浅析spark快速大数据分析

  Spark是一种流行的大数据集群计算框架,通常被大数据工程师,大数据科学家和大数据分析师用于各种用例。根据情况的不同,每种用户类型都将要求一定范围的数据访问权限。与其他像Presto这样具有内置授权框架和细粒度访问控制的大数据引擎不同,Spark可以直接访问Qubole Metastore(利用Apache Hive)中存储的所有表和资源。这不仅带来安全问题,而且阻碍了增长和企业采用。因此,我们很有必要在Qubole平台上引入新的Spark数据访问控制框架。

  一、目标

  1、这些是介绍Spark访问控制框架时考虑的一些最重要的设计目标:

  2、细粒度的访问控制应在各种大数据引擎上统一应用。

  3、必须通过任何引擎查看或编辑策略,以提供一致且可预测的行为。

  4、支持SparkSQL访问方法,例如数据框或SQL语句。

  5、该框架必须易于与Hive Authorization或Apache Ranger等各种策略管理器集成。

  二、实施细节

  考虑到这些要求,我们决定将Hive授权实施为我们的第一个策略管理器。Hive授权策略存储在Qubole Metastore中,该库充当共享的中央组件,并存储与Hive资源(如Hive表)相关的元数据。Spark在访问Hive表或添加和修改这些策略时尊重Qubole Metastore中存储的策略。

  总之,我们实现了一个SQL标准访问控制层,该层与当今的Apache Hive或Presto中的层相同。以下各节详细介绍了体系结构,并提供了一个示例说明其工作原理。

  三、建筑

  授权逻辑嵌入在Spark Catalyst Framework 的分析器层内部。分析工具的规则负责解析“数据库”,“表”和“列”等实体。从计划中提取有关不同已解析实体的信息,并将其传递给Hive 授权器,后者已经具有有关用户的信息。然后,Hive授权器使用Qubole Metastore中存在的安全策略执行资源级别检查,如果用户缺少抛出HiveAccessControlException的运行特权,则该查询将停止执行查询。

  

大数据分析

  四、限制表级访问

  1、假设我们有一个Hive表“工资”,其定义如下:

  

大数据分析

  出于数据治理的目的,应允许属于财务团队的用户“ Jane”访问表,并且应限制IT用户“ Robin”访问表。

  2、属于“ admin”角色的任何用户都可以按照以下步骤限制对该表的访问:

  A、创建一个新角色,并将此角色授予应该有权访问该表的用户,在这种情况下,将其授予用户“ Jane”。

  (用户)sql> SET ROLE admin;

  (用户/管理员)sql> CREATE ROLE finance;

  (用户/管理员)sql>向用户Jane授予资金;

  B、向角色“金融”提供“选择”特权。

  (用户/管理员)SQL>在工资单上授予资助以选择角色;

  3、当“简”承担通过“ SET ROLE ALL”命令授予的所有角色后访问表时,将显示以下结果–

  

大数据分析

  4、当“罗宾”或未获得“财务”角色的任何其他用户尝试相同的流程时,我们可以预期会发生

  

大数据分析

  五、限制列和行访问

  可以通过视图来实现高级用例,例如限制列或行的访问。例如,假设我们有一个名为“ finance_intern”的新角色,该角色无权访问表“工资”中的“工资”列,而只能访问与“财务”部门关联的行。

  A、像以前一样,任何属于admin角色的用户都可以创建一个包含三列的新视图(emp_id,emp_name,dept_name),在dept_name上添加一个过滤器,并提供finance-intern角色。访问此新视图而不是基表。

  (用户)sql> SET ROLE admin;

  (用户/管理员)sql> CREATE VIEW payroll_view AS

  SELECT emp_id,emp_name,dept_name FROM工资单

  dept_name ='财务';

  (用户/管理员)sql> GRANT SELECT ON payroll_view TO ROLE finance_intern;

  B、分配了`finance_intern`角色的用户可以担任该角色并访问视图。结果如下:

  (用户)SQL> SET ROLE finance_intern;

  

大数据分析

  C、由于访问基表没有被授予这个角色,我们会得到一个HiveAccessControlException如果用户试图访问未经授权的数据。

摘自:https://www.aaa-cg.com.cn/data/2004.html

猜你喜欢

转载自blog.csdn.net/yuuEva/article/details/108535790