本文件說明如何組態 Hadoop HTTP 網頁主控台以要求使用者驗證。
預設情況下,Hadoop HTTP 網頁主控台(ResourceManager、NameNode、NodeManagers 和 DataNodes)允許存取而無任何形式的驗證。
Hadoop HTTP 網頁主控台可組態為使用 HTTP SPNEGO 協定(由 Firefox 和 Internet Explorer 等瀏覽器支援)要求 Kerberos 驗證。
此外,Hadoop HTTP 網頁主控台支援等同於 Hadoop 的 Pseudo/Simple 驗證。如果啟用此選項,必須在第一次瀏覽器互動中使用 user.name 查詢字串參數指定使用者名稱。例如:https://127.0.0.1:8088/cluster?user.name=babu
。
如果 HTTP 網頁主控台需要自訂驗證機制,可以實作外掛程式以支援替代驗證機制(請參閱 Hadoop hadoop-auth 以取得撰寫 AuthenticationHandler
的詳細資料)。
下一節說明如何組態 Hadoop HTTP 網頁主控台以要求使用者驗證。
下列屬性應位於叢集中所有節點的 core-site.xml
中。
屬性名稱 | 預設值 | 說明 |
---|---|---|
hadoop.http.filter.initializers |
將 org.apache.hadoop.security.AuthenticationFilterInitializer 初始化類別新增至這個屬性。 | |
hadoop.http.authentication.type |
simple |
定義用於 HTTP 網路主控台的驗證。支援的值為:simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME# 。 |
hadoop.http.authentication.token.validity |
36000 |
表示驗證令牌在必須更新之前有效的時間(以秒為單位)。 |
hadoop.http.authentication.token.max-inactive-interval |
-1 (已停用) |
指定伺服器將使令牌失效的客戶端要求之間的時間(以秒為單位)。 |
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 (階段性 Cookie) |
指定 HTTP Cookie 的持續性。如果值為 true,Cookie 是持續性的。否則,它就是階段性 Cookie。重要事項:當使用 IP 位址時,瀏覽器會忽略具有網域設定的 Cookie。為了讓這個設定正確運作,叢集中的所有節點都必須設定為使用 hostname.domain 名稱產生 URL。 |
hadoop.http.authentication.simple.anonymous.allowed |
true |
表示在使用「simple」驗證時是否允許匿名要求。 |
hadoop.http.authentication.kerberos.principal |
HTTP/_HOST@$LOCALHOST |
表示在使用「kerberos」驗證時,HTTP 端點要使用的 Kerberos 主體。根據 Kerberos HTTP SPNEGO 規範,主體簡短名稱必須是 HTTP 。_HOST (如果存在)會以 HTTP 伺服器的繫結位址取代。 |
hadoop.http.authentication.kerberos.keytab |
$user.home/hadoop.keytab |
用於 HTTP 端點的 Kerberos 主體憑證的 keytab 檔案位置。 |
若要啟用跨來源支援 (CORS),請設定下列組態參數
將 org.apache.hadoop.security.HttpCrossOriginFilterInitializer 新增至 core-site.xml 中的 hadoop.http.filter.initializers。您還需要在 core-site.xml 中設定下列屬性 -
屬性 | 預設值 | 說明 |
---|---|---|
hadoop.http.cross-origin.enabled | false |
啟用所有 Web 服務的跨來源支援 |
hadoop.http.cross-origin.allowed-origins | * |
允許的來源以逗號分隔。以 regex: 為字首的值會被視為正規表示式。值中也可以包含萬用字元 (* ),這時會產生正規表示式,不建議使用,僅為了向後相容性而提供支援。 |
hadoop.http.cross-origin.allowed-methods | GET、POST、HEAD |
允許的方法以逗號分隔 |
hadoop.http.cross-origin.allowed-headers | X-Requested-With、Content-Type、Accept、Origin |
允許的標頭以逗號分隔 |
hadoop.http.cross-origin.max-age | 1800 |
預先發出的請求可以快取的秒數 |
受信任的代理新增支援,可以使用最終使用者而非代理使用者來執行作業。它會從 doAs 查詢參數中擷取最終使用者。若要啟用受信任的代理,請設定下列組態參數
在 core-site.xml 中將 org.apache.hadoop.security.authentication.server.ProxyUserAuthenticationFilterInitializer 新增至 hadoop.http.filter.initializers,取代 org.apache.hadoop.security.AuthenticationFilterInitializer。