1 Sentry是什么
1、Apache Sentry是Cloudera公司发布的一个Hadoop开源组件,它提供了细粒度级、基于角色的授权以及多租户的管理模式,
2、Sentry当前可以和Hive/Hcatalog、Apache Solr 和Cloudera Impala集成, 为这些组件提供权限管理服务。
3、基于角色的管理(role-based acess control)通过创建角色,将每个组件的权限授予给此角色,然后在用户(组)中添加此角色,用户便具备此角色访问组件的权限,
4、使用sentry对hive进行权限管理时,这里的组件可以是整个server,也可以是单个db,或者单张table.
2要求
使用beeline连接hive,进行权限管理,Hive Cli不支持Sentry管理。
3配置
3.1 HDFS配置
HDFS访问控制列表开启
检查HDFS权限开启
Sentry开启
3.2 Hive配置
hive Sentry开启
Hive Impersonation禁用
启用数据库中的存储通知hive Metastore Server Default Group
Set sentry.hive.testing.mode=true
3.3 impala配置
Sentry开启
4 Sentry权限分配模式
备注:权限赋予角色,角色分给用户组,之后该用户组下所有用户都将拥有该权限
5基本用法
将role从角色中剔除
REVOKE ROLE role1 FROM GROUP user1;
删除role
//先查看角色列表
show roles
//删除角色
drop role role2;
角色权限撤销
//先查看角色当前授权信息
show grant role role1;
//将db1的操作权限从role1撤销
revoke all on database db1 from role role1;
授权语句说明:
角色授权和撤销
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>;
#将某个数据库读权限授予给某个role
GRANT SELECT ON DATABASE db_name TO ROLE role_name;
#将test 表的 S1 列的读权限授权给role_name (TABLE也可以不写)
GRANT SELECT(s1) ON TABLE test TO ROLE role_name;
#test表的select 权限给 role_name 角色
GRANT SELECT ON TABLE test TO ROLE role_name;
6实际使用样例
6.1 hive用户授予管理员权限
6.1.1创建管理员角色admin
CREATE ROLE admin;
6.1.2为admin角色授予全部server权限
grant all on server server1 to role admin;(server1为用于 Sentry 授权的服务器名称,默认为server1)
6.1.3为hive用户赋予admin角色
//经过这一步,hive用户已经可以作为管理员用户执行全部数据和权限操作。
GRANT ROLE admin TO GROUP hive;
6.2创建只读权限角色
6.2.1 linux创建bigdata用户
useradd hive
passwd hive
6.2.2 hive创建角色
create role hive_select;
6.2.3分配只读权限给角色
grant select on database tmp to role hive_select;
6.2.4将角色分配给用户组
grant role hive_select to group bigdata;
这样,当使用bigdata用户登录hive时,对于库tmp只有select权限