1.cdh添加组件-sentry-选择主机-配置数据库
2.配置数据库
1)mysql -uroot -p
2) create database sentry DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
3) grant all privileges on sentry.* to root@'%' identified by '123' with grant option;
4)flush privileges;
5)exit;
选择mysql数据库主机、用户名、密码、需要将mysql jdbc驱动拷贝到对应主机下的cm/share/cmf/lib和/opt/cloudera/parcels/CDH-5.10.2-1.cdh5.10.2.p0.5/lib/sentry/lib
测试连接-下一步-创建数据库表,开启sentry服务
3.hive配置下勾选sentry、去掉hiveserver2启用模拟、添加属性sentry.hive.testing.mode值为true和hue配置勾选sentry
4.sentry配置
5.重启hive和hue
6.beeline登录进行授权角色
beeline -u "jdbc:hive2://hadoop03:10000/" -n hive -p hive -d org.apache.hive.jdbc.HiveDriver
1)创建角色并授权给组
执行下面的 sql 语句创建 role、group等:
create role admin_role;
GRANT ALL ON SERVER server1 TO ROLE admin_role;
GRANT ROLE admin_role TO GROUP admin;
GRANT ROLE admin_role TO GROUP hive;
create role test_role;
GRANT ALL ON DATABASE filtered TO ROLE test_role;
GRANT ROLE test_role TO GROUP test;
上面创建了两个角色:
admin_role,具有管理员权限,可以读写所有数据库,并授权给 admin 和 hive 组(对应操作系统上的组)
test_role,只能读写 filtered 数据库,并授权给 test 组。
因为系统上没有test用户和组,所以需要手动创建:
groupadd test
useradd -G test test -p test -m test 创建用户test,并加入test组,设置密码test,创建test home目录
id test
usermod -a -G test test添加已存在的用户到已存在的组
测试admin_role角色
使用hive用户访问beeline:
$ beeline -u "jdbc:hive2://hadoop03:10000/" -n hive -p hive -d org.apache.hive.jdbc.HiveDriver
set system:user.name;
show roles;
SHOW GRANT ROLE test_role;
SHOW GRANT ROLE admin_role;
测试test_role角色
使用test用户访问beeline:
$ beeline -u "jdbc:hive2://hadoop03:10000/" -n test -p test -d org.apache.hive.jdbc.HiveDriver
set system:user.name;
7.相关命令简介
创建和删除角色
CREATE ROLE role_name
DROOP ROLE role_name
角色的授权和撤销
GRANT ROLE role_name [, role_name] TO GROUP <groupName> [,GROUP
<groupName>]
REVOKE ROLE role_name [, role_name] FROM GROUP <groupName> [,GROUP
<groupName>]
权限的授予和撤销
GRANT <PRIVILEGE> [, <PRIVILEGE> ] ON <OBJECT> <object_name> TO ROLE
<roleName> [,ROLE <roleName>]
REVOKE <PRIVILEGE> [, <PRIVILEGE> ] ON <OBJECT> <object_name> FROM ROLE
<roleName> [,ROLE <roleName>]
查看角色/组权限
SHOW ROLES;
SHOW CURRENT ROLES;
SHOW ROLE GRANT GROUP <groupName>;
SHOW GRANT ROLE <roleName>;
SHOW GRANT ROLE <roleName> ON OBJECT <objectName>;