HIVE权限控制(二),结合HDFS权限
2017-09-17 00:00
316 查看
摘要: 生产中公共数据一般使用外部表,一般需要结合HDFS权限共同管理
目标:
创建一个linux账户hivetest,建立一个hive数据库hivetest,hivetest账户对hivetest库用户all权限
创建一个linux账户张三,zhangsan拥有hivetest库的查询权限
1. 建hdfs目录
2. 建用户和组
3. hdfs目录赋权
3. 创建HIVE数据库和角色
4. 给予第三方创建查询角色
5. 创建表
6. 三方用户zhangsan获取该库下表的权限
7.关于撤销权限
目标:
创建一个linux账户hivetest,建立一个hive数据库hivetest,hivetest账户对hivetest库用户all权限
创建一个linux账户张三,zhangsan拥有hivetest库的查询权限
1. 建hdfs目录
hadoop fs -mkdir /user/hivetest hadoop fs -mkdir /user/hivetest/.Trash hadoop fs -mkdir /user/hivetest/private hadoop fs -mkdir /user/hivetest/public
2. 建用户和组
所有机器建用户,本文为了方便,用了ansible批量执行 useradd hivetest 在两台namenode分别添加用户组 groupadd hivetest_group #批执行命令 ansible ah -m shell -a "useradd hivetest" ansible ah -m shell -a "echo '123456' | passwd --stdin hivetest" ansible ah -m shell -a "groupadd hivetest_group"
3. hdfs目录赋权
hdfs 赋权 hadoop fs -chown hivetest:hivetest_group /user/hivetest hadoop fs -chown hivetest:hivetest /user/hivetest/.Trash hadoop fs -chown hivetest:hivetest /user/hivetest/private hadoop fs -chown hivetest:hivetest_group /user/hivetest/public hadoop fs -chmod 750 /user/hivetest hadoop fs -chmod 750 /user/hivetest/.Trash hadoop fs -chmod 750 /user/hivetest/private hadoop fs -chmod 750 /user/hivetest/public
3. 创建HIVE数据库和角色
#需要用管理员用户,将该数据库的的 所有权赋予该用户自己 create database hivetest; create role hivetest_role; GRANT ALL ON DATABASE hivetest TO ROLE hivetest_role; GRANT ROLE hivetest_role TO GROUP hivetest;
4. 给予第三方创建查询角色
#如果其他用户需要查询该表,则建立一个角色或者组,然后将该角色或者组赋予该用户即可 create role hivetest_db_select_role; GRANT select ON DATABASE hivetest TO ROLE hivetest_db_select_role; --这里可以考虑用USER/GROUP GRANT ROLE hivetest_db_select_role TO GROUP zhangsan;
5. 创建表
#创建hdfs 目录 hadoop fs -mkdir /user/hivetest/public/hivetest_t1 hadoop fs -chown hivetest:hivetest_group /user/hivetest/public/hivetest_t1 hadoop fs -chmod 750 /user/hivetest/public/hivetest_t1 #建公共表 create external table hivetest_t1( name string, age string ) row format delimited fields terminated by '\t' Location 'hdfs://ns1/user/hivetest/public/hivetest_t1';
6. 三方用户zhangsan获取该库下表的权限
#--------------------------------------------------------------- #赋权时集合hdfs权限, #其他用户如果要访问这个这个表需要将其纳入 hivetest_group组 ansible ah -m shell -a "usermod -a -G hivetest_group xxx" ansible ah -m shell -a "usermod -a -G hivetest_group zhangsan" --这里可以考虑用USER/GROUP GRANT ROLE hivetest_db_select_role TO GROUP zhangsan;
7.关于撤销权限
#撤销时也是从两个方面下手,一个hdfs目录,一个是hive权限 #将用户zhaoshun从hivetest_group组中回收,之后需要用户不能访问这个表的hdfs目录 ansible ah -m shell -a "gpasswd -d zhangsan hivetest_group" #再将用户重角色和组中回收 #hivetest_db_select_role, 是用户给其他用户查询用的, revoke ROLE hivetest_db_select_role from GROUP zhangsan;
相关文章推荐
- Hdfs 权限与Ranger 权限管理的控制
- hive启动出现权限错误 /tmp/hive on HDFS should be writable.
- hive权限控制介绍
- hive权限控制介绍
- Hive权限控制和超级管理员的实现
- HDFS文件权限及ACL访问控制
- hive权限控制
- hive权限控制介绍
- 【精华】Linux用户Hive权限控制实践
- ClouderaManager安装hive后执行sql时写hdfs无权限
- FLEX权限--使用RemoteObject交互结合spring AOP控制项目权限教程
- spark-local 模式 提示 /tmp/hive hdfs 权限不够的问题
- SparkSQL利用HDFS的权限控制表的读权限
- Hive权限控制
- Spring结合Shiro进行权限控制
- CodeIgniter与Zend Acl结合实现轻量级权限控制
- Java之访问权限控制符以及结合继承体系引发的注意事项
- hive权限控制
- Linux用户和HDFS和Hive权限关系
- [转]CodeIgniter与Zend Acl结合实现轻量级权限控制