INFORMATION
テクノロジ

Apache ManifoldCF -Windows共有サーバのクロール-

今回はApache ManifoldCFのWindows共有サーバのクロールをご説明します。
ManifoldCFの管理画面から設定を行い、実際にクロールを実行して動作を確認します。

Windows共有サーバ接続によるクロールの特長

 Windows共有サーバとは、WindowsのサーバOSで共有フォルダを作ってファイルを共有するサーバのことです。Active Directoryによってドメイン管理されているグループやユーザが、各クライアントPCからアクセスして、サーバのリソースに対して操作を行います。Windows共有サーバでは、共有フォルダやファイルに対して、アクセス許可やセキュリティを設定することによって、グループやユーザ別に異なったセキュリティを付与することができます。
 ManifoldCFでは、このWindows共有サーバに接続して、クロールすることができます。リモートにあるサーバにアクセスして、ファイルのコンテンツやファイル属性を取得することができます。そして、共有フォルダやファイルが持っているセキュリティ属性を取得することができます。これらの取得した情報をSolrへ渡すことにより、Solrでは、Windows共有サーバが持つセキュリティの仕組みと同じ要領で検索することができます。
 この特長は、企業内のファイル共有サーバで情報共有している社内管理文書を検索するケースに適しています。たとえば、共有フォルダ内に管理部だけアクセスできるファイルがあるとします。さまざまな社員が任意の検索語で検索したとき、そのファイルがヒットするとします。しかし、検索結果の表示に関しては、セキュリティを考慮して、管理部の社員には表示してよいが、営業部やその他の部署の社員には表示させたくない、という仕組みが要求されます。ManifoldCFでは、このような仕組みを実現するために必要な情報の取得機能を提供します。


準備

  1. 「Apache ManifoldCF -セットアップ-」に記載されているセットアップ作業を実施します。
  2. ドメイン環境にあるWindowsのサーバOSを用意し、
    その中に共有フォルダを設置し、その中にファイルを用意します。
    共有フォルダにはアクセス許可とセキュリティにグループを設定します。
    今回の例では、管理部のみアクセス許可する「Admin」共有フォルダと営業部のみアクセス許可する「Sales」共有フォルダを作成します。
    また、当サーバのすべてのリソースにアクセスできる特権ユーザを用意します。
  3. ファイルは、テキストファイル、MS Officeファイル、PDFファイルなどを用意します。
  4. Active DirectoryがセットアップされたWindowsサーバ(ドメインコントローラ)、Active Directoryの情報にアクセスできる特権ユーザを用意します。

ManifoldCFの管理画面

 各コネクタを指定してコネクションを作成し、コネクションをひとつのジョブにまとめます。
 そして、ジョブで各種項目を設定し、実行することでクロールが実行されます。

 今回は、各コネクタを次のように設定します。
 Windows共有サーバをクロールしてデータをSolrに渡すという流れです。
  • アウトプット → Solr
  • オーソリティ → Active Directory
  • レポジトリ → Windows shares

1. ManifoldCFの管理画面を表示します。
 http://localhost:8345/mcf-crawler-ui
  

2. List Output Connectionsを選択し、コネクションをAddします。
 Nameに「Solr」(任意)を入力し、Typeに「Solr」を選択します。
 Continueボタンを押してSolrに関する詳細設定が表示されますが
 デフォルトのままで動作するので、変更しません。
 最後にSaveボタンを押します。
  

3. List Authority Connectionsを選択し、コネクションをAddします。
 Nameに「Active Directory」(任意)を入力し、Typeに「Active Directory」を選択します。
 Domain Controllerタブで、Active Directoryの情報にアクセスできる特権ユーザを入力します。
 Authenticationに「SIMPLE」と入力します(接続エラーが出る場合は初期値のままにしてください)。
 最後にSaveボタンを押します。
  

4. List Repository Connectionsを選択し、コネクションをAddします。
 Nameに「Windows shares」(任意)を入力し、
 Typeに「Windows shares」を選択し、Authorityに「Active Directory」を選択します。
 Serverタブで、Windows共有サーバのIPアドレス、
 サーバのすべてのリソースにアクセスできる特権ユーザを入力します。
 最後にSaveボタンを押します。
  

