玩转大数据程序员Java

Hue 用户管理

2024-04-11  本文已影响0人  AlienPaul

用户体系

无论使用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

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种:

用户管理

本节整理了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用户权限提升为超级管理员。

上一篇下一篇

猜你喜欢

热点阅读