intra-mart Accel Platform / Cassandra管理者ガイド

第7版 2014-01-01

«  Cassandra の運用   ::   コンテンツ   ::   Cassandra の参考情報  »

Cassandra への接続認証設定

ここでは Cassandra への接続において、接続ユーザ名およびパスワードによる認証設定を行う方法を紹介します。

注意

  • 接続認証の設定を行った場合、 intra-mart Accel Platform のセットアップ時に認証情報の設定が必要となります。
  • 複数台の Cassandra によるクラスタ構成を構築する場合には、すべてのノードに対して設定を行う必要があります。

認証ライブラリの取得と展開

Cassandra 用の認証ライブラリ一式を入手します。
認証ライブラリは、次のURLよりダウンロードできます。
入手したファイルを任意のパスに展開します。

ライブラリと設定ファイルの配置

認証ライブラリ一式を展開すると格納されているファイルになります。
  1. ./lib/cassandra_simple_auth-1.0.0.jar

    接続認証およびアクセス制御の実装クラスが格納されたライブラリファイルです。
  2. ./conf/passwd.properties

    接続認証に必要な接続ユーザ名とパスワードを記述するための設定ファイルです。
  3. ./conf/access.properties

    接続ユーザ毎のアクセス権の制御設定を記述するための設定ファイルです。
それぞれのファイルを、%CASSANDRA_HOME%内の相対パスで対応するディレクトリにコピーします。
./lib/cassandra_simple_auth-1.0.0.jar → <%CASSANDRA_HOME%/lib/> にコピー
./conf/passwd.properties → <%CASSANDRA_HOME%/conf/> にコピー
./conf/access.properties → <%CASSANDRA_HOME%/conf/> にコピー

使用する認証クラスの変更

<%CASSANDRA_HOME%/conf/cassandra.yaml>ファイルをエディタで開きます。
Cassandra の標準設定では、下記の接続認証およびアクセス制御クラスが設定されています。
# authentication backend, implementing IAuthenticator; used to identify users
authenticator: org.apache.cassandra.auth.AllowAllAuthenticator

# authorization backend, implementing IAuthority; used to limit access/provide permissions
authority: org.apache.cassandra.auth.AllowAllAuthority
標準の設定では Allow All という名前の通り、接続認証やアクセス制御を行わずにすべての接続を許可する実装になっています。
これを下記の様に、ダウンロードした認証ライブラリ内のクラスを指定するように修正します。
# authentication backend, implementing IAuthenticator; used to identify users
# authenticator: org.apache.cassandra.auth.AllowAllAuthenticator
authenticator: org.apache.cassandra.auth.SimpleAuthenticator

# authorization backend, implementing IAuthority; used to limit access/provide permissions
# authority: org.apache.cassandra.auth.AllowAllAuthority
authority: org.apache.cassandra.auth.SimpleAuthority
これで接続認証およびアクセス制御クラスの実装が差し替わるようになりました。

注意

  • 弊社サイトにて提供している認証ライブラリ内の SimpleAuthority は、 Cassandra が提供しているサンプル実装に対して、 access.properties でキースペース内の全カラムファミリへのアクセス権を一括で設定可能にするカスタマイズを行っております。

起動パラメータへの認証設定ファイルパスの追加

前段にて差し替えた実装クラスは、設定ファイル access.propertiespasswd.properties のパスを起動パラメータに指定する必要があります。
ここでは、利用するOS毎の起動パラメータの設定方法を説明します。

Windows環境の場合

<%CASSANDRA_HOME%/bin/cassandra.bat>ファイルをエディタで開きます。
下記のサンプルを参考に、 access.propertiespasswd.properties プロパティを追記します。
追記前
...
-XX:+UseCMSInitiatingOccupancyOnly^
-Dcom.sun.management.jmxremote.port=7199^
...
追記後
...
-XX:+UseCMSInitiatingOccupancyOnly^
-Daccess.properties=%CASSANDRA_HOME%/conf/access.properties^
-Dpasswd.properties=%CASSANDRA_HOME%/conf/passwd.properties^
-Dcom.sun.management.jmxremote.port=7199^
...

Linux環境の場合

</usr/local/cassandra/conf/cassandra-env.sh>ファイルをエディタで開きます。
下記のサンプルを参考に、 access.propertiespasswd.properties を追記します。
追記前
...
# Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See
# http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version:
# comment out this entry to enable IPv6 support).
JVM_OPTS="$JVM_OPTS -Djava.net.preferIPv4Stack=true"

# jmx: metrics and administration interface
...
追記後
...
# Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See
# http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version:
# comment out this entry to enable IPv6 support).
JVM_OPTS="$JVM_OPTS -Djava.net.preferIPv4Stack=true"

