Hive SQL Syntax for Use with Sentry

介绍

    sentry的权限可以通过在HiveServer2 SQL CLI中使用grant和revoke语句来配置, Hive CLI不支持用来配置sentry权限。当sentry开启的时候,你必须使用Beeline来执行Hive查询,Hive CLI不支持。

语句

    创建role

        CREATE ROLE语句创建可以授权的角色。 可以将权限授予角色,然后将角色分配给用户。 已分配了角色的用户将只能够行使该角色的权限。只有具有管理权限的用户才能创建/删除角色。 默认情况下,hive,impala和hue用户在Sentry中具有管理员权限。

CREATE ROLE [role_name];

    删除role

        DROP ROLE语句可用于从数据库中删除角色。 一旦删除,之前分配给它的所有用户的角色将被撤销。 已经执行的查询不会受到影响。 但是,由于Hive在执行每个查询之前检查用户权限,所以已启用角色的活动用户会话将受到影响。

DROP ROLE [role_name];

    授权role

        GRANT ROLE语句可用于向组授予角色。 只有Sentry管理员用户可以向组授予角色。

GRANT ROLE role_name [, role_name] GROUP <groupName> [,GROUP <groupName>]

    删除role授权

        REVOKE ROLE语句可用于从组中撤销角色。 只有Sentry管理员用户可以从组中撤消角色。

REVOKE ROLE role_name [, role_name] FROM GROUP <groupName> [,GROUP <groupName>]

    角色授权

        为了向角色授予对象的特权,用户必须是Sentry管理员用户。

GRANT    
    <PRIVILEGE> [, <PRIVILEGE> ]    
    ON <OBJECT> <object_name>    
    TO ROLE <roleName> [,ROLE <roleName>]

    删除角色授权

        由于只有授权的管理员用户才能创建角色,因此只有Sentry管理员用户可以撤销组中的权限。

REVOKE    
    <PRIVILEGE> [, <PRIVILEGE> ]    
    ON <OBJECT> <object_name>    
    FROM ROLE <roleName> [,ROLE <roleName>]

    授权下放

        您可以将授予和撤消权限委派给其他角色。 例如,授予WITH GRANT OPTION权限的角色可以向/从其他角色获得GRANT / REVOKE相同的权限。 因此,如果角色对数据库和WITH GRANT OPTION设置了ALL权限,则授予该角色的用户只能对该数据库或数据库的子表执行GRANT / REVOKE语句。

GRANT
    <PRIVILEGE> 
    ON <OBJECT> <object_name>
    TO ROLE <roleName> 
    WITH GRANT OPTION

    授权回收

        只有具有特定权限或其父权限的GRANT选项的角色才能从其他角色撤销该权限。 执行以下语句后,将撤销具有和不具有grant选项的所有特权。

REVOKE
    <PRIVILEGE>
    ON <OBJECT> <object_name>
    FROM ROLE <roleName>

    切换role

        SET ROLE语句可用于指定要为当前会话启用的角色。 用户只能启用已授予它们的角色。 未列出并且尚未启用的任何角色对当前会话均被禁用。 如果未启用角色,则用户将具有由其所属的任何角色授予的特权。

#开启某一个role
SET ROLE <roleName>;
#开启所有role
SET ROLE ALL;
#没有role
SET ROLE NONE;

    show语句

#显示所有roles
SHOW ROLES;

#显示当前roles
SHOW CURRENT ROLES;

#列出group的所有role
SHOW ROLE GRANT GROUP <groupName>;

#列出已授权角色的特权
SHOW GRANT ROLE <roleName>;

例子

    policy file

[groups] 
# Assigns each Hadoop group to its set of roles  
manager = analyst_role, junior_analyst_role 
analyst = analyst_role 
jranalyst = junior_analyst_role 
customers_admin = customers_admin_role 
admin = admin_role  

[roles] # The uris below define a define a landing skid which 
# the user can use to import or export data from the system. 
# Since the server runs as the user "hive" files in that directory 
# must either have the group hive and read/write set or 
# be world read/write. 
analyst_role = server=server1->db=analyst1, \     
    server=server1->db=jranalyst1->table=*->action=select         
    server=server1->uri=hdfs://ha-nn-uri/landing/analyst1 
junior_analyst_role = server=server1->db=jranalyst1, \     
    server=server1->uri=hdfs://ha-nn-uri/landing/jranalyst1  

# Implies everything on server1. 
admin_role = server=server1

            ps:sentry即支持后端DB存储访配置策略,也支持配置文件的形式设置测试,上面的策略文件就是以配置文件的形式设置访问策略。

       analyst_role授权

CREATE ROLE analyst_role;
GRANT ALL ON DATABASE analyst1 TO ROLE analyst_role;
GRANT SELECT ON DATABASE jranalyst1 TO ROLE analyst_role;
GRANT ALL ON URI 'hdfs://ha-nn-uri/landing/analyst1' \
TO ROLE analyst_role;

        junior_analyst_role授权

CREATE ROLE junior_analyst_role;
GRANT ALL ON DATABASE jranalyst1 TO ROLE junior_analyst_role;
GRANT ALL ON URI 'hdfs://ha-nn-uri/landing/jranalyst1' \
TO ROLE junior_analyst_role;

        admin_role授权

CREATE ROLE admin_role
GRANT ALL ON SERVER server TO ROLE admin_role;

        group授予角色

GRANT ROLE admin_role TO GROUP admin;
GRANT ROLE analyst_role TO GROUP analyst;
GRANT ROLE jranalyst_role TO GROUP jranalyst;

 

 

 

 

转载于:https://my.oschina.net/guol/blog/858780

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值