一种基于Hue的权限管理系统的制作方法

文档序号:12947099阅读:750来源:国知局

本发明涉及权限管理技术领域,具体说是一种基于hue的权限管理系统。



背景技术:

hue是运营和开发hadoop应用的图形化界面(图形化用户界面)。hue程序被整合到一个类似桌面的环境,以web程序的形式发布,对于单独的用户来说不需要额外的安装。在大数据时代,因为hue提供了基于浏览器的图形化界面,所以得到多数大数据公司的钟爱。

为了便利数据分析,满足可视化操作的需求,爱卡汽车选择hue作为数据分析人员处理底层数据的一种接口使用,数据分析人员通过该hue接口完成以下工作:

1,访问hdfs和文件浏览,

2,通过web调试和开发hive以及数据结果展示,

3,查询solr和结果展示,报表生成,

4,通过web调试和开发impala交互式sqlquery,

5,spark调试和开发,

6,pig开发和调试,

7,oozie任务的开发,监控,和工作流协调调度,

8,hbase数据查询和修改,数据展示,

9,hive的元数据(metastore)查询,

10,mapreduce任务进度查看,日志追踪,

11,创建和提交mapreduce,streaming,javajob任务,

12,sqoop2的开发和调试,

13,zookeeper的浏览和编辑,

14,数据库(mysql,postgres,sqlite,oracle)的查询和展示。

hue可以统一各个开源项目的开发方式在一个接口里,使用起来比较方便(当然,也可以不用hue,因为各种开源项目都有自己的使用方式和开发接口),不用你一会准备使用hive,就开一个hive的cli终端,一会用pig,你就得开一个pig的grunt,或者你又想查hbase,又得需要开一个hbase的shell终端。你可以在任何时候,只要能上网,就可以通过hue来开发和调试数据,不用再装linux的客户端来远程登陆操作了,这也是b/s架构的好处。

在hue现有数据库权限管理中,对hive、impala中库、表的权限控制,需要配合其他开源组件共同使用,例如开源组件sentry等。例如:

基于sentry权限,hue访问hive中库、表时是基于代理用户,hive来执行相应的数据分析操作,而对后台代码中类似hive–e这种方式(-e表示后面直接接带双引号的sql语句),除代理用户外,其他用户将没有对hive中库、表的执行权限,这将影响到某些脚本任务的执行,例如会影响到通过shell命令调取hive中库、表的脚本任务的执行;调取impala中库、表的脚本任务也存在相同的问题;

而且,在单独使用sentry的情况下,在hue中被赋权用户必须在后台linux中存在相应的用户才有效,这致使通过sentry和hive、impala结合,进而实现对hive、impala中库、表的管理非常不便。

如上所述,可知现有技术存在以下缺点:

1.依赖性强,hive、impala对于库、表的权限管理基于其他开源组件,如利用sentry,hue可视化操作用户对库、表的权限,是借助于hive、impala代理用户在hive、impala中自身的权限。

2.底层影响范围广,如基于sentry,后台linux系统需要有相应的用户,在运行hive的情况下,只有hiveserver2的访问方式下,hive中库、表的权限才有效,同一个分析账户,可以在hue的web界面上操作某个表,不一定在linux后台就可以操作,权限分配前后影响后台脚本的调用。

本发明涉及以下技术术语:

hue:是一个可快速开发和调试hadoop生态系统各种应用的基于浏览器的图形化用户接口。

hadoop:大数据处理解决的一种方案,是一个开源框架,可编写和运行分布式应用处理大规模数据。hadoop框架的核心是hdfs和mapreduce。其中hdfs是分布式文件系统,mapreduce是分布式数据处理模型和执行环境。

hive:提供sql方式让用户进行数据处理,hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为mapreduce任务进行运行。其优点是学习成本低,可以通过类sql语句快速实现简单的mapreduce统计,不必开发专门的mapreduce应用,十分适合数据仓库的统计分析。

