cloudera新增用户权限配置

本文介绍如何在Cloudera Hadoop环境中集成LDAP,实现用户及用户组管理,并通过Beeline客户端和Hue界面访问受限制的HDFS路径及Hive数据库。详细步骤包括配置Hive Server2以使用LDAP认证、解决同步问题、配置Kerberos以及测试权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:

给各个业务组提供不同用户及用户组,并有限制的访问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

     

    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账户同步。

步骤:
  1. 收集用户及用户组,及对个个库的访问权限。例如bi组对bi库有读写权限及对其他库具有读权限。
  2. 所有节点增加用户和用户组
    useradd bi -u 1001
    usermod -a -G bi bi
     (所有节点都需要创建,而且uid必须一致)
  3. 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   
  4. hadoop中增加相应用户的目录及权限
    hadoop fs -mkdir /user/dsp
    hadoop fs -chmod -R 755 /user/dsp
    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
    <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>
    </property>
     hue依赖于hive gateway的配置,即必须配置gateway,且修改后hue需要重启。
  6. 如上问题2
  7. hue设置ldap
    hue server advanced hue_safety_value_server.ini
    [desktop]
     ldap_username=hive
     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账户登陆和授权
    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; 
  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)授权
    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
  16. mapreduce测试
    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
    mvn clean compile
    mvn exec:java -Dexec.mainClass=com.cloudera.example.ClouderaHiveJdbcExample
### Cloudera QuickStart VM 用户权限修改 Cloudera QuickStart VM 是一个预先配置好的虚拟机环境,旨在让用户能够快速体验和学习 CDH(Cloudera Distribution Including Apache Hadoop)。虽然它提供了一个开箱即用的环境,但在某些情况下可能需要调整用户权限以满足特定需求。 #### 默认用户权限 默认情况下,Cloudera QuickStart VM 提供了一个名为 `cloudera` 的用户账户[^3]。此用户具有管理员权限(sudo 权限),可以执行大多数管理操作。如果需要创建用户或更改现有用户权限,则可以通过以下方式实现: --- #### 修改用户权限的方法 ##### 1. 添加新用户并赋予 sudo 权限 通过命令行工具可以轻松完成这一任务。以下是具体的操作步骤: ```bash # 切换到 root 用户 su - # 创建用户 adduser newusername # 设置密码 passwd newusername # 将新用户加入 sudo 组 usermod -aG wheel newusername ``` 上述命令会将新用户添加到 `wheel` 组中,在 CentOS 系统上,默认只有属于该组的用户才能获得超级用户权限[^5]。 --- ##### 2. 更改现有用户权限 如果希望授予某个已有用户更高的权限,可以直接将其添加至 `wheel` 或其他特权组: ```bash # 假设目标用户名为 existinguser usermod -aG wheel existinguser ``` 完成后需重新登录以使更改生效。 --- ##### 3. 配置 SSH 登录权限 为了增强安全性或者方便远程访问,还可以编辑 `/etc/ssh/sshd_config` 文件来控制哪些用户允许通过 SSH 进行连接。例如: ```bash AllowUsers cloudera newusername ``` 保存文件后记得重启 SSH 服务以便应用新的设置: ```bash service sshd restart ``` --- ##### 4. 解决潜在问题——中文乱码影响权限查看 当遇到中文乱码时,可能会干扰对系统日志或其他文本型数据的理解。针对这种情况可采取措施优化字符编码支持。比如安装必要的字体包以及设定正确的 locale 参数: ```bash yum install -y fonts-chinese localectl set-locale LANG=zh_CN.UTF-8 export LC_ALL=zh_CN.UTF-8 ``` 以上改动同样适用于因语言障碍引发的相关错误提示解析困难的情况。 --- #### 注意事项 尽管拥有完全控制权有助于深入探索平台功能,但也应谨慎对待任何涉及敏感信息的操作。建议始终保留原始 `cloudera` 账号作为备用恢复途径,并定期备份重要资料以防意外丢失。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值