5. List all Jobsを選択し、ジョブをAddします。
 Connectionタブで、登録済みコネクションを指定します。
 Outputに「Solr」、Repositoryに「Windows shares」を選択します。
 Continueボタンを押してジョブに関する詳細設定が表示されますが
 ここでは、Pathsタブでクロール対象の共有フォルダパスを入力しAddします。
 最後にSaveボタンを押します。
  

6. Status and Job Managementを選択します。
 登録済みジョブのStartをクリックして、クロールを実行します。
  
 Refreshをクリックするとでジョブの経過を確認することができます。
 ステータスにDoneが表示されるとクロールのジョブが終了したことになります。

7. SimpleHistoryを選択します。
 レポジトリを選択してContinueボタンを押します。
 ジョブの開始終了、フォルダおよびドキュメントの、アクセスとSolrへの投入状況など
 クロール履歴を確認することができます。
  



Solrの管理画面

 SolrではManifoldCFから渡されてきたデータをインデクシングします。
 すでに前述までの過程でインデクシングが完了しています。
 ここでは、検索を行って内容を確認します。

1. Solrの管理画面を表示します。
 http://localhost:8983/solr/admin
  

2. 画面中央のsearchボタンを押します。
 検索結果が返ってきます。
 textフィールドにファイルのコンテンツが登録されていることを確認します。
 attr_*フィールドにファイル属性が登録されていることを確認します。
 次のフィールドにセキュリティ属性が登録されていることを確認します。
  attr_allow_token_document ファイルのアクセス許可リスト
  attr_allow_token_share   フォルダのアクセス許可リスト
  attr_deny_token_document ファイルのアクセス拒否リスト
  attr_deny_token_share   フォルダのアクセス拒否リスト
  

3. 今度は、セキュリティを考慮した検索を行います。
 まず、検索を行おうとしているユーザのセキュリティ識別子(SID)を取得します。
 今回の例では、管理部グループに管理部ユーザがいます。
 ManifoldCFに対して、次のように問い合わせします。
 
 # usernameには、検索を行おうとしているユーザ(ユーザ名@ドメイン)を指定する
 http://localhost:8345/mcf-authority-service/UserACLs?username=adminuser@mcf.org
 すると、このユーザのセキュリティ識別子(SID)の一覧が返ってきます。
  

4. 次に、このセキュリティ識別子(SID)を利用して、Solrに登録されたセキュリティ属性を絞り込みします。  Solrに対して、次のように問い合わせします。
 # fqパラメータに、ユーザのセキュリティ識別子を指定する
 http://localhost:8983/solr/select?q=*:*&fq=attr_allow_token_share:("S-1-5-32-545" OR "S-1-5-21-2378282929-1608293644-1877169925-1106" OR "S-1-5-21-2378282929-1608293644-1877169925-513" OR "S-1-5-21-2378282929-1608293644-1877169925-1104" OR "S-1-1-0")

 (フィルタークエリで絞り込みを行います。なお、上述のセキュリティフィールド4つをすべて検索に
 利用すれば、より細かく絞り込むことができます。)
 検索結果が返ってきます。管理部のドキュメントが返されました。
  

以上で、ManifoldCFでWindows共有サーバのクロールを行って、Solrでの検索結果を確認しました。

Windows共有サーバで管理するフォルダやファイルのセキュリティの仕組みを、検索システムで同じように実現するには、検索システム側で独自のセキュリティ機構をもたせるケースが多いです。この場合、サーバと検索システムとの間に、セキュリティの粒度に違いがあるような作りになったり、セキュリティの整合性を保たせるためにメンテナンスに手間がかかったりします。
しかし、ManifoldCFを利用すれば、上記のような作業をスキップすることができ、
整合性をほぼ自動的に保つことができます。

次回は、データベースのクロールをご説明します。


KandaSearch

KandaSearch はクラウド型企業向け検索エンジンサービスです。
オープンAPIでカスタマイズが自由にできます。

  • セマンティックサーチ

    人間が理解するように検索エンジンがテキストや画像を理解して検索できます。

  • クローラー

    検索対象文書を収集するWebクローラーが使えます。

  • 簡単操作のUIと豊富なライブラリー

    検索や辞書UIに加え、定義済み専門用語辞書/類義語辞書やプラグインがあります。

  • ローコードで低コスト導入

    検索UIで使い勝手を調整した後、Webアプリケーションを自動生成できます。

セミナー

企業が検索エンジンを選定する際のポイントから、
実際の導入デモをお客様ご自身でご体験!