permissions - 企业搜索如何为用户显示结果并隐藏未经授权的结果?

标签 permissions search-engine enterprise attivio

我希望了解企业搜索解决方案如何解决用户权限问题。

我的问题是为用户显示搜索结果。天真的方法会向用户显示搜索结果,然后如果用户单击他无权查看的文档,他将无法打开它。但是,如果用户没有阅读权限,甚至禁止显示文档的标题或摘录。各种企业搜索引擎也是如此:

  1. 索引每个文档及其 ACL?
  2. 索引所有没有权限信息的文档,但检查每个搜索结果中的每个链接以查看查询用户是否有权查看此链接?

选项 #2 对我来说更有意义,但似乎也比选项 #1 慢得多。
选项 #1 需要不断更新索引文档的权限更改。

我希望了解当今市场上现有解决方案的通用方法是什么。还有第三种选择吗?

最佳答案

我很惊讶地看到这个 5 年前的问题没有得到任何答案,因为我认为这是企业搜索中相当普遍和重要的问题。

如问题中所述,有两种处理文档级安全性的常用方法:

  • early-binding-security:索引 ACL 和内容,以及
  • 后期绑定(bind)-security:在查询时通过过滤掉protected结果来处理安全

从不建议仅在内容方面处理安全性,因为那时 secret 信息可能已经泄露(例如搜索结果中文档的标题或预览)。

使用后期绑定(bind)方法 实现安全性的优势在于,它非常灵活,因为无需根据更改的 ACL 重新索引内容。然而,最大的缺点是,这样做可能会通过面值泄露 secret 信息,并且无法检索和显示正确面数。正确填充结果列表和处理分页也更加困难。最后但同样重要的是,这种方法会显着降低性能。

使用早期绑定(bind)方法 实现安全性的优势在于,它以一旦 ACL 更改就重新索引内容为代价解决了上述所有缺点。但是,泄漏 仍然是可能的,例如当组成员身份或 ACL 刚刚更改并且尚未反射(reflect)在搜索索引中时。为了解决这个差距,通常将早期绑定(bind)后期绑定(bind)这两种方法结合起来。

最后但同样重要的是,可能还有第三种选择,具体取决于您使用的企业搜索平台:Attivio 的主动安全性 基于查询时连接,它允许索引独立于文档本身的安全信息,但在查询时合并这两个文档以确保只有授权的内容才能进入搜索结果。

关于permissions - 企业搜索如何为用户显示结果并隐藏未经授权的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3694532/

相关文章:

java - 如何在 SOLR (mini) 中存储关系数据

iphone - iPhone 企业计划是否允许我使用超过 100 台设备进行 Beta 测试?

ios - 企业 VS 自定义 B2B 应用程序

iOS 8 企业应用程序更新

linux - git clone 在不同的服务器上产生不同的权限

rest - 如何使用 linkedin api 检索 linkedin 用户的 r_basicprofile 权限下列出的所有参数?

sql-server - 在 SQL Server 2005 中,是否有一种简单的方法可以将对象的 "copy"权限从一个用户/角色授予另一个用户/角色?

mysql - 在不断更新数据库中维护排名顺序

php - 如何使用索引为多个数据库创建搜索引擎

linux - 为什么在 nautilus 中你可以访问没有执行权限的目录,而在终端中你不能?