Solr:Document&子文档级安全性

时间:2012-01-29 06:15:03

标签: search solr

我非常了解Solr问题。索引包含一组员工记录文档,其中包含一组公共访问字段和一组安全字段。基于用户的安全凭证(可以在文档中作为一个字段索引),如果文档匹配,其所有公共字段和他有权访问的一些安全字段。此安全字段列表在同一索引中的文档与文档不同。示例:管理部门(属于一家公司)可以查看他下面的所有员工(doc)的安全字段,但不能查看那些不在他下工作的人员(无论是否在同一家公司)。但他仍然可以看到所有员工的所有公共领域(匹配和过滤的文档)。

因此,作为经理,我可以看到每个人在我身下工作的所有(公共+安全)领域,但我的助手只能看到他下面的一些安全领域。如何在Solr中实现这一点。感谢。

2 个答案:

答案 0 :(得分:3)

documentation表示Solr不关心文档级别的安全性。

Solr旨在成为您数据的索引,而不是数据库的替代品(访问控制是一项重要的数据库功能,只会增加索引的复杂性)

我的建议:

  1. 从索引中删除所有敏感数据。每个Solr文档都可以包含一个引用(或链接)第三方系统/数据库,其中包含需要访问控制的敏感数据。
  2. 加密索引中的敏感内容使用公钥/私钥加密,您可以控制谁能够解密Solr文档的敏感字段。 (此解决方案不能很好地扩展,也不允许搜索加密字段)
  3. 为每个管理员创建敏感搜索索引:使用Web服务器的身份验证机制来控制对索引的访问并在其中加载敏感数据。

答案 1 :(得分:0)

我建议采取以下步骤:

  1. 将公共内容和安全内容分开,您可以使用两个独立的内核。
  2. 添加位于User和SOLR webapp之间的ServletFilter,然后您可以在SOLR结果之上使用一些基于ACL的基本安全性,以根据您的应用程序要求过滤掉内容。