Hadoop

CDH5.8 安装配置安全组件Sentry

2017-03-08  本文已影响5678人  囧蛋

    本文主要粗略叙述基于 ClouderaManager 在CDH 5.8 中为 Impala 和 Hive 配置 Sentry 的过程。

    在Sentry中,权限都只能授予给角色,角色被指定属于一个或多个组,当角色被挂载到用户组的时候,该组内的用户才具有相应的权限。权限->角色->用户组->用户显示了一条权限如何能最后被一个用户所拥有,从权限到角色,再到用户组都是通过grant/revoke的SQL语句来授予的。可以设定一个Sentry管理员所属的组,所有属于管理员组的用户都具有管理员的能力。

1.禁用HiveServer2 impersonationin:

    Hive服务--->配置---->范围--->HiveServer2--->类别--->主要---->取消HiveServer2启用模拟,如下图:

2.添加hive用户为允许的系统用户(Allowed System Users)可以提交Yarn jobs:

    YARN服务--->配置--->范围--->NodeManager--->类别--->安全--->允许的系统用户(Allowed System Users),若没有hive用户,则添加hive用户,然后重启Yarn服务(所有Yarn的NodeManage节点都要做如此操作)如下图:

3.在Hive服务中启动Sentry服务:

    Hive服务--->配置---->范围--->Hive(服务范围)--->类别--->主要---->SentryService--->选择Sentry

重启Hive服务。

4.如3分别在impala/hue服务中启动Sentry服务。

5.把hive/impala/hue添加到Sentry服务的管理员组:

    Sentry服务--->配置---->范围--->Sentry(服务范围)--->类别--->主要---->管理员组(AdminGroups)--->添加hive/impala/hue。 如图:

6.开启hive服务的testing模式:

    Hive服务--->配置---->范围--->Hive(服务范围)--->类别--->主要---->高级-->sentry-site.xml的hive服务高级配置代码段,如图:

注:若不开启testing mode,在启动Sentry服务的时候可能会报错:

FAILED: InvalidConfigurationExceptionhive.server2.authentication can't be none in non-testing mode

注:Sentry服务启动后,由于Hive CLI在Sentry中不支持所以建议禁止使用Hive查询,应该使用Beeline来执行Hive查询。配置Sentry的SQL授权语句也必须在Beeline客户端中进行。有关Sentry的SQL授权语句请参考Hive SQL Syntax for Use with Sentry.


% bin/beeline

Beeline version 1.1.0-cdh5.8.3  by Apache Hive

beeline> !connect jdbc:hive2://ln-master:10000 hive hive (使用Sentry服务管理员组中的用户登入,否则没有权限执行下面的SQL语句)

0: jdbc:hive2://ln-master:10000>show roles;

创建admin角色并授予权限:

CREATE ROLE admin_role;

GRANT ALL ON SERVER server1 TO ROLE admin_role;

创建analyst_role角色并授予权限:

CREATE ROLE analyst_role;

GRANT ALL ON DATABASE analyst1 TO ROLE analyst_role;

GRANT SELECT ON DATABASE jranalyst1 TO ROLE analyst_role;

GRANT ALL ON URI 'hdfs://ha-nn-uri/landing/analyst1' TO ROLE analyst_role;

把角色赋予组:

GRANT ROLE  admin_role  TO GROUP  `admin`;

GRANT ROLE  analyst_role TO GROUP  `analyst`;

上一篇下一篇

猜你喜欢

热点阅读