解决Ambari启用Kerberos后HDFS/YARN/SPARK等页面无法打开问题

Ambari启用Kerberos认证后HDFS/YARN/SPARK等相关的组件的web页面都无访问了,提示要登录,401: Authorization required。
Ambari版本2.7.3.0
这个问题,可以通过两个办法解决

  1. 配置本机的kerberos认证,登录可以访问的user
  2. 配置组件服务的页面匿名访问

我本人使用的是Mac,自带了kerberos,但是使用前最好做一下版本更新

brew upgrade krb5

方法一

1.配置

可以将服务器krb5.conf配置放到本地默认目录下(/etc/krb5.conf),安装好krb5后本地会有这个配置文件,或者直接内容copy也可以。

2.登录

先说一下Mac自带的票据显示程序,我的系统版本是MacOS10.15.7 ,这个版本的这个程序隐藏的有点深,跟以前版本的路径还不一样。而且网上找的资料大部分都是小于10.15版本。我的Mac路径是在
/System/Library/CoreServices/Applications/Ticket Viewer.app

在命令行使用如下指令,可以登陆,而且使用klist -e的指令可以看到生效的规则,但是浏览器不认,不知道为什么,必须得使用Mac自带的票据显示程序才可以,而且奇怪的是使用指令进行登录的,无论使用keytab还是密码,在票据显示程序都看不到,反之,在票据显示程序里登录的用户规则,使用klist -e也看不到。但是如果使用票据显示程序登录一个用户规则,然后里面就可以显示出来通过命令行登录的用户规则。如果有朋友知道其中原因,可以指教一二。

kinit -kt keytab路径 认证Principle

3.访问

Mac下

Mac下测试的浏览器比较多,目前博主主要用Mac,浏览器主要用Edge。
Safari
Mac的Safari直接支持kerberos认证,所以通过票据显示程序登录的,直接就能访问需要kerberos认证的页面。其他浏览器需要通过配置。

火狐
地址栏输入about:config,进入高级配置
配置以下两个配置项
network.negotiate-auth.trusted-uris :配置集群KDC服务的主机名
network.auth.use-sspi:false

配置完后,重启浏览器即可

Chrome

defaults write com.google.Chrome AuthServerWhitelist "*"
defaults write com.google.Chrome AuthNegotiateDelegateWhitelist "*"
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --auth-server-whitelist="*"

最后一个指令会直接启动浏览器,目前测试只要这个指令执行一次,以后退出登录就都不需要执行了。
Edge

defaults write com.microsoft.Edge AuthServerAllowlist "*"
defaults write com.microsoft.Edge AuthNegotiateDelegateAllowlist "*"
/Applications/Microsoft\ Edge.app/Contents/MacOS/Microsoft\ Edge --auth-server-whitelist="*"

最后一个指令会直接启动浏览器,目前测试只要这个指令执行一次,以后退出登录就都不需要执行了。

windows下

可以参考这篇文章
Ambari2.7.3-HDP3.1.0开启Kerberos解决部分组件页面无法浏览器访问
其他浏览器,可以参考Mac下的配置

方法二

配置组件服务的页面匿名访问,其他帖子也能看到,不过我看到的yarn的配置写的有点问题,查找资料做了些调整,然后HDFS的话,按照这个配置目前可以访问的是NameNode的页面,HDFS的浏览页面也是访问不了,如果有朋友知道怎么配置,也可以指教一下

需要修改集群的配置,修改内容如下

--namenode ui
在HDFS -> Advanced core-site
set hadoop.http.authentication.simple.anonymous.allowed to true
在HDFS -> Custom core-site
set hadoop.http.authentication.type  to simple
set hadoop.proxyuser.HTTP.groups to *
set hadoop.proxyuser.knox.groups to *
set hadoop.proxyuser.knox.hosts to *
set hadoop.proxyuser.yarn.hosts to *
 
--spark history ui, 在export 前面加#注释掉
在Spark2 -> Advanced spark2-env -> content
{% if security_enabled %}
#export SPARK_HISTORY_OPTS='-Dspark.ui.filters=org.apache.hadoop.security.authentication.server.AuthenticationFilter -Dspark.org.apache.hadoop.security.authentication.server.AuthenticationFilter.params="type=kerberos,kerberos.principal={{spnego_principal}},kerberos.keytab={{spnego_keytab}}"'
{% endif %}
 
--ResourceManager UI
在yarn -> Advanced ranger-yarn-security
set ranger.add-yarn-authorization = false
在yarn -> Custom yarn-site
set yarn.resourcemanager.proxy-user-privileges.enabled to false

参考:

配置浏览器可访问开启了kerberos的ambari Web UI
Ambari2.7.3-HDP3.1.0开启Kerberos解决部分组件页面无法浏览器访问
How do Ranger YARN policies work?
解决Ambari启用Kerberos认证后NameNode UI 等页面无法打开问题

你可能感兴趣的:(Ambari,Kerberos,Mac下开发,ambari,kerberos)