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アプリケーション
- 「コマンド・ラインでの認証情報の提供」に記載されている認証情報オプションのいずれかを使用して、
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ファイルの環境変数として設定されたユーザー名とパスワードで開始される場合、その指定されたユーザ名とパスワードはより高い優先順位の認証に使用されます。
- ユーザー名とパスワードを指定します。
- コマンドラインでの認証情報の提供
- ファイルで認証情報を提供する
- 環境変数を使用して認証情報を提供する
export DSE_USERNAME=username && export DSE_PASSWORD=password
dse fs 'mkdir /dir1'
- Kerberosデリゲーション・トークンを使用する。詳細については、「dse client-tool cassandra」を参照してください。
export DSE_TOKEN=`dse -u token_user -p password client-tool cassandra generate-token`
dse fs 'mkdir /dir1'
kinit
などのツールを使用して認証した後にキャッシュKerberosチケットを使用します。kinit username
dse fs 'mkdir /dir1'
- 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認証をサポートしています。
kinit ...
curl -v --negotiate -u : "http://localhost:5598/webhdfs/v1/?op=LISTSTATUS"
- 以下の方法のいずれかを使用してデリゲーション・トークンを取得します。
- 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
- dse client-tool
- デリゲーション・トークンを使用する。
curl -v "http://localhost:5598/webhdfs/v1/?op=LISTSTATUS&delegation=delegation_token"