【转】cloudera新增用户权限配置
转自 http://lookqlp.iteye.com/blog/2189119 。 配置起来较复杂,需要在有测试环境之后再进行配置测试。 之后是有上HUE的计划的,所以这个也是一定要做的。
目标:
给各个业务组提供不同用户及用户组,并有限制的访问hdfs路径,及hive数据库。
前提:
cloudera
cloudera manager
kerberos
ldap
sentry
问题与解决:
hive client直走hive的本地模式,没有经过hiveserver2,所以此种方式能访问所有的数据库,具有超级管理员权限;考虑使用beeline形式。
登陆方式例如:
- beeline -u "jdbc:hive2://172.20.0.74:10000/data_system" -nhive -p111111(ldap账户及密码)
或者
- beeline
- !connect jdbc:hive2://172.20.0.74:10000/data_system;principal=hive/slave-74@YEAHMOBI.COM
输入kerberos账户及密码。
hue版本3.6.0不支持hive ldap,hue会提示不没有hive server2服务,参考issue
https://issues.cloudera.org/browse/HUE-2484https://issues.cloudera.org/browse/HUE-2566(option1方法可以解决)
具体步骤:- cd /opt/cloudera/parcels/CDH/lib/hue
- patch -p1 < /path/to/downloaded/hue-2484.patch
hive所有advanced safety value中加上配置:
- <property>
- <name>hive.server2.authentication</name>
- <value>LDAP</value>
- </property>
restart Hue
未解决问题:hue账户未能与ldap账户同步。
- 收集用户及用户组,及对个个库的访问权限。例如bi组对bi库有读写权限及对其他库具有读权限。
- 所有节点增加用户和用户组
- useradd bi -u 1001
- usermod -a -G bi bi
(所有节点都需要创建,而且uid必须一致)
- ldap增加账户及账户组
- grep -E "dsp:|dmp:" /etc/passwd >/opt/passwd.txt
- /usr/share/migrationtools/migrate_passwd.pl /opt/passwd.txt /opt/passwd.ldif
- ldapadd -x -D "uid=ldapadmin,ou=people,dc=yeahmobi,dc=com" -w secret -f /opt/passwd.ldif
- grep -E "dsp:|dmp:" /etc/group >/opt/group.txt
- /usr/share/migrationtools/migrate_group.pl /opt/group.txt /opt/group.ldif
- ldapadd -x -D "uid=ldapadmin,ou=people,dc=yeahmobi,dc=com" -w secret -f /opt/group.ldif
- ldappasswd -x -D 'uid=ldapadmin,ou=people,dc=yeahmobi,dc=com' -w secret "uid=dsp,ou=people,dc=yeahmobi,dc=com" -S
- ldappasswd -x -D 'uid=ldapadmin,ou=people,dc=yeahmobi,dc=com' -w secret "uid=dmp,ou=people,dc=yeahmobi,dc=com" -S
- ldappasswd -x -D 'uid=ldapadmin,ou=people,dc=yeahmobi,dc=com' -w secret "uid=bi,ou=people,dc=yeahmobi,dc=com" -S
- hadoop中增加相应用户的目录及权限
- hadoop fs -mkdir /user/dsp
- hadoop fs -chmod -R 755 /user/dsp
- hadoop fs -chown -R dsp:dsp /user/dsp
- hive配置ldap
若之前启用了sentry file形式的服务,需要将policy file based sentry enabled 设置成false,并且service wide中选择sentry service。
service wide advanced safed value- <property>
- <name>hive.server2.authentication</name>
- <value>LDAP</value>
- </property>
- <property>
- <name>hive.server2.authentication.ldap.url</name>
- <value>ldap://ip-10-1-33-20.ec2.internal</value>
- </property>
- <property>
- <name>hive.server2.authentication.ldap.baseDN</name>
- <value>ou=people,dc=yeahmobi,dc=com</value>
- </property>
gateway/metastory/hiveserver2 advanced safed value分别加上
- <property>
- <name>hive.server2.authentication</name>
- <value>LDAP</value>
- lt;/property>
hue依赖于hive gateway的配置,即必须配置gateway,且修改后hue需要重启。
- 如上问题2
- hue设置ldap
hue server advanced hue_safety_value_server.ini- [desktop]
- ldap_username=hive
- ldap_password=111111
并且选择sevice wide sentry service
- hdfs kerberos配置中增加hdfs的权限
service wide security
authorized user、groups设置成* 也行 - yarn增加用户的使用权限
nodemanger group security allowed system users - 重启相关服务,cloudera manager会提示重启整个集群。
- hive server2和metastore启动失败,奇怪现象,测试环境中没有问题,正式环境中出现认证异常,只要加上ldap认证就会失败。
解决办法,重新再别的节点配置新的hive sever2和metastore并且cm上创建新的group。
注意此种解决方案,hue的配置中需要修改hive server2的路径。 - 授权,beeline中使用hive账户登陆和授权
- beeline -u "jdbc:hive2://172.20.0.74:10000/default" -nhive -p111111
- CREATE ROLE admin_role ;
- GRANT ALL ON SERVER server1 TO ROLE admin_role;
- GRANT ROLE admin_role TO GROUP hive;
- 权限测试,使用新账户登陆测试
beeline -u "jdbc:hive2://172.20.0.74:10000/default" -nbi -p111111
或者通过hue,新建对应账户,beeswax测试。(此处hue与ldap账户没有同步,同步失败,后续解决) - 新增加的账户,若需要访问/user/hive/warehouse,即可能需要读取db下的表数据,进行mapreduce job,如上配置后,由于该目录设置的是771(sentry service要求的),新增账户没有访问权限,想到如下解决办法:
a.将新增账户赋予hive为附加组(所有节点),经过测试可以访问该目录了,但sentry的grant授权没有效果了,即该账户继承了hive的超级权限,此方法失败。
b.采用acl,hdfs开启dfs.namenode.acls.enabled,并hdfs执行如下命令:
hadoop fs -setfacl -R -m user:bi:r-x /user/hive/warehouse,测试是通过的,而且权限都正确。此步骤需要重启整个集群。参考http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_sg_hdfs_ext_acls.html - kerberos对新用户(bi)授权
- addprinc -randkey krbtgt/new_hostname@YEAHMOBI.COM
- addprinc -randkey host/new_hostname@YEAHMOBI.COM
- addprinc -randkey HTTP/new_hostname@YEAHMOBI.COM
- addprinc -randkey bi/new_hostname@YEAHMOBI.COM
- xst -norandkey -k bi.keytab host/new_hostname@YEAHMOBI.COM
- xst -norandkey -k bi.keytab HTTP/new_hostname@YEAHMOBI.COM
- xst -norandkey -k bi.keytab bi/new_hostname@YEAHMOBI.COM
- mapreduce测试
- kinit -kt bi.keytab bi/new_hostname@YEAHMOBI.COM
执行hadoop jar 测试
- jdbc测试,参见 git clone https://github.com/firecodeman/Cloudera-Impala-Hive-JDBC-Example.git
- mvn clean compile
- mvn exec:java -Dexec.mainClass=com.cloudera.example.ClouderaHiveJdbcExample
【转】cloudera新增用户权限配置的更多相关文章
- SVN的服务器端用户权限配置
第一:用户的配置 SVN和apache整合的话,用户可以直接使用htpasswd dav_svn.passwd_file_address USERNAME来配置. 而账户的管理可以用dav_svn.a ...
- jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限
jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限 由于初次接触jenkins,于是在搭建好jenkins以后,想要对用户进行管理,于是乎开始在系统管理->conf ...
- Rabbitmq用户权限配置
由于账号guest具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest用户只能通过localhost登陆使用,并建议修改guest用户的密码以及新建其他账号管理使用rabbitmq(该 ...
- tomcat manager 的用户权限配置,及环境变量CATALINA_HOME的错位问题
因为tomcat的manager是管理其他项目的发布.删除等操作的管理项目,所以需要为其设置登陆用户和密码,以及用户相应的访问权限,配置如下: tomcat-users.xml需要添加如下内容: &l ...
- jenkins用户权限配置 Role-based Authorization Strategy
插件简介 插件名称 Role-based Authorization Strategy 插件介绍 Role Strategy Plugin插件可以对构建的项目进行授权管理,让不同的用户管理不同的项目, ...
- MySQL数据库下用户及用户权限配置
问题:使用某大腿写的远程工具管理Mysql数据库时发现所有数据能正常显示,但是无法进行删除.修改等操作. 思路:可以远程读取到数据库里的信息,说明当前主机可以远程连接数据库.却无法进行删除.修改这些操 ...
- 【samba】samba 用户权限配置(转)
首先要保证你的samba安装并配置好,关于安装和配置samba请参考此文章 http://blog.csdn.net/linglongwunv/archive/2010/01/19/5212875.a ...
- mysql用户权限配置
创建管理员: mysqladmin -u root password 123456 登录 mysql -u root -p 建库及授权 > create database bdp charact ...
- Mac下jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限
由于初次接触jenkins,于是在搭建好jenkins以后,想要对用户进行管理,于是乎开始在系统管理->configure Global Security里设置用户的权限. 在启用安全-> ...
随机推荐
- 《深入PHP与jQuery开发》读书笔记——Chapter1
由于去实习过后,发现真正的后台也要懂前端啊,感觉javascript不懂,但是之前用过jQuery感觉不错,很方便,省去了一些内部函数的实现. 看了这一本<深入PHP与jQuery开发>, ...
- 微信公开课发布微信官方教程:教你用好微信JS-SDK接口
微信公众平台开放JS-SDK(微信内网页开发工具包),说明文档已经有相关使用方法和示例了,很多同学觉得不是很直观,为此微信公开课发布微信官方教程:教你用好微信JS-SDK接口. 1.分享类接口:支持获 ...
- 将DataSet(DataTable)转换成JSON格式(生成JS文件存储)
public static string CreateJsonParameters(DataTable dt) { /**/ /**/ /**/ /* /*********************** ...
- unity3d web.config设置
原地址:http://www.cnblogs.com/88999660/archive/2013/03/22/2976105.html <?xml version="1.0" ...
- MFC加载皮肤 转自:http://www.cctry.com/thread-4032-1-1.html
VC皮肤库SkinSharp 1.0.6.6的使用: SkinSharp又称Skin#,是Windows环境下一款强大的换肤组件.SkinSharp作为换肤控件,只需要在您的程序中添加一行代码,就能让 ...
- PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
PHP面向对象三大特点学习 学习目标:充分理解抽象.封装.继承.多态 面象对向的三大特点:封装性.继承性.多态性 首先简单理解一下抽象:我们在前面定义一个类的时候,实际上就是把一类事物共有的属性和 ...
- cmd的rd命令简单解析
我们知道在Windows下cmd命令行中"rd 文件夹名称"可以删除空目录,"del 文件名"可以删除文件,那么怎么删除一个非空文件夹呢,命令如下: 比如删除文 ...
- python 的类变量和对象变量
python是一种解释性的语言,任何变量可以在使用的时候才声明以及定义,也可以在程序运行的任何位置进行声明和定义新的变量. class Man(object): #直接定义的类的变量,属于类 #其中 ...
- stm32学习笔记----双串口同时打开时的printf()问题
stm32学习笔记----双串口同时打开时的printf()问题 最近因为要使用串口2外接PN532芯片实现通信,另一方面,要使用串口1来将一些提示信息输出到上位机,于是重定义了printf(),使其 ...
- 虚析构函数(√)、纯虚析构函数(√)、虚构造函数(X)
from:http://blog.csdn.net/fisher_jiang/article/details/2477577 一. 虚析构函数 我们知道,为了能够正确的调用对象的析构函数,一般要求具有 ...