Elasticsearch Authプラグインでアクセスコントロール

8,830 views

Published on

Elasticsearchにアクセス制御する機能を追加するAuthプラグインを紹介します。

0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,830
On SlideShare
0
From Embeds
0
Number of Embeds
2,254
Actions
Shares
0
Downloads
23
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

Elasticsearch Authプラグインでアクセスコントロール

  1. 1. Elasticsearch Authプラグインで アクセスコントロール 第2回elasticsearch勉強会
  2. 2. 自己紹介 名前: 菅谷信介 所属: 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勉強会
  3. 3. 最近作っているもの  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勉強会
  4. 4. Authプラグインの背景    Elasticsearchを使っていて、アクセス制御 したいときはないですか? インターネットに直接Elasticsearchをさら すことはないと思うけど、クラスタの _shutdownとか、特定ユーザーに許可した いかも。 いや、Elasticsearchちょくでシステム作っ てみたいかも。 第2回Elasticsearch勉強会
  5. 5. Authプラグインとは    ElasticsearchのREST APIをアクセス制御す るプラグイン  ユーザー管理  REST APIのアクセス管理  ログイン/ログアウト/トークン デフォルトのユーザー管理はElasticsearch のインデックスを利用(拡張可能な実装) パス、HTTPメソッド、ロールの組み合わせ (Content Constraint)でアクセスを制御す る 第2回Elasticsearch勉強会
  6. 6. アクセス制御の概要 http://localhost:9200/aaa/bbb にGETでアクセスする場合 アクセス管理 パス:/aaa (前方一致で選択) GET User Content Constraint POST Admin DELETE Admin Admin ユーザー管理 ロール: User 利用者1 利用者2 第2回Elasticsearch勉強会 ロール: Admin 利用者3 利用者4
  7. 7. インストール  Elasticsearchをインストールした後に $ ./bin/plugin -install org.codelibs/elasticsearch-auth/1.0.0   インストール後に再起動、以上! アクセス制御の設定を間違ったら、一旦アン インストールして再設定すれば良い 第2回Elasticsearch勉強会
  8. 8. ユーザー管理     認証システム名、ユーザー名、パスワード、 属するロール群を扱う 標準実装はインデックスに保存 Authenticatorインターフェースを実装すれ ば、LDAPなどの様々な認証システムと連携 REST APIでユーザーの追加・更新・削除 第2回Elasticsearch勉強会
  9. 9. ユーザー追加  PUTメソッドでtestuserを追加する $ curl -XPUT 'localhost:9200/_auth/account' -d ‘{ "authenticator" : "index", "username" : "testuser", "password" : "test123", "roles" : ["user", "admin"] }’ 第2回Elasticsearch勉強会
  10. 10. ユーザー更新  POSTメソッドでtestuserを更新する $ curl -XPOST 'localhost:9200/_auth/account' -d ‘{ "authenticator" : "index", "username" : "testuser", "password" : "test321", "roles" : ["user"] }’ 第2回Elasticsearch勉強会
  11. 11. ユーザー削除  DELETEメソッドでtestuserを削除する $ curl -XDELETE 'localhost:9200/_auth/account' -d ‘{ "authenticator" : "index", "username" : "testuser" }’ 第2回Elasticsearch勉強会
  12. 12. アクセス管理   パス、HTTPメソッド、ロール群でアクセス されるパスをアクセス制御する REST APIで設定 $ curl -XPOST 'localhost:9200/security/constraint/' -d ‘{ "authenticator" : "index", 次のバージョンで "paths¥" : ["/aaa"], authenticatorの指定は 不要になる予定 "methods¥" : ["get", "post"], "roles¥" : ["admin"] }’ 第2回Elasticsearch勉強会
  13. 13. ログイン/ログアウト  ログイン/ログアウトの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勉強会
  14. 14. まとめ    Authプラグインを導入すればElasticsearch のコンテンツをアクセス制御できます pluginコマンドで簡単に導入できます フィードバックをいただけると嬉しいです 公開しているプラグインたちは https://github.com/codelibs にあります 第2回Elasticsearch勉強会
  15. 15. 以上 第2回Elasticsearch勉強会

×