このドキュメントでは、ユーザー認証を必須とするように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)を有効にするには、次の構成パラメーターを設定してください
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に追加します。