Webアプリケーションプロキシ

概要

はじめに

WebアプリケーションプロキシはYARNの一部です。デフォルトでは、リソースマネージャー(RM)の一部として実行されますが、スタンドアロンモードで実行するように構成することもできます。プロキシの目的は、YARNを介したWebベースの攻撃の可能性を減らすことです。

YARNでは、アプリケーションマスター(AM)はWeb UIを提供し、そのリンクをRMに送信する役割を担います。これにより、潜在的な問題が多数発生します。RMは信頼できるユーザーとして実行され、そのWebアドレスにアクセスするユーザーは、提供されるリンクを信頼できると見なしますが、実際にはAMは信頼できないユーザーとして実行されており、RMに提供されるリンクは悪意のある、またはその他のものを指している可能性があります。Webアプリケーションプロキシは、指定されたアプリケーションを所有していないユーザーに、信頼できないサイトに接続していることを警告することにより、このリスクを軽減します。

これに加えて、プロキシは、悪意のあるAMがユーザーに与える可能性のある影響を軽減しようとします。主に、ユーザーからCookieを取り除き、ログインユーザーのユーザー名を提供する単一のCookieに置き換えることによってこれを行います。これは、ほとんどのWebベース認証システムがCookieに基づいてユーザーを識別するためです。このCookieを信頼できないアプリケーションに提供することにより、悪用される可能性が生じます。Cookieが適切に設計されていれば、その可能性はかなり低いはずですが、これは単に潜在的な攻撃ベクトルを減らすためです。

現在のステータス

現在の実装では、AMが悪意のある外部サイトへのリンクを提供することを防ぐための対策は何も講じられておらず、悪意のあるJavaScriptコードの実行を防ぐための対策も講じられていません。実際、JavaScriptを使用してCookieを取得できるため、リクエストからCookieを取り除いても、現時点ではメリットはほとんどありません。将来的には、上記の攻撃ベクトルに対処し、AMのWeb UIへの接続をより安全にすることを目指しています。

デプロイメント

設定

設定プロパティ 説明
yarn.web-proxy.address Webプロキシのアドレス(HOST:PORT)。これが指定されていない場合、プロキシはRMの一部として実行されます。
yarn.web-proxy.keytab プロキシがRMの一部として実行されていない場合のWebAppProxyのキータブ。
yarn.web-proxy.principal プロキシがRMの一部として実行されていない場合のプロキシのKerberosプリンシパル。

Webアプリケーションプロキシの実行

スタンドアロンWebアプリケーションプロキシサーバーは、次のコマンドで起動できます。

  $ yarn proxyserver

または、ユーザーは次のコマンドを使用して、スタンドアロンWebアプリケーションプロキシサーバーをデーモンとして起動できます。

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