# set authentication parameter properties path.
JVM_OPTS="$JVM_OPTS -Daccess.properties=$CASSANDRA_HOME/conf/access.properties"
JVM_OPTS="$JVM_OPTS -Dpasswd.properties=$CASSANDRA_HOME/conf/passwd.properties"

# jmx: metrics and administration interface
...

設定ファイルの解説

ここでは設定ファイルの設定値について説明します。

接続認証設定 (passwd.properties)

標準の passwd.properties には、管理者を想定した admin と参照のみユーザを想定した user を設定してあります。
以下にコメント行を省いた設定値を記載します。
admin=admin_pwd
user=user_pwd
設定値のフォーマットは、「%接続ユーザ名%=%パスワード%」となります。

アクセス権設定 (access.properties)

設定値のフォーマットは、「%アクセス権%=%接続ユーザ名%」となります。
アクセス権には、以下の3つが定義されています。
  1. キースペースの編集権限

    <modify-keyspaces> : キースペースの作成・削除が可能な権限です。
  2. キースペースへのアクセス権限

    キースペース名.<rw> : キースペース内のカラムファミリを閲覧および変更が可能な権限です。
    キースペース名.<ro> : キースペース内のカラムファミリの閲覧のみが可能な権限です。
  3. キースペース内のカラムファミリへのアクセス権限

    キースペース名.カラムファミリ名.<rw> : キースペース内の特定カラムファミリ内のデータを閲覧および変更が可能な権限です。
    キースペース名.カラムファミリ名.<ro> : キースペース内の特定カラムファミリ内のデータの閲覧のみが可能な権限です。
    カラムファミリ名* を指定することで、全カラムファミリを指定することが可能です。
    今後の機能拡張にてカラムファミリが追加される可能性があるため、cassandra-cnofig.xmlに記述する接続ユーザには全カラムファミリの変更権限を設定してください。
標準の access.properties では、 passwd.properties で指定されたそれぞれのユーザに以下の権限が設定されています。
admin
  • キースペース編集権限
  • defaultキースペースのRead&Write権限
  • defaultキースペースの全カラムファミリのRead&Write権限
user
  • defaultキースペースのReadOnly権限
  • defaultキースペース内の全カラムファミリのReadOnly権限
以下に一部のコメント行を省いた設定値を記載します。
# The magical '<modify-keyspaces>' property lists users who can modify the
# list of keyspaces: all users will be able to view the list of keyspaces.
<modify-keyspaces>=admin

# Access to Keyspace 'default'
default.<rw>=admin
default.<ro>=user

# Access to all ColumnFamily
default.*.<rw>=admin
default.*.<ro>=user

注意

  • cassandra-config.xmlに設定する接続ユーザは、すべての変更権限を保持している必要があります。
  • cassandra-config.xmlを編集してキースペース名を変更した場合や、複数キースペースでの運用を行う場合には、キースペースおよびキースペース内のカラムファミリへのアクセス権の設定値を変更してください。

接続認証の確認とcassandra-cliでの接続方法

Cassandra への接続時に認証が必要となっていることを確認します。
ここでは、標準の設定ファイルにて認証設定を行うことを想定しています。
  1. Cassandra を起動します。

  2. Cassandra が起動していることを確認し、cassandra-cliを起動します。

    • Windowsの場合、<%CASSANDRA_HOME%/bin/cassandra-cli.bat>をダブルクリックします。

    • Linuxの場合、以下のコマンドで起動します。

      /usr/local/cassandra/bin/cassandra-cli
      
  3. コンソールが立ち上がったら、以下のコマンドを入力ください。

    connect localhost/9160;
    
    認証情報を指定していないため、以下のメッセージが出力されて接続に失敗します。
    Login failure. Did you specify 'keyspace', 'username' and 'password'?
    
    ローカル環境の Cassandra に接続した場合、cassandra-cliの起動時にも上記メッセージが出力されます。
  4. 以下のコマンドを入力し、cassandra-cliを一度終了します。

    quit;
    
  5. 次に、認証情報を指定しcassandra-cliを起動します。

    • Windowsの場合、コマンドプロンプトを起動し、以下のコマンドを実行します。

      %CASSANDRA_HOME%/bin/cassandra-cli -u admin -pw admin_pwd
      
    • Linuxの場合、以下のコマンドで起動します。

      /usr/local/cassandra/bin/cassandra-cli -u admin -pw admin_pwd
      

      コラム

      -u は、接続ユーザ名を指定するパラメータです。
      -pw は、パスワードを指定するパラメータです。
  6. コンソールが立ち上がったら、以下のコマンドを入力ください。

    connect localhost/9160;
    
    以下のメッセージが表示され、接続に成功したことが確認できます。
    Connected to: "IMBox Cluster" on localhost/9160
    

«  Cassandra の運用   ::   コンテンツ   ::   Cassandra の参考情報  »