大資料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 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