Hadoop/Hive自带权限控制
延续数据仓库之Hive快速入门 - 离线&实时数仓架构一文,本文将介绍一下Hadoop/Hive自带的权限控制,权限控制是大数据平台非常重要的一部分,关乎数据安全。
集群安全下需求:
支持多组件,最好能支持当前大数据技术栈的主要组件,HDFS、HBASE、HIVE、 YARN、KAFKA等
支持细粒度的权限控制,可以达到HIVE列,HDFS目录,HBASE列,YARN队列
开源,社区活跃,按照现有的集群情况改动尽可能的小,而且要符合业界的趋势。
现有方案:
Hadoop、Hive本 身的权限控制
Kerberos安全认证
Apache Ranger权限管理方案
Hadoop权限:
Hadoop分布式文件系统实现了一个和POSIX系统类似的文件和目录的权限模型
每个文件和目录有一个所有者(owner)和一个组(group)
文件或目录对其所有者、同组的其他用户以及所有其他用户分别有着不同的权限
文件或目录操作都传递路径名给NameNode,对路径做权限检查
启动NameNode的用户是超级用户,能够通过所有的权限检查
通过配置可以指定一组特定的用户为超级用户
Hive权限:
Hive可以基于文件存储级别的权限管理
Hive可以基于元数据的权限管理
User:是基于linux用户的user
Group:是linux层面上的用户组
Role:角色在Hive里面创建,给角色添加权限,把角色赋予给user
Hive中没有超级管理员,任何用户都可以进行Grant/Revoke操作
开发实现自己的权限控制类,确保某个用户为超级用户
实操Hive的权限操作
首先添加一个系统用户:
[root@hadoop01 ~]# useradd hive
将test这个表的查询权限赋予给hive这个用户:
0: jdbc:hive2://localhost:10000> grant select on table test to user hive;
No rows affected (0.12 seconds)
0: jdbc:hive2://localhost:10000>
切换到hive用户:
[root@hadoop01 ~]# sudo su - hive
进入交互命令终端,可以正常执行查询语句:
[hive@hadoop01 ~]$ beeline -u jdbc:hive2://localhost:10000 -n hive
...
0: jdbc:hive2://localhost:1000