Web 應用程式代理

概觀

簡介

Web 應用程式代理是 YARN 的一部分。預設情況下,它將作為資源管理員 (RM) 的一部分執行,但也可以設定為獨立模式執行。代理的目的在於降低透過 YARN 進行網路攻擊的可能性。

在 YARN 中,應用程式主控程式 (AM) 負責提供網路使用者介面,並將該連結傳送給 RM。這會產生許多潛在問題。RM 以受信任使用者的身分執行,而造訪該網路地址的人會將其視為受信任的,以及將其提供的連結視為受信任的,但實際上,AM 以非受信任使用者的身分執行,而它提供給 RM 的連結可能會指向任何惡意或其他網站。Web 應用程式代理透過警告不擁有特定應用程式的使用者,他們正在連線到不受信任的網站,來降低此風險。

除了這一點,代理程式也會嘗試減少惡意 AM 可能對使用者造成的影響。它主要是透過移除使用者的 Cookie,並以提供已登入使用者名稱的單一 Cookie 取代它們來達成這項目的。這是因為大多數基於網路的驗證系統會根據 Cookie 來識別使用者。將此 Cookie 提供給不受信任的應用程式會開啟漏洞的可能性。如果 Cookie 設計得當,這種可能性應該會相當小,但這只是為了減少這種潛在的攻擊媒介。

目前狀態

目前的代理程式實作並未採取任何措施來防止 AM 提供連結至惡意外部網站,也不會採取任何措施來防止惡意 JavaScript 程式碼執行。事實上,JavaScript 可用於取得 Cookie,因此目前從要求中移除 Cookie 的效益很小。我們希望未來能解決上述攻擊媒介,並讓連線至 AM 的網路使用者介面更安全。

部署

組態

組態屬性 說明
yarn.web-proxy.address 網路代理程式的位址為 HOST:PORT,如果未提供,則代理程式會作為 RM 的一部分執行。
yarn.web-proxy.keytab WebAppProxy 的 Keytab,如果代理程式未作為 RM 的一部分執行。
yarn.web-proxy.principal 代理程式的 Kerberos 主體,如果代理程式未作為 RM 的一部分執行。

執行 Web 應用程式代理程式

可使用下列指令啟動獨立的 Web 應用程式代理程式伺服器。

  $ yarn proxyserver

或者,使用者可以使用下列指令將獨立的 Web 應用程式代理程式伺服器啟動為守護程式

  $ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh start proxyserver