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 應用程式代理程式伺服器。
$ yarn proxyserver
或者,使用者可以使用下列指令將獨立的 Web 應用程式代理程式伺服器啟動為守護程式
$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh start proxyserver