linux怎么查看本机内存大小
318
2022-11-15
Amazon EMR 配置 Hive 对Hue用户的权限控制
Hue 创建用户后无权限访问Hive
在hue中创建完用户后,还需要在主节点中创建这个user并在hive和hadoop中为这个user赋予权限,经过我这边的测试,步骤如下:
Hue添加用户
添加管理员用户
##进入hue目录 cd /usr/lib/hue/ ##创建超级用户 sudo build/env/bin/hue createsuperuser
添加普通用户(按照以下步骤授予权限)
通过Hue访问hive,首先要在Hue创建登录用户。
Linux添加用户
##在主节点中创建user emrhue sudo useradd emrhue #添加用户 sudo passwd emrhue #设置用户密码 gpasswd -a emrhue emrhue #给用户分组
Hive 配置文件添加权限
SQL Standards Based Authorization in HiveServer2默认提供两种角色:public和admin,所有用户默认属于角色public,而授权则必须是具有角色admin的用户才可以完成(普通用户仅可以将自己获得的权限授权给其它用户),由于EMR中hive是默认没有admin user的,为了在hive中创建role,您需要使用amin权限,因此您需要配置hive配置文件/etc/hive/conf/hive-site.xml并加入下面的配置:
$ vim /etc/hive/conf/hive-site.xml
###... ... ...
重启hive 服务
systemctl restart hive-server2.service systemctl restart hive-webhcat-server.service systemctl restart hive-hcatalog-server.service
检查hive 启动状态
sudo systemctl status *hive*
授权用户
apache官方的hive权限文档请参考:shell
##使用上面授权的超级管理员用户进入hive shell: [root@ip-172-21-3-198 ~]# su hive -s /bin/bash -c 'hive'
创建hive角色
##显示用户当前角色的列表。 hive> SHOW CURRENT ROLES; SHOW CURRENT ROLES; OK public ##指定 admin 角色将成为当前角色中的唯一角色。 hive> set role admin; set role admin; OK ##创建新角色(将其与系统用户绑定,同名即可)。只有管理员角色具有此权限。 hive> create role emrhue; create role emrhue; OK ##查看已经有的角色 hive> show roles; show roles; OK admin emrhue public
报错信息:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Current user : root is not allowed to add roles. User has to belong to ADMIN role and have it as current role, for this action.原因分析:创建hive的角色需要用admin权限的账号,前面步骤中设置的hive.users.in.admin.role=hive,所以需要切换linux hive账户来执行命令
对账户授权
创建好emr-hive账户后,对账户进行授权,操作如下
##把default数据库的所有权限赋予emrhue角色(根据实际情况修改数据库名) hive> grant all on database default to role emrhue with grant option; ##将角色emrhue赋予linux用户emrhue hive> grant role emrhue to user emrhue; grant role emrhue to user emrhue; ##赋予emrhue用户default数据的权限后可以建表: hive> grant all on database default to role emrhue with grant option; ##赋予用户emrhue default数据库test表的select权限,就可以正常查询hive中的test表中的数据了 hive> grant select on test to user emrhue; ##赋予角色test表全部的权限后,用户emrhue就可以正常执行insert语句了 hive> grant all on table test to role emrhue with grant option; ##查看角色emrhue的所有权限 hive> show grant role emrhue on all; ##授予用户default数据库 select权限,这样用户下的角色拥有同样权限(根据实际情况修改数据库名) hive> grant all on database default to user emrhue; ##查看用户emrhue的所有权限 hive> show grant user emrhue; OK
其他语句
##列出给定角色/用户已授予的所有角色,其中principal_name 是用户或角色的名称。 hive> SHOW ROLE GRANT ROLE emrhue; hive> SHOW ROLE GRANT USER emrhue; ##查看角色已有权限 hive> show grant role emrhue; ##查看角色在default数据库的已有权限 hive> show grant role emrhue on database default; ##查看指定用户在某个库的权限 hive> show grant user emrhue on database default; ##查看指定角色的所有权限 hive> show grant role hue_admin on all; ##查看指定用户所有权限 hive> show grant user emrhue on all; ##列出属于此角色的所有角色和用户,只有管理员角色具有此权限。 hive> SHOW PRINCIPALS emrhue; ##回收用户role角色 #hive> revoke role emrhue from user emrhue; ##回收用户权限 #hive> revoke all from user emrhue; ##回收角色对库的所有权限 #hive> revoke all on database default from role emrhue; ##删除角色 #hive> drop role emrhue;
HDFS权限控制
切换用户emrhue后,进入hive shell 报错:Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=emrhue, access=WRITE, inode="/user":hdfs:hdfsadmingroup:drwxr-xr-x
设置hive配置文件
# vim /etc/hive/conf/hive-site.xml
##
HDFS权限设置
EMR的Kerberos安全集群已经设置了Hive的warehouse的HDFS相关权限;对于非Kerberos安全集群,用户需要做如下步骤设置hive基本的HDFS权限:
##查看目录权限 sudo -u hdfs hadoop fs -ls /user/hive/warehouse/ Found 2 items drwxrwx--T - hive hdfsadmingroup 0 2022-07-06 07:16 /user/hive/warehouse/product.db ##权限设置成770,1表示stick bit(不能删除别人创建的文件/文件夹) sudo -u hdfs hadoop fs -chmod -R 1770 /user/hive/warehouse ##将用户hue_product增加到supergroup组中 usermod -a -G hdfsadmingroup hue_product ##改变目录属主 sudo -u hdfs hadoop fs -chown -R hue_product /user/hive/warehouse/product.db ##使用超级管理员账号,同步系统的权限信息到HDFS: sudo -u hdfs hdfs dfsadmin -refreshUserToGroupsMappings ##确认用户是否增加成功 id hue_product
有了上述设置基础权限后,可以通过对warehouse文件夹授权,让相关用户/用户组能够正常创建表/读写表等
##设置hdfs用户权限 sudo -u hdfs hadoop fs -setfacl -m user:emrhue:rwx /user/hive/warehouse ##设置hdfs用户组权限 sudo -u hdfs hadoop fs -setfacl -m group:emrhue:rwx /user/hive/warehouse
重启hive 服务
systemctl restart hive-server2.service systemctl restart hive-webhcat-server.service systemctl restart hive-hcatalog-server.service
附录:常用的授权关键字
权限 | 解释 |
---|---|
ALTER | 更改表结构,创建分区 |
CREATE | 创建表 |
DROP | 删除表,或分区 |
INDEX | 创建和删除索引 |
LOCK | 锁定表,保证并发 |
SELECT | 查询表权限 |
SHOW_DATABASE | 查看数据库权限 |
UPDATE | 为表加载本地数据的权限 |
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~