7

HiveServer2 に単純なプロパティ ファイルまたはデータベース ユーザー/パスワード認証を提供するにはどうすればよいですか?

これについてはすでにこのプレゼンテーションを見つけましたが、英語ではありません:(。Clouderaのリファレンスマニュアルでは、プロパティについて話しています。インターフェイスの実装をhive.server2.authenticationサポートしています。CUSTOMhive.server2.custom.authentication

それを実装する方法は?

4

1 に答える 1

12

本質的に、認証を実行できる Java アプリケーションを提供する必要があります。mysql や postgres データベース、またはフラット ファイルなどを認証している可能性があります。org.apache.hive.service.auth.PasswdAuthenticationProvider インターフェースを実装できる jar を提供する必要があります。

簡単な例:

package org.apache.hive.service.auth.PasswdAuthenticationProvider.SampleAuth;

import java.util.Hashtable;
import javax.security.sasl.AuthenticationException;
import org.apache.hive.service.auth.PasswdAuthenticationProvider;

/*
 javac -cp $HIVE_HOME/lib/hive-service-0.12.0-cdh5.0.0-beta-2.jar SampleAuthenticator.java -d .
 jar cf sampleauth.jar hive
 cp sampleauth.jar $HIVE_HOME/lib/.
*/


public class SampleAuthenticator implements PasswdAuthenticationProvider {

  Hashtable<String, String> store = null;

  public SampleAuthenticator () {
    store = new Hashtable<String, String>();
    store.put("user1", "passwd1");
    store.put("user2", "passwd2");
  }

  @Override
  public void Authenticate(String user, String  password)
      throws AuthenticationException {

    String storedPasswd = store.get(user);

    if (storedPasswd != null && storedPasswd.equals(password))
      return;

    throw new AuthenticationException("SampleAuthenticator: Error validating user");
  }

}

次に、hive-site.xml で、新しく作成したカスタム認証 jar を使用します。

<property>
  <name>hive.server2.authentication</name>
  <value>CUSTOM</value>
</property>

<property>
  <name>hive.server2.custom.authentication.class</name>
  <value>org.apache.hive.service.auth.PasswdAuthenticationProvider.SampleAuth</value>
</property>
于 2014-03-10T17:26:44.587 に答える