Hive权限管理,增加用户,授权
目标:Hive添加用户,并授予不同的权限用户TRoot:拥有超级权限,由root用户授权用户Auser:由TRoot授权,不能create database/drop database,拥有名为 Gdb1 的 database 所有权限用户Buser:由用户Auser授权,拥有 Gdb1 的读写权限用户Cuser:由用户Buser授权,只能够拥有Gdb1的读权限用户Duser:由TRoot授权,可
目标:
Hive添加用户,并授予不同的权限
- 用户TRoot:拥有Gdb1、Gdb2超级权限,由root用户授权
- 用户Auser:由TRoot授权,不能create database/drop database,拥有名为 Gdb1 的 database 所有权限
- 用户Buser:由用户Auser授权,拥有 Gdb1 的读写权限
- 用户Cuser:由用户Buser授权,只能够拥有Gdb1的读权限
- 用户Duser:由TRoot授权,可以同时拥有Gdb1、Gdb2的读写权限
- 用户Euser:由TRoot授权,只能够拥有Gdb1、Gdb2的读权限
参考文章
hive增加普通用户,只赋予select权限,无create,drop等权限_1350368559_51CTO博客
大数据Hive系列之Hive用户权限管理_飞翔的博客-CSDN博客_hive查看用户权限
注意:
Hive用户登录,防君子不防小人,建议从入口端配置限制账号登录,本博客不示范设置账号密码教程
Hive账号密码设置登录,参考:
Hive设置连接用户名和密码_奔跑的蜗牛的博客-CSDN博客_hive用户名和密码
准备工作:
需要在各个节点添加用户,原因:
各节点 nodemanager 需要相同的执行用户
Ansible 默认通过 SSH 协议管理机器,所以 Ansible 不需要安装客户端程序在服务器上。您只需要将 Ansible 安装在一台服务器,在 Ansible 安装完后,您就可以去管理控制其它服务器。不需要为它配置数据库,Ansible 不会以 daemons 方式来启动或保持运行状态。Ansible 可以实现以下目标:
- 自动化部署应用
- 自动化管理配置
- 自动化的持续交付
- 自动化的(AWS)云服务管理。
执行命令
yum -y install ansible 来安装 ansible 插件
配置ansible
[root@node01 ~]# vi /etc/ansible/hosts [hadoop_root] node01 ansible_ssh_user=root ansible_ssh_pass=123456 node02 ansible_ssh_user=root ansible_ssh_pass=123456 node03 ansible_ssh_user=root ansible_ssh_pass=123456
建立用户并授权
执行命令
ansible hadoop_root -m shell -a'useradd -s /sbin/nologin TRoot'
ansible hadoop_root -m shell -a'useradd -s /sbin/nologin Auser'
ansible hadoop_root -m shell -a'useradd -s /sbin/nologin Buser'
ansible hadoop_root -m shell -a'useradd -s /sbin/nologin Cuser'
ansible hadoop_root -m shell -a'useradd -s /sbin/nologin Duser'
ansible hadoop_root -m shell -a'useradd -s /sbin/nologin Euser'
注意:
gate节点不需要 /sbin/nologin 否则无法切换到相应的 用户
注意,创建角色和用户授权之前,需要进行如下步骤
遇到问题,如下图
> show roles;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Current user : root is not allowed to list roles. User has to belong to ADMIN role and have it as current role, for this action.
hive (default)> create role superrole;
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 (default)>
解决办法:
1、在hive-site.xml配置:
<property>
<name>hive.users.in.admin.role</name>
<value>root</value>
</property>
value值为超级用户
2、在hive端设置
让用户进入admin角色权限
set hive.users.in.admin.role;
set role admin;
1、给TRoot 授权超级权限
grant all on database Gdb1 to user TRoot with grant option;
grant all on database Gdb2 to user TRoot with grant option;
2、给Auser 授权Gdb1权限
TRoot用户登录执行:
grant all on database Gdb1 to user Auser with grant option;
3、给Buser 授权
Auser用户登录执行:
grant select on database Gdb1 to user Buser;
grant insert on database Gdb1 to user Buser;
grant update on database Gdb1 to user Buser;
grant delete on database Gdb1 to user Buser;
4、给Cuser 授权
Buser用户登录执行:
grant select on database Gdb1 to user Cuser;
5、给Duser授权
TRoot用户权限 登录执行
grant select on database Gdb2 to user Duser;
grant insert on database Gdb2 to user Duser;
grant update on database Gdb2 to user Duser;
grant delete on database Gdb2 to user Duser;
6、给Euser授权
TRoot用户登录执行
grant select on database Gdb1 to user Duser;
grant select on database Gdb2 to user Duser;
验证
在对应用户执行以下命令即可验证
-- 查看指定用户在所有库下面的权限
show grant user TRoot;
-- 查看指定用户在某个库的权限
show grant user TRoot on database Gdb1;
Cuser不能够访问Gdb2的表
更多推荐
所有评论(0)