【问题标题】:How does enterprise search display results for the user and hide unauthorized results?企业搜索如何为用户显示结果并隐藏未经授权的结果?
【发布时间】:2010-09-12 10:46:46
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我选择了选项 1。在 SQL 中非常简单,在 ACL 上加入了全文目录。
  • 好的 - 我问这个问题已经有一段时间了,但没有得到任何答案。我可以分享我们迄今为止获得的经验:到目前为止,最好将一些信息与资源一起编入索引,以帮助在搜索过程中过滤它。它可能是完整的 ACL 信息,这将导致最佳过滤,但维护起来可能很复杂。也可以是任何其他属性集,可以帮助您过滤足够接近的资源集,并且仅在实际搜索时确认哪些资源可以真正实时访问(ACL 检查)。

标签: permissions search-engine enterprise attivio


【解决方案1】:

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

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

  • 早期绑定-安全性:将 ACL 与内容一起编入索引,以及
  • 后期绑定-security:在查询时处理安全性,通过过滤出受保护的结果

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

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

使用早期绑定方法实现安全性的优点是,它解决了上述所有缺点,因为一旦 ACL 更改就重新索引内容的价格。但是,leaks 仍然是可能的,例如当组成员资格或 ACL 刚刚更改并且尚未反映在搜索索引中时。为了解决这个差距early-bindinglate-binding这两种方法经常结合使用。

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

【讨论】:

    猜你喜欢
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多