hue集成sentry

时间:2024-04-10 22:28:23

 

前言

集群启用kerberos后,访问impala的方式除了impala-shell、jdbc工具,还有hue

当然不可能在impala-shell编写sql,jdbc工具的话,电脑上还得装kerberos客户端,虽然不麻烦,确实多了一步

所以通过sentry给hue授权,实现不同用户登陆hue拥有不同得权限

hue权限

参考地址:

https://www.cloudera.com/documentation/enterprise/5-16-x/topics/hue_adm_permissions.html

hue集成sentry

注意:hue和底层集群服务有独立的权限,hue的超级管理员对hdfs、hive等等没任何意义。

对于hue来说

hue集成sentry

 

第一个登陆的用户拥有管理员权限,可以添加用户/组,修改用户密码,分配hue那的权限

hue集成sentry

hue那的权限只是前端对用户的显示,如果没有impala权限,该用户则无法调impala sql,做不到对库和表的控制

 hue集成sentry

 

8888页面也不会有impala那个tab,hue本身manage user可分配的权限对sentry没有任何意义

使用sentry授权hue的用户/组 

参考地址:

https://www.cloudera.com/documentation/enterprise/5-16-x/topics/hue_sec_sentry_auth.html

hue集成sentry

条件:

cdh服务必须有认证(kerberos)

hue user/group必须和linux(所有节点)上的user/group一致

 

用第一次登陆的admin/admin添加用户/组

hue集成sentry

并将该用户设为超级用户

hue集成sentry 

并在linux上添加该用户组(所有节点)

hue集成sentry 

为了使用户可以在hue中进行授权,该用户的组必须在sentry如下配置中添加

hue集成sentry 

 

添加完成后,重启hue服务

hue集成sentry 

可以看到,想成为系统管理员,必须有一下条件:

在linux上必须有该用户/组(已添加)

hue上有该用户/组(已添加)

hue上该用户是超级用户(已修改)

sentry数据库权限设置为all(把之前给hive组的admin role 授给该组)

后面的hdfs的acl(用的kudu,不修改无影响)

 

刚启用kerberos时,beeline进hive只有一个default库,然后执行了以下操作

hue集成sentry

所以将admin role授给sysadmins组

grant role admin to group sysadmins;

 

打开8888,用test_hue1用户登陆,管理员有所有库的权限,并且可以管理hue的用户/组,admin/admin除了可以管理用户/组外,无法进行sentry授权

hue集成sentry

 

点击左上角,并进入security

hue集成sentry 

 

hue集成sentry 

点击roles,可以看到之前添加的role和group了

hue集成sentry 

点击右上角的add

hue集成sentry 

name那需要填role名,groups所属组,可以多个,也可以没有

点击+就可以grant privileges给该role了

hue集成sentry

第一个框填db或者db.tab,也可以*(表示所有库),第二个为hdfs的url(用不到),第三个就是分配权限了,分配完之后保存,beeline进hive可以show roles;就可以看到在hue界面创的role了.

注意:要为一个用户分配权限,必须在hue界面添加用户并分配组,还得在linux上添加用户/组,用户名/组名必须同名,如果该用户需要jdbc or odbc远程连接,必须添加kerberos princ并设置密码(princ必须通linux/hue用户同名),就可以远程访问了。