为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对集群组件进行身份验证。
过程
- 在KDC中为Ambari服务器创建一个主体。例如,使用kadmin。addprinc -randkey ambariserver@EXAMPLE.COM。
- 为该主体生成keytab.xst - k ambari.server.keytab-server@EXAMPLE.COM。
- 把那个键标签放在Ambari服务器主机上。确保设置了文件权限,以便运行Ambari服务器守护进程的用户可以访问keytab文/etc/security/keytabs/ambari.server.keytab。
- 停止ambari服务器。ambari-server停止。
- 执行setup-security命令。ambari-server设置安全性。
- 选择3设置Ambari kerberos JAAS配置。
- 输入前面设置的Ambari服务器的Kerberos主体名。
- 输入Ambari主体的keytab的路径。
- 重启服务器洋麻。ambari-server重启。
HDFS、YARN、MapReduce2、HBase、Oozie、Falcon、Storm配置HTTP认证
如何在Kerberos环境下为Hadoop组件配置HTTP认证。
过程
- 创建用于对身份验证令牌进行签名的密钥。该文件应该包含随机数据,并放置在集群中的每个主机上。它还应该属于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
- 在Ambari Web中,浏览到Services > HDFS > Configs。
- 添加或修改以下配置属性到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。
- 对于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/_HOST@EXAMPLE.COM |
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) |
- 保存配置,然后重新启动受影响的业务。
启用浏览器访问spnego启用的Web UI
如何启用浏览器访问spnego启用的web UI。
过程
- 在本地机器上安装Kerberos(搜索如何在本地环境上安装Kerberos客户机的说明)。
- 在您的本地机器上配置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 名字。
- 如果出现以下错误,请尝试关闭并重新启动所有Chrome浏览器窗口。
b)为Firefox: - 导航到about:config URL(在地址栏中输入about:config,然后按回车键)。
- 向下滚动到network.negotiate-auth。将其值更改为集群域名(例如,.hwx.site)。
- 将network.negotiate-auth.delegation-uri的值修改为集群域名(例如。hwx.site)。