2012-01-29 66 views
0

我有一個非常非常瞭解的Solr問題。該索引包含一組員工記錄文檔,其中包含一組公開訪問字段和一組安全字段。根據用戶的安全憑證(可能在文檔中將其索引爲一個字段),如果文檔匹配,則其所有公用字段以及他有權訪問的一些安全字段。這個安全字段列表可以將文檔變更爲相同索引中的文檔。例如:某個部門(屬於一家公司)的管理人員可以查看其下的所有員工(doc)的安全字段,但不能查看在其下工作的人員(無論是否在同一家公司)。但他仍然可以看到所有員工的所有公共領域(匹配和過濾文檔)。Solr:文檔和子文檔級別的安全

作爲經理,我可以看到在我之下工作的每一個人的所有(公共+安全)領域,但我只能看到他下面的一些安全領域。如何在Solr中實現這一點。謝謝。

回答

3

documentation指出Solr不關心文檔級別的安全性。

Solr的設計爲您的數據的索引,而不是爲你的數據庫的替代品(訪問控制是一個重要的數據庫功能,只是增加了複雜性的指數)

我的建議:

  1. 刪除索引中的所有敏感數據。每個Solr文檔都可以包含對第三方系統/數據庫的引用(或鏈接),該系統/數據庫包含需要訪問控制的敏感數據。
  2. 加密索引內的敏感內容使用公鑰/私鑰加密,您可以控制誰能夠解密Solr文檔的敏感字段。 (此解決方案不能很好地擴展,也不允許搜索加密字段)
  3. 爲每個管理員創建一個敏感搜索索引:使用Web服務器的身份驗證機制來控制對索引和加載敏感數據的訪問那裏。
0

我會建議採取以下步驟:

  1. 分離出公開和安全內容,您可以使用兩個獨立的內核。
  2. 添加位於User和SOLR Web應用程序之間的ServletFilter,然後您可以在SOLR結果之上使用一些基本的基於ACL的安全性,以根據您的應用程序要求過濾掉內容。