Cassandra 接続を認証する方法
スポンサーリンク
このドキュメントの内容は、以下の通りです。
Cassandra では、コネクションを IDとパスワードを使用して、認証することができます。Cassandra のソースコードに含まれる SimpleAuth を利用します。
ダウンロード
- http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.1.3/apache-cassandra-1.1.3-src.tar.gz
- http://cassandra.apache.org/download/
ソース
- apache-cassandra-1.1.2-src/examples/simple_authentication
- https://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=tree;f=examples/simple_authentication;h=81e09e7dfe6da93e9083a330e8b64af5b101b151;hb=HEAD
ビルド
SimpleAuth のコードをビルドします。
cd src javac -cp ~/tmp/cassandra/apache-cassandra-1.1.2/lib/apache-cassandra-1.1.2.jar org/apache/cassandra/auth/*.java cd jar cf auth.jar org
SimpleAuthority の jar ファイルを cassandra の lib ディレクトリにコピーする。
cp auth.jar ~/cassandra/lib/auth.jar
設定
access.properties
access.properties を作成します。
$HOME/cassandra/conf/access.properties
<modify-keyspaces>=root k1.<rw>=root k1.<ro>=reader k1.c1.<rw>=root k1.c1.<ro>=reader
passwd.properties
passwd.properties を作成します。
$HOME/cassandra/conf/passwd.properties
root=badpasswd reader=badpasswd
cassandra.yaml
cassandra.yaml の2つの設定を書き換えます。
[/src]
#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
[/src]
Cassandra の起動
cassandra の引数に passwd.properties と access.properties をつけます。
./bin/cassandra -f -Dpasswd.properties=conf/passwd.properties \ -Daccess.properties=conf/access.properties
cassandra-env.sh でつけてもよいです。
実行例
cassandra-cli を使用し、 id root で接続してみます。
薫 $ ./bin/cassandra-cli -h localhost -k k1 -u root -pw badpasswd Connected to: "Test Cluster" on localhost/9160 Welcome to Cassandra CLI version 1.1.2 Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit. [root@k1] set c1['1']['3'] = 'data'; Value inserted. Elapsed time: 39 msec(s).
write の権限ない user で write を試みた場合。
薫 $ ./bin/cassandra-cli -h localhost -k k1 -u reader -pw badpasswd Connected to: "Test Cluster" on localhost/9160 Welcome to Cassandra CLI version 1.1.2 Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit. [reader@k1] set c1['1']['3'] = 'data2'; #<User reader groups=[]> does not have permission WRITE for /cassandra/keyspaces/k1/c1 InvalidRequestException(why:#<User reader groups=[]> does not have permission WRITE for /cassandra/keyspaces/k1/c1) at org.apache.cassandra.thrift.Cassandra$insert_result.read(Cassandra.java:15974) at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78) at org.apache.cassandra.thrift.Cassandra$Client.recv_insert(Cassandra.java:797) at org.apache.cassandra.thrift.Cassandra$Client.insert(Cassandra.java:781) at org.apache.cassandra.cli.CliClient.executeSet(CliClient.java:909) at org.apache.cassandra.cli.CliClient.executeCLIStatement(CliClient.java:222) at org.apache.cassandra.cli.CliMain.processStatementInteractive(CliMain.java:219) at org.apache.cassandra.cli.CliMain.main(CliMain.java:346)
失敗事例
./bin/cassandra-cli -u root -pw badpasswd -k k1
CQL は、うまくいったが、cassandra-cli だと、認証が失敗する。
./bin/cassandra-cli -h localhost -k k1 -u root -pw badpasswd Login failure. Did you specify 'keyspace', 'username' and 'password'?
cassandra のサーバプロセスは、NullPointerException のログが出ていた。
ERROR 23:20:44,000 Error occurred during processing of message. java.lang.NullPointerException at org.apache.cassandra.auth.SimpleAuthority.authorize(SimpleAuthority.java:84) at org.apache.cassandra.service.ClientState.hasKeyspaceSchemaAccess(ClientState.java:158) at org.apache.cassandra.thrift.CassandraServer.describe_keyspaces(CassandraServer.java:828) at org.apache.cassandra.thrift.Cassandra$Processor$describe_keyspaces.getResult(Cassandra.java:3244) at org.apache.cassandra.thrift.Cassandra$Processor$describe_keyspaces.getResult(Cassandra.java:3232) at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32) at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34) at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:679)
エラーが出てたのは、ここらへんのコード。
org/apache/cassandra/auth/SimpleAuthority.java
// Special case access to the keyspace list if (keyspace == KEYSPACES_WRITE_PROPERTY) { String kspAdmins = accessProperties.getProperty(KEYSPACES_WRITE_PROPERTY); for (String admin : kspAdmins.split(",")) if (admin.equals(user.username)) return Permission.ALL; }
上記の問題が発生していたのは、
access.properties に、以下の設定が足りないせいだった。
<modify-keyspaces>=root
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12