impala:基于c语言开发通过sql操作数据的工具,impala是cloudera公司主导开发的新型查询系统,它提供sql语义,能查询存储在hadoop的hdfs和hbase中的pb级大数据。已有的hive系统虽然也提供了sql语义,但由于hive底层执行使用的是mapreduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,impala的最大特点也是最大卖点就是它的快速。

python:一种编程语言,是一种面向对象的解释型计算机程序设计语言,语法简洁清晰,具有丰富和强大的库,它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是c/c++)很轻松地联结在一起。

django:基于python语言的一种web框架,django是一个开放源代码的web应用框架,由python写成。

web框架:别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种基于hue的权限管理系统,基于hue,通过二次开发,建立一套权限管理系统,用于管理hive、impala中库、表的权限,友好的解决了不同的数据分析人员,其对hive、impala中库、表的访问权限问题,不同用户可灵活分配库、表的权限。

为达到以上目的,本发明采取的技术方案是:

一种基于hue的权限管理系统,其特征在于,包括:

权限控制模块,用于获取登陆hue信息,所述登陆hue信息是指:数据分析人员登录hue信息,至少包括登陆账号,

权限关系表模块,用于记录登录hue的登陆账号对库、表的访问权限,向权限控制模块提供访问权限信息,

数据存储模块,用于存储数据形成相应的库、表,权限控制模块根据访问权限信息,获取登陆账号有权读取的库、表,并由权限控制模块转发给对应的登陆账号。

在上述技术方案的基础上,所述库、表包括但不限于:hive库、表,impala库、表。

在上述技术方案的基础上,所述权限关系表模块中,记录的访问权限信息,由hue的超级用户或管理员增删改。

在上述技术方案的基础上,数据分析人员按所属的部门和职位的不同,分派登陆hue后,对库、表的访问权限。

在上述技术方案的基础上,所属的部门和职位和访问权限的对应关系,预先存储于权限模板中,对权限模板的修改,自动套用到使用该权限模板的登陆账号下并生效。

在上述技术方案的基础上,权限模板包括通用权限和专有权限两类,其中:通用权限的修改,自动套用到使用该权限模板的登陆账号下并生效,

专有权限的修改,根据hue的超级用户或管理员的设置,套用到相应的登陆账号下并生效。

在上述技术方案的基础上,通用权限和专有权限的内容相同或不同。

在上述技术方案的基础上,所述访问权限信息仅限前端,对登陆账号自身权限无侵入;

所述访问权限信息仅用于判断登陆账号对库、表的可见性,对其他查询无任何性能影响。

在上述技术方案的基础上,所述权限控制模块,基于django框架实现,权限控制模块在登陆hue时被调用,具体包括:

hive、impala前端权限判断模块,用于获取登陆hue信息,用于获取访问权限信息,用于根据登陆hue信息、访问权限信息得出判断结果,所述判断结果记载登陆账号有权读取的库、表,用于将判断结果发送给登陆账号及hue,

hive、impala前端权限修改模块,用于接收hue的超级用户(管理员)发来的最新访问权限信息,用于发送该最新访问权限信息给权限关系表模块,

db模块,权限修改与赋予。

在上述技术方案的基础上,所述权限关系表模块,基于djangoorm模型实现,基于角色赋予相应的权限给库、表,角色与用户对应。

本发明所述的基于hue的权限管理系统,基于hue,通过二次开发,建立一套权限管理系统,用于管理hive、impala中库、表的权限,友好的解决了不同的数据分析人员,其对hive、impala中库、表的访问权限问题,不同用户可灵活分配库、表的权限。

本发明所述的基于hue的权限管理系统,在hue的基础上,通过hue,可以管理hue图形化界面中hive和impala部件,实现不同数据分析人员,操作不同的库、表的权限控制。

本发明所述的基于hue的权限管理系统,采用轻量级的权限关系表模块,结合访问权限信息仅限前端的方式,实现基于hue的权限管理。

附图说明

本发明有如下附图:

图1本发明的系统架构图。

具体实施方式

以下结合附图对本发明作进一步详细说明。

如图1所示,本发明所述的基于hue的权限管理系统,包括:

权限控制模块,用于获取登陆hue信息,所述登陆hue信息是指:数据分析人员登录hue信息,至少包括登陆账号,

