1.前期准备:
安装hive,impala,hue,sentry,ldap服务
在cdh页面中hive,impala去集成ldap即可,配置ldap服务器的地址,开启服务
hue集成ldap时候:
在hue.ini中配置初始化访问hive的用户 [impala] server_host=xiaovmaster01 server_interface=hiveserver2 server_port=21050 query_timeout_s=100 impersonation_enabled=True auth_username=hue auth_password=hue
[beeswax] close_queries=True use_sasl=False auth_username=hue auth_password=hue
(注意:最好使用hue,hue,使用其它用户,会有问题,目前没有找到解决方案!)
hue登陆的时候,需要使用一个预设的用户名和密码去连接hive/impala,连接成功之后,当真正执行SQL的时候,还使用登录时的账号来 做鉴权,可以通过clouder官网来看:
修改hdfs的目录权限为:chown -R hive:hive /user/hive/warehouse,chmod -R 755 /user/hive/warehouse
在所有hiveserver2和impala节点上创建所有用户,通过脚本实现
将linux的用户和组全部批量导入到ldap中:
migrationtools工具要安装在hiveserver2的实例上,生成ldif文件,然后在ldap服务机器上执行ldap插入用户,和组操作
10.2.20.42: /opt/LinuxUserAdd目录下是添加用户脚本,生成所有用户.(要在所有impalad和hiveserver2的节点都创建用户)
cat /etc/passwd > testuser
cat /etc/group > testgroup
10.2.20.42:/usr/share/migrationtools目录下,放相关ldif文件
./migrate_passwd.pl testuser people.ldif
./migrate_group.pl testgroup group.ldif
在ldap服务器上执行以下脚本,将用户导入到ldap服务中
ldapadd -c -x -d “cn=manager,dc=xiaov,dc=com” -w -f people.ldif
ldapadd -c -x -d “cn=manager,dc=xiaov,dc=com” -w -f group.ldif
ldapsearch lll x d “cn=admin,dc=contoso,dc=com” w b “dc=contoso,dc=com” ‘(uid=*)’
linux新建用户:useradd zhangsan
linux新建组:groupadd zhangsan_group
把用户添加进入某个组:usermod -a -G groups loginname
强行设置某个用户所在组:usermod -g group loginname
把某个用户改为 group(s) :usermod -G groups loginname
sentry服务中,管理员用户为hive,或者impala,或者添加一个新的用户作为beeline登录的超级用户,在ldap中创建对应用户和密码
管理员授权:hive登陆:beeline -u “jdbc:hive2://ip:端口/” -n username -p paswd
impala-shell -i ip -u username -l –auth_creds_ok_in_clear
-i 集群中任意一台impalad服务器都可以
-u 登录用户
-l 使用ldap
–auth_creds_ok_in_clear 由于没有使用ssl,需要添加该参数
列出分配给给定的所有角色 <组名> (仅允许Sentry管理员用户和属于指定的组的其他用户 <组名>):show role grant group tinyv_group;
管理员:
给某个角色授予所有库的所有权限(增删改查)
create role xiaov_role;
grant all on server server1 to role xiaov_role;
grant role xiaov_role to group xiaov_group;
给某个角色授予某个库的只读权限
create role dataMiddle_role;
grant select on database edw_tinyv to role dataMiddle_role;
grant role dataMiddle_role to group dataMiddle_group;
特殊情况:要针对某个角色给比如ods库的某个的表的权限
grant select(column_name)on table table_name to role role_name;
revoke select(column_name)on table table_name from role role_name;