Hue 用户管理

作者: AlienPaul | 来源:发表于2024-04-11 13:41 被阅读0次

    用户体系

    无论使用Hue自身的用户管理体系还是LDAP用户体系,Hue操作大数据组件使用的是Impersonation机制。用户实际操作时会被模拟为登录的用户。例如以hdfs登录Hue,Hue以hue用户运行,那么实际操作时,使用hue用户的认证方式认证,但使用的时候将hue用户模拟为hdfs
    这种方式要求Hadoop配置proxyuser,否则会出现User: xxx is not allowed to impersonate xxx错误。配置方式为修改HDFS的core-site.xml,增加:

    <property>
      <name>hadoop.proxyuser.hue.hosts</name>
      <value>*</value>
    </property>
    <property>
      <name>hadoop.proxyuser.hue.groups</name>
      <value>*</value>
    </property>
    

    之后重启HDFS。

    Hue服务本身的用户配置包含如下:

    [desktop]  
      # Webserver runs as this user
      server_user=hue
      server_group=hue
    
      # This should be the Hue admin and proxy user
      default_user=hue
    
      # This should be the hadoop cluster admin
      default_hdfs_superuser=hdfs
    
    • server_user和server_group配置web服务运行时的用户。
    • default_user为Hue的后台服务启动用户。上述的Impersonation机制需要允许default_user模拟为用户实际登录Hue的用户。
    • default_hdfs_superuser指定HDFS的管理员用户,即namenode启动的用户。

    Hue的超级管理员用户可管理用户信息。Hue使用RBAC权限管理。我们以超级管理员用户登录Hue之后,可在顶部菜单右侧(Hue 4.3)或者左侧菜单栏下方(Hue 4.10+)找到Administer Users,进入用户管理页面。
    在Users页面,可以添加和删除用户,指定用户所属的组和用户是否为超级管理员等。
    Groups页面可以维护group和权限的对应关系。在组编辑页面中,权限选择位于最下方列表。

    hue_group_permission.png

    这些权限已按照Hue的连接的组件和Hue的页面模块分类,配置和使用较为方便。

    认证后端

    Hue支持多种认证后端。配置文件注释中列出的有:

        # - desktop.auth.backend.AllowFirstUserDjangoBackend
        #     (Default. Fist login becomes and admin, then relies on user accounts)
        # - django.contrib.auth.backends.ModelBackend (entirely Django backend)
        # - desktop.auth.backend.AllowAllBackend (allows everyone)
        # - desktop.auth.backend.LdapBackend
        # - desktop.auth.backend.PamBackend
        # - desktop.auth.backend.SpnegoDjangoBackend
        # - desktop.auth.backend.KnoxSpnegoDjangoBackend
        # - desktop.auth.backend.RemoteUserDjangoBackend
        # - libsaml.backend.SAML2Backend
        # - desktop.auth.backend.OIDCBackend (New oauth, support Twitter, Facebook, Google+ and Linkedin
    

    其中常用的有如下4种:

    • desktop.auth.backend.AllowFirstUserDjangoBackend:如果Hue中没有任何用户,第一个登录的用户自动注册,并成为管理员。此配置为Hue的默认值。
    • django.contrib.auth.backends.ModelBackend:使用Django后端,不允许用户在登录页注册,即便是Hue没有任何用户。
    • desktop.auth.backend.AllowAllBackend:不认证,任意用户都可以登录。
    • desktop.auth.backend.LdapBackend:使用LDAP认证。无需在Hue的用户管理中维护用户信息。

    用户管理

    本节整理了Hue用户管理时常用的后台操作。

    创建超级管理员

    如果忘记了Hue超级管理员用户密码,或者是Hue中没有任何超级管理员用户的时候可使用此方式创建一个。需要登录Hue安装所在主机,然后执行:

    /usr/lib/hue/build/env/bin/hue createsuperuser
    

    接着按照向导操作,依次输入用户名,Email,密码和确认密码。

    修改用户密码

    忘记用户密码的时候我们可以使用hue命令的方式操作。前提是必须能够登录Hue所在的主机。
    例如我们需要修改hive用户的密码,执行:

    /usr/lib/hue/build/env/bin/hue changepassword hive
    Changing password for user 'hive'
    Password:
    Password (again):
    Password changed successfully for user 'hive'
    

    然后按照向导,输入新密码和确认一遍新密码,hive用户的密码已修改完毕。

    除此之外,我们还可通过hue shell强制修改密码。登录Hue所在的主机,执行。

    /usr/lib/hue/build/env/bin/hue shell
    

    进入Hue Python shell界面。例如我们忘记了hive用户的密码,需要将其修改为123456,继续执行如下脚本(使用过Django的同学会非常熟悉这些脚本):

    from django.contrib.auth.models import User
    # 获取hive用户
    user = User.objects.get(username='hive')
    # 可查看原密码的hash值
    user.password
    user.set_password('123456')
    
    # 检查密码是否已正确修改,非必须步骤
    from django.contrib.auth.hashers import check_password
    # 如果返回true,表示校验通过
    check_password('123456', user.password)
    
    # 保存修改。写回数据库
    user.save()
    

    提升用户为超级管理员

    如果Hue中所有用户都不是超级管理员用户,这种情况我们无法通过Hue管理页面升级某用户为超级管理员。遇见这种情况我们并非束手无策,可以通过后台操作。
    首先登录Hue元数据MySQL所在服务器,进入MySQL中Hue数据库(下面例子中Hue的元数据存储在hue数据库中,实际操作时根据具体环境修改):

    use hue
    select * from auth_user;
    

    执行上面的SQL列出所有的用户信息。找到需要升级为超级管理员的用户名或者用户id,然后执行:

    update auth_user set is_superuser=1 where username='xxx'
    -- 或者
    update auth_user set is_superuser=1 where id=xxx
    

    重新登录Hue即可完成修改。
    此外还有一种方法,我们可以使用上述的Hue Shell方式修改。接下来仍以hive用户为例说明。进入Hue shell之后,依次执行:

    from django.contrib.auth.models import User
    # 获取hive用户
    user = User.objects.get(username='hive')
    # 设置当前用户为超级管理员
    user.is_superuser = True
    
    # 保存修改。写回数据库
    user.save()
    

    可将hive用户权限提升为超级管理员。

    相关文章

      网友评论

        本文标题:Hue 用户管理

        本文链接:https://www.haomeiwen.com/subject/qjocxjtx.html