权限关系表模块,用于记录登录hue的登陆账号对库、表的访问权限,向权限控制模块提供访问权限信息,

数据存储模块,用于存储数据形成相应的库、表,权限控制模块根据访问权限信息,获取登陆账号有权读取的库、表,并由权限控制模块转发给对应的登陆账号。

更进一步,作为可选的实施方式,所述权限控制模块中,包括以下信息:登录人员,登录人员隶属的角色,登录人员根据其隶属的角色所(能够)继承的权限;

例如:

登录人员:管理员;

登录人员隶属的角色:admin角色;

登录人员根据其隶属的角色所继承的权限:admin角色具有查看所有库、表的权限,具有赋予其他用户查看某些表的权限;

再例如:

登录人员:某某某;

登录人员隶属的角色:普通角色;

登录人员根据其隶属的角色所继承的权限:普通角色具有查看某些表的权限,没有赋予其他用户权限的权限。

本发明所述权限管理系统,优选hue本身的管理员作为hive、impala权限的管理员,

本发明所述权限管理系统,优选根据不同数据分析人员所属的部门和职位(职能)创建不同的角色,赋予对应的角色相应的权限,并把不同的数据分析人员添加到对应的角色中。

这样一来,不同部门、不同职位的数据分析人员,登录hue的时候,即可根据其角色,将相应的hive、impala中库、表转发(返回)给该数据分析人员,以便进行相应的分析操作。

更进一步,权限关系表模块记录的访问权限信息,存储于db中(数据库),作为可选的实施方式,可以在hue本身的数据库中增加表以实现对访问权限信息的存储,例如:

在hue本身的数据库中加入以下两张表:

用户角色表,用于记录角色与用户的对应关系的表;例如使登录人员和登录人员隶属的角色形成对应关系;

角色权限表,用于记录角色与库、表的对应关系的表;例如使登录人员隶属的角色和登录人员根据其隶属的角色所(能够)继承的权限形成对应关系;

由这两张表,我们可以获得一个登陆用户(登录人员)所具有的库、表的权限。

例如:

用户角色表中记录:zs用户隶属于select_test_test角色,

角色权限表中记录:select_test_test角色的权限是查看test库的test表,

这样zs用户就具有查看test库的test表的权限。

当zs用户登陆hue时,权限控制模块会根据用户名(登陆账号),查询hue数据库(hue本身的数据库)自定义的权限表(用户角色表)中有没有zs用户,如果有会根据zs用户所属的角色关联角色权限表,得到对应库、表的权限返回,如果没有,默认情况下可返回所有hive、impala的库、表。

在上述技术方案的基础上,所述库、表包括但不限于:hive库、表,impala库、表。

在上述技术方案的基础上,所述权限关系表模块中,记录的访问权限信息,由hue的超级用户(管理员)增删改。

数据分析人员按所属的部门和职位(职能)的不同,分派登陆hue后,对库、表的访问权限。

所属的部门和职位(职能)和访问权限的对应关系,预先存储于权限模板中,对权限模板的修改,自动套用到使用该权限模板的登陆账号下并生效。

权限模板包括通用权限和专有权限两类,其中:通用权限的修改,自动套用到使用该权限模板的登陆账号下并生效,

专有权限的修改,根据hue的超级用户(管理员)的设置,套用到相应的登陆账号下并生效。

通用权限和专有权限的内容相同或不同。

在上述技术方案的基础上,hue本身的权限管理,控制在于hive、impala等整个模块的控制,本发明的控制,细粒度到hue登录用户(登陆账号)在具有访问hive、impala的权限的情况下,对hive、impala库、表的权限控制,

hue的管理用户(hue本身的管理员),根据登录人员所属的部门和职位不同,在本权限控制模块中增加对应于不同所属的部门和职位的用户(角色),不同库、表的权限访问范围。

在登录hue用户具有访问hive、impala模块的前提下,本发明的权限控制模块会根据当前登录用户,自动查询权限关系表模块,判断其对于hive、impala中库、表的权限,返回相应的结果,在hue的web界面(图形化界面)中将看到所属范围内的库、表。

