Hadoop HTTPウェブコンソールの認証

はじめに

このドキュメントでは、ユーザー認証を必須とするようにHadoop HTTPウェブコンソールを設定する方法について説明します。

デフォルトでは、Hadoop HTTPウェブコンソール(ResourceManager、NameNode、NodeManagers、DataNodes)は認証なしでアクセスできます。

Hadoop HTTPウェブコンソールは、HTTP SPNEGOプロトコル(FirefoxやInternet Explorerなどのブラウザでサポートされています)を使用してKerberos認証を必須とするように設定できます。

さらに、Hadoop HTTPウェブコンソールは、Hadoopの疑似/簡易認証と同等のものをサポートしています。このオプションが有効になっている場合、ユーザー名は、user.nameクエリ文字列パラメータを使用して、最初のブラウザインタラクションで指定する必要があります。例:https://127.0.0.1:8088/cluster?user.name=babu

HTTPウェブコンソールにカスタム認証メカニズムが必要な場合は、代替認証メカニズムをサポートするプラグインを実装できます(AuthenticationHandlerの作成の詳細については、Hadoop hadoop-authを参照してください)。

次のセクションでは、ユーザー認証を必須とするように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クッキーに使用するドメイン。クラスタ内のすべてのノードで認証が正しく機能するためには、ドメインが正しく設定されている必要があります。デフォルト値はありません。HTTPクッキーは、HTTPクッキーを発行するホスト名でのみ機能するドメインを持ちません。
hadoop.http.authentication.cookie.persistent false (セッションクッキー) HTTPクッキーの永続性を指定します。値がtrueの場合、クッキーは永続的なものです。それ以外の場合は、セッションクッキーです。重要:IPアドレスを使用する場合、ブラウザはドメイン設定のあるクッキーを無視します。この設定が正しく機能するためには、クラスタ内のすべてのノードが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クエリパラメータからエンドユーザーをフェッチします。信頼できるプロキシを有効にするには、次の構成パラメーターを設定してください

org.apache.hadoop.security.AuthenticationFilterInitializerの代わりに、org.apache.hadoop.security.authentication.server.ProxyUserAuthenticationFilterInitializerをcore-site.xmlのhadoop.http.filter.initializersに追加します。