DSEFS認証

DSEFSではセキュアなDataStax Enterpriseクラスターを使用できます。

spark-defaults.conf

spark-defaults.confファイルのデフォルトの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/spark/spark-defaults.conf
tarボール・インストール installation_location/resources/spark/conf/spark-defaults.conf

DSEFSではセキュアなDataStax Enterpriseクラスターを使用できます。

セキュアなクラスターにおけるDSEFS認証

認証が必要になるのは、クラスターで認証が有効になっている場合のみです。セキュアなクラスター上のDSEFSにはDseAuthenticatorが必要です(「DSE Unified Authentication(DSE統合認証)の構成」を参照)。認証はデフォルトでオフになっています。

DSEFSは、DSE Unified Authenticationを使用した認証をサポートするとともに、Kerberosを含むDSE Authenticatorによってサポートされているすべての認証スキームをサポートしています。

DSEFS認証は、クライアントとサーバー間の通信のセキュリティを保護します。

Sparkアプリケーション

Sparkアプリケーションでは、以下のいずれかの方法で認証情報を指定します。
  • コマンド・ラインでの認証情報の提供」に記載されている認証情報オプションのいずれかを使用して、dse spark-submitコマンドで設定します。
  • SparkContextが作成される前に、Spark構成オブジェクトでユーザー認証情報をプログラムで設定します。
    conf.set("spark.hadoop.com.datastax.bdp.fs.client.authentication.basic.username", <user>)
    conf.set("spark.hadoop.com.datastax.bdp.fs.client.authentication.basic.password", <pass>)

    Kerberos認証トークンを使用している場合は、コンテキスト・オブジェクトでプロパティを設定する必要はありません。トークンを明示的に設定する場合は、spark.hadoop.cassandra.auth.tokenを正しく設定します。

  • Sparkシェルを実行する場合は、SparkContextが起動時に作成されるため、Hadoop構成オブジェクトでプロパティを設定します。
    sc.hadoopConfiguration.set("com.datastax.bdp.fs.client.authentication.basic.username", <user>)
    sc.hadoopConfiguration.set("com.datastax.bdp.fs.client.authentication.basic.password", <pass>)
    spark.hadoopプレフィックスがないことに注意してください。
  • SparkアプリケーションまたはSparkシェルを実行する場合は、spark-defaults.conf 構成ファイルでプロパティを指定します。
    <property>
        <name>com.datastax.bdp.fs.client.authentication.basic.username</name>
        <value>username</value>
    </property>
    <property>
        <name>com.datastax.bdp.fs.client.authentication.basic.password</name>
        <value>password</value>
    </property>
    任意:この方法を使用するときにcore-default.xmlへの書き込み権限がない場合は、このファイルを任意の場所pathにコピーし、以下のように、そのファイルを指すように環境変数を設定します。
    export HADOOP2_CONF_DIR=path

DSEFSシェル

DSEFSシェルを使用して認証情報を提供することは、他のDSEツールと同程度に簡単です。DSEFSシェルは、以下に優先度順にリストされているさまざまな認証方法をサポートしています。1つ以上の方法が使用可能な場合は、優先順位の高い方法が選択されます。たとえば、DSE_TOKEN環境変数が設定され、DSEFSシェルが$HOME/.dsercファイルの環境変数として設定されたユーザー名とパスワードで開始される場合、その指定されたユーザ名とパスワードはより高い優先順位の認証に使用されます。

  1. ユーザー名とパスワードを指定します。
    dse fs 'mkdir /dir1'
  2. Kerberosデリゲーション・トークンを使用する。詳細については、「dse client-tool cassandra」を参照してください。
    export DSE_TOKEN=`dse -u token_user -p password client-tool cassandra generate-token`
    dse fs 'mkdir /dir1'
  3. kinitなどのツールを使用して認証した後にキャッシュKerberosチケットを使用します。
    kinit username
    dse fs 'mkdir /dir1'
  4. Kerberosキータブ・ファイルとログイン構成ファイルを使用します。

    構成ファイルがデフォルト以外の場所にある場合は、DSEFS_SHELL_OPTS変数のjava.security.auth.login.configプロパティを使用して場所を指定します。

    DSEFS_SHELL_OPTS="-Djava.security.auth.login.config=path_to_login_config_file" dse fs

DSEFS RESTインターフェイス

DSEFS RESTインターフェイスは、SPNEGOおよびKerberosデリゲーション・トークン認証を使用したKerberos認証をサポートしています。

SPNEGOでセキュリティ保護されているDSEFS RESTエンドポイントに対するAPI呼び出しを自動化するには、curl 7.38.0以降を使用します。
kinit ...
curl -v --negotiate -u : "http://localhost:5598/webhdfs/v1/?op=LISTSTATUS"
Kerberosデリゲーション・トークン認証を使用するには:
  1. 以下の方法のいずれかを使用してデリゲーション・トークンを取得します。
    • dse client-tool

      たとえば、現在のユーザーをトークンの更新者としてデリゲーション・トークンを生成します。

      dse client-tool cassandra --generate-token 
    • curl
      curl -v --negotiate -u : "http://10.200.177.136:5598/webhdfs/v1/?op=GETDELEGATIONTOKEN" # uses Spnego to obtain the token
  2. デリゲーション・トークンを使用する。
    curl -v "http://localhost:5598/webhdfs/v1/?op=LISTSTATUS&delegation=delegation_token"