作者:唐辉
1.文档编写目的
Sentry的介绍和使用Fayson前面的文章了介绍了很多,本篇文章主要介绍集群启用Sentry后普通用户用户执行show roles 命令无法正常查看的分析以及解决办法。
- 内容概述
1.问题描述
2.解决办法
3.参考文档
- 测试环境
1.CM和CDH版本为5.15.1
2.操作系统版本为RedHat7.2
3.已启用Kerberos
4.已启用Sentry
2.问题描述
登录一个普通用户去使用show roles 命令会出现如下异常:
show roles;show current roles;
![b71510afba778aa8d242e02ffa9d06b6.png](https://i-blog.csdnimg.cn/blog_migrate/f8ebdbbb10911ca53238716629ed92b3.jpeg)
该用户可以查看当前用户的所有角色,却不能查看所有的,起初认为是该角色权限不够,于是登录hive用户,查看hive 用户具有哪些角色,然后全部赋予test_sjz用户组
show current roles;grant role admin_role to group test_sjz;grant role hive_role to group test_sjz;
![486a26a7fe779c9ab3b7da566b5b9dd2.png](https://i-blog.csdnimg.cn/blog_migrate/51a65bb1e7c211f23287d3bba2c002d7.jpeg)
然后再切换到test_sjz 用户再次尝试,发现即使赋予admin_role 也不能正常查看show roles;
![fc4aabfdb1e0d959de880631b4512f41.png](https://i-blog.csdnimg.cn/blog_migrate/743ec52136406209bc5c0f3f326f4e5b.jpeg)
3.解决办法
那么怎么才能让其他的用户也能正常执行show roles 命令?我们知道show roles 命令是查看全部的roles ,肯定是跟用户的权限有关,去cloudera 官网查看资料找到如下图所示资料,也就是说只能sentry 管理员用户才能执行show roles查看;
![bddc1ddc4b10b618a4e453e327f158d7.png](https://i-blog.csdnimg.cn/blog_migrate/659c2ba4dcc49d54d44843f27268e48e.jpeg)
那么解决思路有两种:
1.一是将test_sjz 用户添加到hive 组他这样这个用户也能查看。
![25605fae25b0d8030abd493d8836d2e9.png](https://i-blog.csdnimg.cn/blog_migrate/941a6dd17c767ef3765ea6a233044c52.jpeg)
2.将test_sjz 用户组设置为sentry 管理员用户组,下面主要介绍第二种方式
在CM > Sentry > 配置>搜索admin 添加该用户组到管理员组并保存重启sentry 服务生效
![1f1a96f2e8e56a3e152a3b7ce2a11cd9.png](https://i-blog.csdnimg.cn/blog_migrate/4dc61ddbb1d318aebd2146a58862248a.jpeg)
为避免其他用户角色影响,我们登录hive用户并收回test_sjz 用户组的admin_role;
revoke role admin_role from group test_sjz;revoke role hive_role from group test_sjz;
![d08574d9be44ced7e64f1763e632ed9a.png](https://i-blog.csdnimg.cn/blog_migrate/60961f630906b66938b99e5d40c03a84.jpeg)
然后再次登录test_sjz 用户查看
![d4dfe3c3ce9d3f2e28658495e973c60b.png](https://i-blog.csdnimg.cn/blog_migrate/c23664b4fb374fc7853d9a36f05d64f4.jpeg)
此时test_sjz 用户可以正常执行show roles;
参考:
https://www.cloudera.com/documentation/enterprise/5/latest/topics/sg_hive_sql.html#concept_c2q_4qx_p4