Hadoop HTTP 網頁主控台驗證

簡介

本文件說明如何組態 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

若要啟用跨來源支援 (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。