转自 http://lookqlp.iteye.com/blog/2189119  。   配置起来较复杂,需要在有测试环境之后再进行配置测试。  之后是有上HUE的计划的,所以这个也是一定要做的。

目标:

给各个业务组提供不同用户及用户组,并有限制的访问hdfs路径,及hive数据库。

前提:

cloudera

cloudera manager

kerberos

ldap

sentry

问题与解决:
  • hive client直走hive的本地模式,没有经过hiveserver2,所以此种方式能访问所有的数据库,具有超级管理员权限;考虑使用beeline形式。

    登陆方式例如:

    1. beeline -u "jdbc:hive2://172.20.0.74:10000/data_system" -nhive -p111111(ldap账户及密码)

    或者

    1. beeline
    2. !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

    1. cd /opt/cloudera/parcels/CDH/lib/hue
    2. patch -p1 < /path/to/downloaded/hue-2484.patch

    hive所有advanced safety value中加上配置:

    1. <property>
    2. <name>hive.server2.authentication</name>
    3. <value>LDAP</value>
    4. </property>

    restart Hue

    未解决问题:hue账户未能与ldap账户同步。

步骤:

  1. 收集用户及用户组,及对个个库的访问权限。例如bi组对bi库有读写权限及对其他库具有读权限。
  2. 所有节点增加用户和用户组
    1. useradd bi -u 1001
    2. usermod -a -G bi bi

    (所有节点都需要创建,而且uid必须一致)

  3. ldap增加账户及账户组
    1. grep -E "dsp:|dmp:" /etc/passwd  >/opt/passwd.txt
    2. /usr/share/migrationtools/migrate_passwd.pl /opt/passwd.txt /opt/passwd.ldif
    3. ldapadd -x -D "uid=ldapadmin,ou=people,dc=yeahmobi,dc=com" -w secret -f /opt/passwd.ldif
    4. grep -E "dsp:|dmp:" /etc/group  >/opt/group.txt
    5. /usr/share/migrationtools/migrate_group.pl /opt/group.txt /opt/group.ldif
    6. ldapadd -x -D "uid=ldapadmin,ou=people,dc=yeahmobi,dc=com" -w secret -f /opt/group.ldif
    7. ldappasswd -x -D 'uid=ldapadmin,ou=people,dc=yeahmobi,dc=com' -w secret "uid=dsp,ou=people,dc=yeahmobi,dc=com" -S
    8. ldappasswd -x -D 'uid=ldapadmin,ou=people,dc=yeahmobi,dc=com' -w secret "uid=dmp,ou=people,dc=yeahmobi,dc=com" -S
    9. ldappasswd -x -D 'uid=ldapadmin,ou=people,dc=yeahmobi,dc=com' -w secret "uid=bi,ou=people,dc=yeahmobi,dc=com" -S
  4. hadoop中增加相应用户的目录及权限
    1. hadoop fs -mkdir /user/dsp
    2. hadoop fs -chmod -R 755 /user/dsp
    3. hadoop fs -chown -R dsp:dsp /user/dsp
  5. hive配置ldap
    若之前启用了sentry file形式的服务,需要将policy file based sentry enabled 设置成false,并且service wide中选择sentry service。
    service wide advanced safed value
    1. <property>
    2. <name>hive.server2.authentication</name>
    3. <value>LDAP</value>
    4. </property>
    5. <property>
    6. <name>hive.server2.authentication.ldap.url</name>
    7. <value>ldap://ip-10-1-33-20.ec2.internal</value>
    8. </property>
    9. <property>
    10. <name>hive.server2.authentication.ldap.baseDN</name>
    11. <value>ou=people,dc=yeahmobi,dc=com</value>
    12. </property>

    gateway/metastory/hiveserver2 advanced safed value分别加上

    1. <property>
    2. <name>hive.server2.authentication</name>
    3. <value>LDAP</value>
    4. lt;/property>

    hue依赖于hive gateway的配置,即必须配置gateway,且修改后hue需要重启。

  6. 如上问题2
  7. hue设置ldap
    hue server advanced hue_safety_value_server.ini
    1. [desktop]
    2. ldap_username=hive
    3. ldap_password=111111

    并且选择sevice wide sentry service

  8. hdfs kerberos配置中增加hdfs的权限
    service wide security
    authorized user、groups设置成* 也行
  9. yarn增加用户的使用权限
    nodemanger group  security allowed system users
  10. 重启相关服务,cloudera manager会提示重启整个集群。
  11. hive server2和metastore启动失败,奇怪现象,测试环境中没有问题,正式环境中出现认证异常,只要加上ldap认证就会失败。
    解决办法,重新再别的节点配置新的hive sever2和metastore并且cm上创建新的group。
    注意此种解决方案,hue的配置中需要修改hive server2的路径。
  12. 授权,beeline中使用hive账户登陆和授权
    1. beeline -u "jdbc:hive2://172.20.0.74:10000/default" -nhive -p111111
    2. CREATE ROLE admin_role ;
    3. GRANT ALL ON SERVER server1 TO ROLE admin_role;
    4. GRANT ROLE admin_role TO GROUP hive;
  13. 权限测试,使用新账户登陆测试
    beeline -u "jdbc:hive2://172.20.0.74:10000/default" -nbi -p111111
    或者通过hue,新建对应账户,beeswax测试。(此处hue与ldap账户没有同步,同步失败,后续解决)
  14. 新增加的账户,若需要访问/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
  15. kerberos对新用户(bi)授权
    1. addprinc -randkey krbtgt/new_hostname@YEAHMOBI.COM
    2. addprinc -randkey host/new_hostname@YEAHMOBI.COM
    3. addprinc -randkey HTTP/new_hostname@YEAHMOBI.COM
    4. addprinc -randkey bi/new_hostname@YEAHMOBI.COM
    5. xst -norandkey -k bi.keytab host/new_hostname@YEAHMOBI.COM
    6. xst -norandkey -k bi.keytab HTTP/new_hostname@YEAHMOBI.COM
    7. xst -norandkey -k bi.keytab bi/new_hostname@YEAHMOBI.COM
  16. mapreduce测试
    1. kinit -kt bi.keytab bi/new_hostname@YEAHMOBI.COM

    执行hadoop jar 测试

  17. jdbc测试,参见 git clone https://github.com/firecodeman/Cloudera-Impala-Hive-JDBC-Example.git
    1. mvn clean compile
    2. mvn exec:java -Dexec.mainClass=com.cloudera.example.ClouderaHiveJdbcExample

