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>;
