1. 程式人生 > >大資料Hadoop系列之Hadoop Web控制檯新增身份驗證

大資料Hadoop系列之Hadoop Web控制檯新增身份驗證

1. 背景介紹

  • 本文件介紹如何配置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 )。

2. 配置

2.1 屬性說明

屬性名稱

預設值

描述

hadoop.http.filter.initializers

將org.apache.hadoop.security.AuthenticationFilterInitializer初始化類新增到此屬性

hadoop.http.authentication.type

simple

定義用於HTTP Web控制檯的身份驗證,支援的值是: simple | kerberos 

hadoop.http.authentication.token.validity

36000

指示身份驗證令牌在必須更新之前有效的時間(以秒為單位)

hadoop.http.authentication.token.max-inactive-interval

-1 (disabled)

指定客戶端請求之間的時間(以秒為單位),伺服器將使令牌失效

hadoop.http.authentication.signature.secret.file

$user.home/hadoop-http-auth-signature-secret

用於簽署身份驗證令牌的簽名金鑰檔案,叢集中的所有節點、ResourceManager、NameNode、DataNode和NodeManager都應該使用相同的金鑰,只有執行守護程序的Unix使用者才能讀取該檔案

hadoop.http.authentication.cookie.domain

用於儲存身份驗證令牌的HTTP Cookie的域,要使身份驗證在叢集中的所有節點上正確工作,必須正確設定域。沒有預設值,HTTP Cookie將不會有隻與發出HTTP Cookie的主機名一起工作的域

hadoop.http.authentication.cookie.persistent

false (session cookie)

指定HTTP Cookie的永續性,如果值為真,則Cookie是持久的。否則,它就是會話Cookie。重要提示:當使用IP地址時,瀏覽器會忽略帶有域設定的Cookie。要使此設定正常工作,叢集中的所有節點都必須配置為生成具有主機名的url,上面有域名

hadoop.http.authentication.simple.anonymous.allowed

TRUE

指示在使用“簡單”身份驗證時是否允許匿名請求

hadoop.http.authentication.kerberos.principal

HTTP/[email protected]$LOCALHOST

指示在使用“Kerberos”身份驗證時將Kerberos主體用於HTTP端點。根據Kerberos HTTP SPNEGO規範,主體短名稱必須是HTTP。如果存在,則用HTTP伺服器的繫結地址替換_HOST

hadoop.http.authentication.kerberos.keytab

$user.home/hadoop.keytab

帶有用於HTTP端點的Kerberos主體憑證的keytab檔案的位置

2.2 配置core-site

建立secret目錄,用於存放金鑰檔案

mkdir -p /opt/apache/hadoop/secret

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>
	<property>
		<name>hadoop.http.authentication.type</name>
		<value>simple</value>
	</property>
	<property>
		<name>hadoop.http.authentication.token.validity</name>
		<value>3600</value>
	</property>
	<property>
		<name>hadoop.http.authentication.signature.secret.file</name>
		<value>/opt/apache/hadoop/secret/hadoop-http-auth-signature-secret</value>
	</property>
	<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>

2.3 建立金鑰檔案

cd /opt/apache/hadoop/secret

建立hadoop-http-auth-signature-secret金鑰檔案,並新增test使用者

echo \"test\" > hadoop-http-auth-signature-secret

2.4 同步修改資訊至叢集其它節點

scp /opt/apache/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml host14:/opt/apache/hadoop/hadoop-2.7.3/etc/hadoop/

scp /opt/apache/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml host15:/opt/apache/hadoop/hadoop-2.7.3/etc/hadoop/

scp -r /opt/apache/hadoop/secret/ host14:/opt/apache/hadoop/

scp -r /opt/apache/hadoop/secret/ host15:/opt/apache/hadoop/

3. 驗證

3.1 重啟Hadoop叢集

stop-dfs.sh

start-dfs.sh

3.2 HDFS WEB UI