Kerberos 为Hadoop启用SPNEGO身份验证(二)

为Hadoop启用SPNEGO身份验证

默认情况下,对集群的基于http的服务和ui的访问不配置为需要身份验证。HDFS、YARN、MapReduce2、HBase、Oozie、Falcon、Storm的Web ui支持配置Kerberos认证。

为Ambari服务器设置Kerberos

本节描述如何使用Kerberos主体和keytab配置Ambari服务器,以允许视图通过SPNEGO对集群组件进行身份验证

关于这个任务

当为Kerberos启用集群时,组件REST端点(如YARN ATS组件)需要SPNEGO身份验证。

根据集群中的服务,Ambari Web需要访问这些api。同样,一些视图需要访问ATS。因此,为了通过SPNEGO对这些api进行身份验证,Ambari服务器需要一个Kerberos主体。本节描述如何使用Kerberos主体和keytab配置Ambari服务器,以允许视图通过SPNEGO对集群组件进行身份验证。

过程

  1. 在KDC中为Ambari服务器创建一个主体。例如,使用kadmin。addprinc -randkey [email protected]
  2. 为该主体生成keytab.xst - k [email protected]
  3. 把那个键标签放在Ambari服务器主机上。确保设置了文件权限,以便运行Ambari服务器守护进程的用户可以访问keytab文/etc/security/keytabs/ambari.server.keytab。
  4. 停止ambari服务器。ambari-server停止。
  5. 执行setup-security命令。ambari-server设置安全性。
  6. 选择3设置Ambari kerberos JAAS配置。
  7. 输入前面设置的Ambari服务器的Kerberos主体名。
  8. 输入Ambari主体的keytab的路径。
  9. 重启服务器洋麻。ambari-server重启。

HDFS、YARN、MapReduce2、HBase、Oozie、Falcon、Storm配置HTTP认证

如何在Kerberos环境下为Hadoop组件配置HTTP认证。

过程

  1. 创建用于对身份验证令牌进行签名的密钥。该文件应该包含随机数据,并放置在集群中的每个主机上。它还应该属于hdfs用户,属于hadoop组。

权限应该设置为440。例如:

dd if=/dev/urandom of=/etc/security/http_secret bs=1024 count=1
chown hdfs:hadoop /etc/security/http_secret
chmod 440 /etc/security/http_secret
  1. 在Ambari Web中,浏览到Services > HDFS > Configs。
  2. 添加或修改以下配置属性到Advanced core-site。
属性 新值
hadoop.http.authentication.simple.anonymous.allowed false
hadoop.http.authentication.signature.secret.file /etc/security/http_secret
hadoop.http.authentication.type kerberos
hadoop.http.authentication.kerberos.keytab /etc/security/keytabs/spnego.service.keytab
hadoop.http.authentication.kerberos.principal HTTP/_HOST@ EXAMPLE.COM
hadoop.http.filter.initializers org.apache.hadoop.security.AuthenticationFilterInitializer
hadoop.http.authentication.cookie.domain hortonworks.local

注意:

上表中以粗体和斜体列出的条目是特定站点的。hadoop.http.authentication.cookie.domain属性基于集群中服务器的完全限定域名。例如,如果NameNode的FQDN是host1.hortonworks.local,hadoop.http.authentication.cookie。域应该设置为 hortonworks.local。

  1. 对于HBase,可以通过配置SPNEGO来开启HBase Web ui的Kerberos-authentication功能。
    a)在Ambari Web中,浏览到Services > HBase > Configs。
    b)在自定义hbase-site.xml文件中添加如下配置属性:
属性
hbase.security.authentication.ui kerberos
hbase.security.authentication kerberos
hbase.security.authentication.spnego.kerberos.principal HTTP/[email protected]
hbase.security.authentication.spnego.kerberos.keytab /etc/security/keytabs/spnego.service.keytab
Hbase.security.authentication.spnego.kerberos.name.rules (Optional)
Hbase.security.authentication.signature.secret.file(Optional)
  1. 保存配置,然后重新启动受影响的业务。

启用浏览器访问spnego启用的Web UI

如何启用浏览器访问spnego启用的web UI。

过程

  1. 在本地机器上安装Kerberos(搜索如何在本地环境上安装Kerberos客户机的说明)。
  2. 在您的本地机器上配置krb5.conf文件。要在HDP集群上测试,请将/etc/krb5.conf文件从集群主机之一复制到本地机器的/etc/krb5.conf。创建自己的按键并运行kinit。为了在HDP集群上测试,从/etc/security/keytabs/smokeuser.headless中复制“ambari_qa”keytab文件。keytab,然后运行以下命令:
kinit -kt smokeuser.headless.keytab ambari-qa@EXAMPLE.COM

3.使用Kerberos SPNEGO启用您的web浏览器:
a) Mac上的Chrome:
3. 在之前运行kinit命令启动Chrome的相同shell中运行以下命令:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --
auth-server-whitelist="*.hwx.site"

取代.hwx。拥有自己domain 名字。

  1. 如果出现以下错误,请尝试关闭并重新启动所有Chrome浏览器窗口。
    b)为Firefox:
  2. 导航到about:config URL(在地址栏中输入about:config,然后按回车键)。
  3. 向下滚动到network.negotiate-auth。将其值更改为集群域名(例如,.hwx.site)。
  4. 将network.negotiate-auth.delegation-uri的值修改为集群域名(例如。hwx.site)。

猜你喜欢

转载自blog.csdn.net/m0_48187193/article/details/114879509