Elasticsearch Authプラグインで アクセスコントロール
第2回elasticsearch勉強会
第2回Elasticsearch勉強会
名前: 菅谷信介 所属: N2SM, Inc. オープンソース活動:
Apache Portals (Jetspeed2など) コミッタ Seasarプロジェクトコミッタ(S2Container,
Teeda, SAStruts, DBFlute, S2Portlet, S2Robot..)
Fessプロジェクト運営 などなど・・・
Blog: http://www.chazine.com/ Twitter: https://twitter.com/shinsuke_sugaya/
自己紹介
第2回Elasticsearch勉強会
Elasticsearch Plugin Archetype Mavenでブランクプロジェクトを簡単に生成
Quartz Plugin 指定時間に処理を実行
River Web Plugin Webサイトをクロールして、スクレイピング
DataFormat Plugin ElasticsearchからCSVなどでデータを取得
SolrAPI Plugin ElasticsearchをSolrのインターフェースでアクセス
Auth Plugin Elasticsearchにアクセス制御機能を提供
最近作っているもの
https://github.com/codelibs
第2回Elasticsearch勉強会
Elasticsearchを使っていて、アクセス制御したいときはないですか?
インターネットに直接Elasticsearchをさらすことはないと思うけど、クラスタの_shutdownとか、特定ユーザーに許可したいかも。
いや、Elasticsearchちょくでシステム作ってみたいかも。
Authプラグインの背景
第2回Elasticsearch勉強会
ElasticsearchのREST APIをアクセス制御するプラグイン ユーザー管理 REST APIのアクセス管理 ログイン/ログアウト/トークン
デフォルトのユーザー管理はElasticsearchのインデックスを利用(拡張可能な実装)
パス、HTTPメソッド、ロールの組み合わせ(Content Constraint)でアクセスを制御する
Authプラグインとは
第2回Elasticsearch勉強会
アクセス制御の概要
利用者1
http://localhost:9200/aaa/bbb にGETでアクセスする場合
パス:/aaa (前方一致で選択)
GET POST DELETE
User Admin Admin Admin
アクセス管理
ユーザー管理
ロール: User
利用者2 利用者3
ロール: Admin
利用者4
Content Constraint
第2回Elasticsearch勉強会
Elasticsearchをインストールした後に
$ ./bin/plugin -install org.codelibs/elasticsearch-auth/1.0.0
インストール後に再起動、以上! アクセス制御の設定を間違ったら、一旦アンインストールして再設定すれば良い
インストール
第2回Elasticsearch勉強会
認証システム名、ユーザー名、パスワード、属するロール群を扱う
標準実装はインデックスに保存 Authenticatorインターフェースを実装すれば、LDAPなどの様々な認証システムと連携
REST APIでユーザーの追加・更新・削除
ユーザー管理
第2回Elasticsearch勉強会
PUTメソッドでtestuserを追加する
$ curl -XPUT 'localhost:9200/_auth/account' -d ‘{ "authenticator" : "index", "username" : "testuser", "password" : "test123", "roles" : ["user", "admin"] }’
ユーザー追加
第2回Elasticsearch勉強会
POSTメソッドでtestuserを更新する
$ curl -XPOST 'localhost:9200/_auth/account' -d ‘{ "authenticator" : "index", "username" : "testuser", "password" : "test321", "roles" : ["user"] }’
ユーザー更新
第2回Elasticsearch勉強会
DELETEメソッドでtestuserを削除する
$ curl -XDELETE 'localhost:9200/_auth/account' -d ‘{ "authenticator" : "index", "username" : "testuser" }’
ユーザー削除
第2回Elasticsearch勉強会
パス、HTTPメソッド、ロール群でアクセスされるパスをアクセス制御する
REST APIで設定 $ curl -XPOST 'localhost:9200/security/constraint/' -d ‘{ "authenticator" : "index", "paths¥" : ["/aaa"], "methods¥" : ["get", "post"], "roles¥" : ["admin"] }’
アクセス管理
次のバージョンでauthenticatorの指定は
不要になる予定
第2回Elasticsearch勉強会
ログイン/ログアウトのREST API $ curl -XPOST 'localhost:9200/login' -d '{ "username" : "testuser", "password" : "test123" }‘
ログイン成功するとトークンが発行される トークンをリクエストヘッダーまたはクッキーで渡すことでアクセスを許可する
$ curl -XGET http://localhost:9200/aaa/_search?q=*:*&token=...
$ curl --cookie "eaid=..." –XGET
http://localhost:9200/aaa/_search?q=*:*
ログイン/ログアウト
第2回Elasticsearch勉強会
Authプラグインを導入すればElasticsearchのコンテンツをアクセス制御できます
pluginコマンドで簡単に導入できます フィードバックをいただけると嬉しいです
公開しているプラグインたちは https://github.com/codelibs
にあります
まとめ
第2回Elasticsearch勉強会
以上
Top Related