前回はFessにユーザとロールを登録して検索結果の出し分け方法を紹介しました。今回はActive Directoryにユーザを登録して、Active Directoryと連携した場合のロールベース検索について説明します。

Active Directoryは企業内の情報管理で数多く利用されていると思います。

Active Directoryと連携することにより、企業内で指定されたアクセス権限をFessの検索結果にも適用して、適切に結果を出し分けることができます。

今回はActive Directoryで管理されたファイルサーバのドキュメントをクロールする場合を例にして連携方法を説明します。

Active Directoryとは

Active Directoryとはマイクロソフトが開発した、ユーザやコンピュータなどを管理するための仕組みです。Windows Serverには標準で搭載されています。

Active Directoryはドメインという単位で管理する範囲を定義します。管理者はドメインに参加しているコンピュータの管理ができます。また、ユーザはドメイン内のどのコンピュータでも自身のアカウントでログインできるようになります。

FessとActive Directoryを連携させることで、同じ管理情報を利用することができるので、シームレスな企業内検索を実現できます。

ファイルサーバでのアクセス設定

検索対象となるクロール先のファイルサーバでは、共有フォルダにあらかじめ以下のアクセス権設定がされているものとします。

フォルダ名 アクセス権
Sales Salesグループ
Eng Engグループ

ADサーバの設定

今回はWindows Server 2016で構築したActive Directoryを利用します。

FessがActive Directoryと連携するためには、Active Directoryにアクセスするためのユーザが必要です。

今回は下記の設定でアクセスユーザを登録しておきます。

項目 設定値
ドメイン名 example.co.jp
アクセス用ユーザ名 hoge
アクセス用ユーザのパスワード fuga

また、検索時に出し分けができていることを確認するため、連携するドメインで事前にユーザ登録をしておきます。

ユーザ 所属
taro Salesグループ
hanako Engグループ

Fessの設定

今回はFess 12.3.1を利用します。

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

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

http://localhost:8080/admin/ にアクセスし、fessの管理画面を開きます。「システム」>「全般」をクリックし、全般の設定を開きます。LDAP項目は以下のように入力し、「更新」ボタンを押下します。

項目 設定値
LDAP URL ldap://example.co.jp:389
Base DN dc=example,dc=co,dc=jp
Bind DN hoge@example.co.jp
パスワード fuga
User DN %s@example.co.jp
アカウントフィルタ (&(objectClass=user)(sAMAccountName=%s))
memberOf属性 memberOf

クロール設定

次にクロール対象を登録します。

今回はクロール先としてファイルサーバの共有フォルダを指定します。

adminユーザでログインし、管理画面の「クローラ」>「ファイルシステム」>「新規作成」ボタンをクリックして、ファイルクロール設定の作成画面を開きます。

「名前」と「パス」を入力したら、「作成」ボタンを押下します。

以下は入力例ですので、パスはクロール先のパスと読み替えてください。

項目 設定値
名前 ShareDocuments
パス smb://fserver.example.co.jp/share/

ファイル認証設定

クロール先の共有フォルダで認証が必要な場合は、ファイル認証設定が必要になります。 管理画面で「クローラ」>「ファイル認証」>「新規作成」ボタンをクリックし、ファイル認証の作成画面を開きます。

以下は入力例です。ホスト名などは環境に合わせて入力してください。

項目 設定値
ホスト名 fserver.example.co.jp
ポート (変更している場合はポート指定)
スキーム SAMBA
ユーザ名 hoge
パスワード fuga
ファイルクロール設定 ShareDocuments

入力後、「作成」ボタンを押下します。

クロール開始

クロール設定登録後、「システム」 > 「スケジューラ」 > 「Default Crawler」 から[今すぐ開始]を押下します。

クロールを実施することで、自動的にアクセス権限が設定されたインデックスが作成されます。

クロールが完了するまでしばらく待ちます。

検索

クロール完了後、管理画面からログアウトして、作成したユーザ「taro」でログインします。

ログイン後に検索画面から検索語を入力して検索してみましょう。taroでログインしたので「Sales」フォルダ内で一致する結果のみ表示されます。

検索結果画面

*  *  *

今回はFessのActive Directory連携の方法を紹介しました。

企業内のユーザのアクセス権限で適切な検索結果を表示できるので、Active Directory連携機能は社内情報検索でよく使われています。今回説明したように簡単な設定だけで、ロールベース検索を実現できるので、利用してみてください。

著者紹介

菅谷 信介 (Shinsuke Sugaya)

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