淘先锋技术网

首页 1 2 3 4 5 6 7

HiveServer2有自己的CLI叫 Beeline(基于JDBC的SQLLine),由于新的开发焦点在HiveServer2,那么Hive CLI将被废弃

$ beeline
beeline> !connect jdbc:hive2://localhost:10000 hadoop ""
beeline> show databases;

或者:

$ beeline -u jdbc:hive2://localhost:10000/stg -n hadoop -p ""

Hive中的用户就是用户的系统用户名

Hadoop 安全体系

fdefaec04e6bf5f46318a6bc97c30a25.png

hive 权限管理

hive访问三种方式:

ca40199f9c3b30bc24aea70f950220fa.png
[root@beginman ~]# su - hive
[hive@beginman ~]$ hive
hive> show roles;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Current user : hive is not allowed to list roles. User has to belong to ADMIN role and have it as current role, for this action.

执行任何有关权限设置和查看的语句时都报错,这是因为没有开启权限控制

<!--开启hive权限认证机制-->
<property>
<name>hive.security.authorization.enabled</name>      # 开启权限认证功能
<value>true</value>
<description>enable or disable the hive client authorization</description>
</property>

<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>


<property>
<name>hive.users.in.admin.role</name>               # admin 权限用户列表
<value>hive</value>
</property>

然后重启hive, 用hive 账号进入hive, 执行 set role admin, 将此用户设置为admin角色的用户即可

hive> set role admin;
OK
Time taken: 0.852 seconds
hive> show roles;
OK
admin
public

使用Apache ranger进行权限控制:https://help.aliyun.com/document_detail/66420.html?spm=a2c4g.11186623.2.20.31d33e02PcxZsu#concept-ej3-jn3-bfb

Ranger与Sentry使用区别

Sentry:RBAC(role-based acess control)基于角色的管理,即:通过创建角色,将每个组件的权限授予给此角色。然后在用户中添加此角色,即用户具备此角色访问组件的权限(组也类似)

Ranger: PBAC(policy-based acess control)基于策略的管理,即:每个组件可以添加服务Service如Hive,然后添加自定义策略(如访问粒度Database,Table,Column),再添加组或用户访问权限(Select,Create,Drop等)

Ranger 权限管理流程图分析,以ranger对hive进行权限管理为例,如下图所示:鉴权过程分为五个步骤

eab888e42bd88cbced26ffa0f93d5f8b.png
  • https://ieevee.com/tech/2016/05/10/spark-7-security.html)