【转】cloudera新增用户权限配置的更多相关文章

  1. SVN的服务器端用户权限配置

    第一:用户的配置 SVN和apache整合的话,用户可以直接使用htpasswd dav_svn.passwd_file_address USERNAME来配置. 而账户的管理可以用dav_svn.a ...

  2. jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限

    jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限 由于初次接触jenkins,于是在搭建好jenkins以后,想要对用户进行管理,于是乎开始在系统管理->conf ...

  3. Rabbitmq用户权限配置

    由于账号guest具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest用户只能通过localhost登陆使用,并建议修改guest用户的密码以及新建其他账号管理使用rabbitmq(该 ...

  4. tomcat manager 的用户权限配置,及环境变量CATALINA_HOME的错位问题

    因为tomcat的manager是管理其他项目的发布.删除等操作的管理项目,所以需要为其设置登陆用户和密码,以及用户相应的访问权限,配置如下: tomcat-users.xml需要添加如下内容: &l ...

  5. jenkins用户权限配置 Role-based Authorization Strategy

    插件简介 插件名称 Role-based Authorization Strategy 插件介绍 Role Strategy Plugin插件可以对构建的项目进行授权管理,让不同的用户管理不同的项目, ...

  6. MySQL数据库下用户及用户权限配置

    问题:使用某大腿写的远程工具管理Mysql数据库时发现所有数据能正常显示,但是无法进行删除.修改等操作. 思路:可以远程读取到数据库里的信息,说明当前主机可以远程连接数据库.却无法进行删除.修改这些操 ...

  7. 【samba】samba 用户权限配置(转)

    首先要保证你的samba安装并配置好,关于安装和配置samba请参考此文章 http://blog.csdn.net/linglongwunv/archive/2010/01/19/5212875.a ...

  8. mysql用户权限配置

    创建管理员: mysqladmin -u root password 123456 登录 mysql -u root -p 建库及授权 > create database bdp charact ...

  9. Mac下jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限

    由于初次接触jenkins,于是在搭建好jenkins以后,想要对用户进行管理,于是乎开始在系统管理->configure Global Security里设置用户的权限. 在启用安全-> ...

随机推荐

  1. CDNJS:使用JavaScript CDN加速网站载入速度

    先介绍一下: 内容传递网络(CDN)或者叫内容分发网络,他的作用是给不同区域的访客以其最快的网速.比如,你的网站是开在美国的,但很多访客来自中国,无疑他们会觉得速度很慢,那么,怎么为他们提速呢?简单来 ...

  2. 使用nginx lua实现网站统计中的数据收集

    导读网站数据统计分析工具是各网站站长和运营人员经常使用的一种工具,常用的有 谷歌分析.百度统计和腾讯分析等等.所有这些统计分析工具的第一步都是网站访问数据的收集.目前主流的数据收集方式基本都是基于ja ...

  3. 在生产环境使用Docker部署应用

    导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...

  4. IOS 页面之间的跳转

    1.UINavigationController popToViewController 对应popViewControllerAnimated: 也可以使用: [self.navigationCon ...

  5. Ubuntu 16.04 安装 VMware-Workstation-12

    以前一直使用 Ubuntu + Virtaulbox ,最近测试了 VMware-Workstation-9,性能超过 Virtaulbox-4.2.x,下面是详细步骤: 1 首先准备一个Ubuntu ...

  6. 最长递增子序列问题 nyoj 17单调递增最长子序列 nyoj 79拦截导弹

    一,    最长递增子序列问题的描述 设L=<a1,a2,…,an>是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin=<aK1,ak2,…,akm>,其中k1< ...

  7. (0,eval)('this')与eval的区别

    看doT源码的时候,看到了这么一句代码: global = (function(){ return this || (0,eval)('this'); }()); global.doT = doT; ...

  8. BZOJ 1452 [JSOI2009] Count

    这道题好像有点简单的样子... absi找题目好厉害啊...确实是一道比较裸的2dBIT啊. 水掉吧. 附:2dBIT怎么做: 2dBIT就是BIT套BIT啦. 所以修改loop(x+=lowbit( ...

  9. 用几条shell命令快速去重10G数据

    试想一下,如果有10G数据,或者更多:怎么才能够快速地去重呢?你会说将数据导入到数据库(mysql等)进行去重,或者用java写个程序进行去重,或者用Hadoop进行处理.如果是大量的数据要写入数据库 ...

  10. javascript动态添加一组input

    2013年12月18日 20:56:29 场景: 批量添加 友情链接 功能 每个友情链接记录有3个字段:名字(name),超链接(url),排序(order) 要求每次点击"添加" ...