ロールベース検索

【連載】

簡単導入! OSS全文検索サーバFess入門

【第8回】ロールベース検索

[2018/12/18 08:00]菅谷 信介 ブックマーク ブックマーク

サーバ/ストレージ

今回はFessの特徴的な機能の一つでもある、ロールベース検索について紹介していきます。

利用するユーザーによって、表示させたい検索結果が異なる場合があります。そういった際にこのロールベース検索機能を利用すれば簡単に検索結果を分けることができます。

ロールベース検索とは

Fess のロールベース検索とは、認証されたユーザーの認証情報を元に検索結果を出し分ける機能です。

たとえば、営業部ロールを持つ営業担当者Aは検索結果に営業部ロールの情報が表示されるが、営業部ロールを持たない技術担当者Bは検索してもそれが表示されません。 この機能を利用することで、社内のイントラネット環境などでログインしているユーザーの所属する部門別や役職別などに検索を実現することができます。

Fess のロールベース検索はデフォルトでは Fess で管理するユーザー情報を元に検索結果の出し分けを行うことができます。 それ以外にも LDAP や Active Directory の認証情報と連携して利用することもできます。 また、それらの認証システム以外にもロール情報を以下の場所から取得できます。

  1. リクエストパラメータ
  2. リクエストヘッダー
  3. クッキー


利用方法としては、ポータルサーバーやエージェント型シングルサインオンシステムでは認証時に Fess の稼働しているドメインとパスに対してクッキーで認証情報を保存することで、ロール情報を Fess に渡すことができます。 また、リバースプロキシ型シングルサインオンシステムでは Fess へのアクセス時にリクエストパラメータやリクエストヘッダーに認証情報を付加することで、 Fess でロール情報を取得することができます。

このようにさまざまな認証システムと連携することで、ユーザーごとに検索結果を出し分けることができます。

今回は、Fess のユーザー管理機能を用いたロール検索の一例を紹介します。

ロールベース検索の設定

Fess 12.3.1を利用して説明していきます。

FessのZIPファイルはダウンロードページから入手することができます。

ZIPファイルを展開して、bin/fess.[sh|bat]を実行して起動してください。

設定の概要

今回は、営業部(sales)と技術部(eng)の2つのロールを作成します。 ユーザーは以下のように検索結果を表示できるものとします。

  • taroユーザーはsalesロールに属し、検索結果に https://www.n2sm.net/ を表示可能
  • hanakoユーザーはengロールに属し、検索結果に https://fess.codelibs.org/ を表示可能

ロールの作成

まず、管理画面の http://localhost:8080/admin/ にアクセスします。

ユーザー > ロール > 新規作成 から 名前に「sales」と入力し、salesロールを作成します。 同様にengロールも作成します。

ロールの一覧

ユーザーの作成

ユーザー > ユーザー > 新規作成 からtaroユーザーとhanakoユーザーを以下の設定で作成します。

太郎 花子
ユーザー名 taro hanako
パスワード taro hanako
ロール sales eng

登録ユーザーの確認

今回の設定でadmin、taro、hanakoの3つユーザーで Fess にログインできる状態になっています。 順にログインできることを確認してください。

http://localhost:8080/admin/ にアクセスして、adminユーザーでログインすると通常通り管理画面が表示されます。

次にadminユーザーをログアウトします。管理画面右上のボタンをクリックしてください。

ログアウトボタン

ユーザー名とパスワードを入力してtaroやhanakoでログインしてください。 ログインが成功すると、http://localhost:8080/ の検索画面が表示されます。

クロール設定の追加

クロール対象を登録します。 今回は営業部ロールのユーザーはhttps://www.n2sm.net/ だけを検索でき、技術部ロールのユーザーはhttps://fess.codelibs.org/ だけを検索できるようにします。

これらのクロール設定を登録するため、クローラ > ウェブ > 新規作成 をクリックして、ウェブクロール設定を作成してください。

今回は以下のような設定にします。他の設定はデフォルト値にしておきます。

N2SM Fess
名前 N2SM Fess
URL https://www.n2sm.net/ https://fess.codelibs.org/
クロール対象とするURL https://www.n2sm.net/.* https://fess.codelibs.org/.*
最大アクセス数 10 10
間隔 3000ミリ秒 3000ミリ秒
パーミッション {role}sales {role}eng

クロールの開始

クロール設定登録後、システム > スケジューラ > Default Crawler から[今すぐ開始]を押下します。クロールが完了するまでしばらく待ちます。

検索

クロール完了後、http://localhost:8080/ にアクセスして、ログインしていない状態で「fess」などの単語を検索して、検索結果が表示されないことを確認してください。

次にtaroユーザーでログインして、同様に検索してください。 taroユーザーはsalesロールを持つため、https://www.n2sm.net/ の検索結果だけが表示されます。

salesロールでの検索結果

taroユーザーをログアウトして、hanakoユーザーでログインしてください。 先ほどと同様に検索すると、hanakoユーザーはengロールを持つので、https://fess.codelibs.org/ の検索結果だけが表示されます。

engロールでの検索結果

今回はロールによる検索結果の出し分けを紹介しましたが、クローラのパーミッションに「{user}ユーザー名」や「{group}グループ名」と記入することでユーザーやグループごとに検索結果を出し分けることもできます。

*  *  *

Fess のセキュリティー機能の一つであるロールベース検索についてご紹介しました。 Fessへの認証情報の受け渡しは汎用的な実装であるのでさまざまな認証システムに対応できると思います。

ユーザーの属性ごとに検索結果を出し分けることができるので、社内ポータルサイトや共有フォルダなどの閲覧権限ごとに検索が必要なシステムも実現することが可能です。

著者紹介

菅谷 信介 (Shinsuke Sugaya)

Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

「検索エンジンを広めるつもりが、思わぬ幸運」 - Hadoop10周年、生みの親が回顧

「検索エンジンを広めるつもりが、思わぬ幸運」 - Hadoop10周年、生みの親が回顧

今年で誕生10周年を迎える、オープンソースソフトウェア(OSS)の「Apache Hadoop」。果たして同プロダクトは、今日の発展に至るまでにどのようなプロセスを歩んできたのか。本誌は、「Cloudera World Tokyo 2016」で来日したHadoopの生みの親、Doug Cutting 氏に開発の経緯や、ターニングポイントについて話を聞いたので…

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします

会員登録(無料)

注目の特集/連載
知りたい! カナコさん 皆で話そうAIのコト
教えてカナコさん! これならわかるAI入門
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
ソフトウェア開発自動化入門
PowerShell Core入門
徹底研究! ハイブリッドクラウド
[解説動画] Googleアナリティクス入門講座
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る