基于 Sentry Hive 权限控制命令详解

Sentry不支持Hive CLI列权限管理,建议禁用Hive CLI。 (也不支持SparkSql列权限管理)

 

#权限分为 SELECT ,INSERT ,ALL
#查看所有role
show roles;
 
#创建role 
create role role_name;
 
#删除role
drop role role_name;  
 
#将某个数据库读权限授予给某个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;
 
#查看role_name 在数据库db_name中权限
SHOW GRANT ROLE role_name ON DATABASE db_name;
 
#查看role_name 在表test中的权限
SHOW GRANT ROLE role_name ON TABLE test;
 
#将role_name 权限给予user_name用户
GRANT ROLE role_name TO USER user_name;
 
#将role_name 权限给予user_group用户组
GRANT ROLE role_name TO GROUP user_group;
 
#查看某个用户下所有赋予的role权限
SHOW ROLE GRANT USER user_name;
 
#查看某个用户组下所有赋予的role权限
SHOW ROLE GRANT GROUP user_group;
 
#查看某个role下的权限信息
SHOW GRANT ROLE role_name;
 
#回收role_name对数据库db_name的SELECT 权限
REVOKE SELECT ON DATABASE db_name FROM ROLE role_name;
 
#回收role_name对表test的SELECT 权限  
revoke select on [table] test from role role_name;  
 
#回收某个group下role权限
REVOKE ROLE role_name [, role_name]  FROM GROUP (groupName) [,GROUP (groupName)]

Java Sentry是一个用于数据访问权限控制的Java库,它基于Apache Sentry项目,可以在Hadoop、Hive等大数据组件中实现细粒度的数据权限控制。以下是Java Sentry的使用教程: 1. 安装Sentry服务器:首先需要安装Sentry服务器,可以参考官方文档进行安装。 2. 配置Sentry权限:在Sentry服务器上设置角色权限,以控制数据的访问。 3. 集成Java Sentry:将Java Sentry库添加到项目中,并在代码中引入Java Sentry相关类和方法。 4. 配置Java Sentry:在代码中设置Java Sentry相关配置,如Sentry服务器地址、用户名、密码等。 5. 实现数据访问控制:在代码中使用Java Sentry提供的API来实现数据的访问控制,如检查用户是否具有数据访问权限、添加用户到指定角色等。 以下是一个示例代码: ```java // 设置Java Sentry配置 SentryConfig sentryConfig = new SentryConfig(); sentryConfig.setSentryServer("sentry-server:8080"); sentryConfig.setUsername("user1"); sentryConfig.setPassword("pwd1"); // 创建Java Sentry客户端 SentryClient sentryClient = SentryClientFactory.create(sentryConfig); // 检查用户是否有访问数据的权限 if (sentryClient.hasAccess("user1", "database1.table1", ActionType.SELECT)) { // 用户有访问权限,执行数据访问操作 Connection conn = DriverManager.getConnection("jdbc:hive2://hive-server:10000/default"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM database1.table1"); // 处理查询结果 } else { // 用户无访问权限,返回错误信息 throw new Exception("User does not have access to database1.table1"); } ``` 通过以上步骤,就可以使用Java Sentry实现数据访问权限控制了。需要注意的是,Java Sentry的具体使用方法和API可能会因版本而异,可以参考官方文档或示例代码进行使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值