Fork me on GitHub

Hadoop Web控制台添加身份验证

背景介绍

  本文档介绍如何配置Hadoop HTTP Web控制台以要求用户身份验证。
  默认情况下,Hadoop HTTP Web控制台(ResourceManager,NameNode,NodeManagers和DataNodes)允许访问而无需任何形式的身份验证。
  可以将Hadoop HTTP Web控制台配置为使用HTTP SPNEGO协议(Firefox和Internet Explorer等浏览器支持)进行Kerberos身份验证。
  此外,Hadoop HTTP Web控制台支持相当于Hadoop的伪/简单身份验证。如果启用此选项,则必须使用user.name查询字符串参数在第一个浏览器交互中指定用户名。例如:http://localhost:8088/cluster?user.name=hadoop。
  如果HTTP Web控制台需要自定义身份验证机制,则可以实现插件以支持备用身份验证机制(有关编写AuthenticatorHandler的详细信息,请参阅Hadoop hadoop-auth )

配置core-site

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
vim /opt/apache/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml
<configuration>
<!-- Authentication for Hadoop HTTP web-consoles -->
<property>
<name>hadoop.http.filter.initializers</name>
<value>org.apache.hadoop.security.AuthenticationFilterInitializer</value>
</property>
<!-- 定义用于HTTP Web控制台的身份验证,支持的值是: simple | kerberos -->
<property>
<name>hadoop.http.authentication.type</name>
<value>simple</value>
</property>
<!-- 指示身份验证令牌在必须更新之前有效的时间(以秒为单位) -->
<property>
<name>hadoop.http.authentication.token.validity</name>
<value>3600</value>
</property>
<!-- 用于签署身份验证令牌的签名密钥文件,集群中的所有节点、ResourceManager、NameNode、DataNode和NodeManager都应该使用相同的密钥,只
有运行守护进程的Unix用户才能读取该文件 -->
<property>
<name>hadoop.http.authentication.signature.secret.file</name>
<value>/opt/apache/hadoop/secret/hadoop-http-auth-signature-secret</value>
</property>
<!-- 用于存储身份验证令牌的HTTP Cookie的域,要使身份验证在集群中的所有节点上正确工作,必须正确设置域。
没有默认值,HTTP Cookie将不会有只与发出HTTP Cookie的主机名一起工作的域-->
<property>
<name>hadoop.http.authentication.cookie.domain</name>
<value></value>
</property>
<!-- 指示在使用“简单”身份验证时是否允许匿名请求 -->
<property>
<name>hadoop.http.authentication.simple.anonymous.allowed</name>
<value>false</value>
</property>
</configuration>
hadoop.http.authentication.kerberos.principal
指示在使用“Kerberos”身份验证时将Kerberos主体用于HTTP端点。根据Kerberos HTTP SPNEGO规范,主体短名称必须是HTTP。如果存在,则用HTTP服务器的绑定地址替换_HOST

创建secret目录,用于存放密钥文件

1
2
3
4
5
6
7
$ mkdir -p /opt/apache/hadoop/secret
$ cd /opt/apache/hadoop/secret
# 创建hadoop-http-auth-signature-secret密钥文件,并添加test用户
$ echo \"test\" > hadoop-http-auth-signature-secret
同步修改信息至集群其它节点

验证

1 重启Hadoop集群

2 HDFS WEB UI
默认访问方式(401错误):http://192.168.233.136:50070
通过用户方式访问(正常访问):http://192.168.233.136:50070?user.name=test

-----------------本文结束,感谢您的阅读-----------------