在上述技术方案的基础上,所述访问权限信息仅限前端,对登陆账号自身权限无侵入。所述前端是指hue的web界面。

所述访问权限信息仅用于判断登陆账号对库、表的可见性,对其他查询无任何性能影响。

本发明所述的基于hue的权限管理系统,基于hue,通过二次开发建立该权限管理系统,通过hue管理库、表(指hive、impala中的库、表)的访问权限,在hue的web界面中,基于用户灵活分配库、表的访问权限,所述用户是指数据分析人员(更具体说是数据分析人员的登陆账号)。

本发明所述的基于hue的权限管理系统,不影响在linux系统(相当于后台)中对hive或impala的访问,例如:hadoop集群环境中通过命令行、脚本的方式对hive或impala的访问,不受基于hue的权限管理系统的影响。

以下为应用场景举例:

应用场景一:

在hue的web界面中,用户a操作hive中的表b,在基于sentry的情况下,实际上对表b的操作是通过hive中的代理用户c去执行的,对应的hdfs上的权限是hive权限;

设用户a使用sentry之前曾经创建过脚本c;

在基于sentry的情况下,用户a在后台hadoop集群环境中,脚本c将失去读取hdfs的权限,导致任务失败。

本发明所述的基于hue的权限管理系统中,则友好的解决了不同的数据分析人员,其对hive、impala中库、表的访问权限问题,前述应用场景一在采用本发明的技术方案后:

用户a在登录hue时,登陆hue信息发送给权限控制模块,登录hue信息中至少包括用户a的登陆账号,

权限控制模块会根据权限关系表模块中的访问权限信息,判断用户a对哪些库、表具有权限,其中:

对于有读取权限的库、表,则会展示给用户a,

对于无读取权限的库、表,则不展示给用户a,

所述展示是指:在hue的web界面(图形化界面)中,显示库、表的名称,显示库中的各个表,显示表中各条记录,

本权限管理系统上线之前,我们考虑到的是基于sentry的权限管理,但是sentry的权限管理,要求linux中具有相同的用户,和hive结合的时候,要求hive数据库在hdfs上的权限统一修改为一个代理用户,这样影响到之前其他用户的脚本调用,而本权限管理系统不会有此影响,在此基础之上做到不同用户灵活分配库、表的权限。

在上述技术方案的基础上,所述权限控制模块,基于django框架实现,权限控制模块在登陆hue时被调用,具体包括:

hive、impala前端权限判断模块,用于获取登陆hue信息,用于获取访问权限信息,用于根据登陆hue信息、访问权限信息得出判断结果,所述判断结果记载登陆账号有权读取的库、表,用于将判断结果发送给登陆账号及hue,

hive、impala前端权限修改模块,用于接收hue的超级用户(管理员)发来的最新访问权限信息,用于发送该最新访问权限信息给权限关系表模块,

db模块,权限修改与赋予。这里在hue原来的库中加入了两张表用于权限控制,这两张表的修改既是管理员对数据分析用户赋予hive、impala不同库、表权限的操作,在hue界面即可完成。

权限控制模块会将当前权限关系以自定义的sql查询权限表,形成权限关系以表格的形式展现在hue权限控制页面,以便于管理进行库、表权限管理。同时对库表权限的修改也在hue界面操作控制。

在上述技术方案的基础上,所述权限关系表模块,基于djangoorm模型实现,基于角色赋予相应的权限给库、表,角色与用户对应。

角色与库、表对应,用户登陆时或者用户在hue界面刷新hive、impala库,表操作是都会调用,权限控制模块判断当前用户的库、表权限。为了防止出错,管理员赋予某个用户一个不存在的表权限,权限控制模块会做判断,只会展示数据库中实际存在库、表。

同时,登录用户在hue中的hive或者impala界面通过sql语句所创建的表,也会通过权限控制模块字段加入到对应的权限表中,即默认情况下用户新创建的表会自动产生自己的所有权限。这些刷新操作,或者通过sql执行操作,都会通过权限控制模块的判断,最终形成本权限控制系统。

本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

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