我们索引中的每个文档都应该只能由特定的(最终)用户访问。每个文档的索引可以是基于用户或基于组的。我们已经有了一个(DynamoDB)数据库,其中包含用户,组和他们可以访问的文档(即我们提供给ElasticSearch的文档)。基于我们现有的用户和组数据库,在ElasticSearch中强制文档权限的正确方法是什么?
btxsgosb1#
正确的方法是让elasticsearch处理检查。你可以通过在每个查询的顶部添加一个过滤器来自己做,但这很棘手,如果你的用户对查询的生成有一定的控制权,那么有办法绕过这样的过滤器。因此,要正确地执行此操作,应该将XML与您的文档一起索引,并在每次文档更改时更新。在这种情况下,您可以将访问规则制定为模板化的角色查询。组和用户可以使用安全API与Elasticsearch的本机领域同步,或者更好地通过编写和部署custom realm plugin。
5lwkijsr2#
你最好的选择是在Elastic搜索文档中扁平化(非规范化)这些数据,并根据你对Elasticsearch执行的查询执行安全检查。反规范化是Elasticsearch效率的关键,但缺点是当user accesses或user groups发生变化时,您需要更新所有文档。
user accesses
user groups
2条答案
按热度按时间btxsgosb1#
正确的方法是让elasticsearch处理检查。你可以通过在每个查询的顶部添加一个过滤器来自己做,但这很棘手,如果你的用户对查询的生成有一定的控制权,那么有办法绕过这样的过滤器。
因此,要正确地执行此操作,应该将XML与您的文档一起索引,并在每次文档更改时更新。在这种情况下,您可以将访问规则制定为模板化的角色查询。组和用户可以使用安全API与Elasticsearch的本机领域同步,或者更好地通过编写和部署custom realm plugin。
5lwkijsr2#
你最好的选择是在Elastic搜索文档中扁平化(非规范化)这些数据,并根据你对Elasticsearch执行的查询执行安全检查。
反规范化是Elasticsearch效率的关键,但缺点是当
user accesses
或user groups
发生变化时,您需要更新所有文档。