elasticsearch Elasticsearch:私人用户文档,elasticsearch,data-access-layer,access-control,elasticsearch,Data Access Layer,Access Control" /> elasticsearch Elasticsearch:私人用户文档,elasticsearch,data-access-layer,access-control,elasticsearch,Data Access Layer,Access Control" />

elasticsearch Elasticsearch:私人用户文档

elasticsearch Elasticsearch:私人用户文档,elasticsearch,data-access-layer,access-control,elasticsearch,Data Access Layer,Access Control,我们正在考虑使用我们的Web服务。由于ES在较低的级别上运行,因此对于身份验证和授权,必须在其上有某一层。我看到,在基于角色的级别上,哪个显然可以控制用户和管理员,开发人员等在搜索索引中可以做什么。然而,我找不到的是如何在用户级别控制数据访问:每个用户都必须访问所有公共文档以及他/她的私人文档 是否有ES插件/范例可以处理此问题?Shield的想法是在索引文档中有一个用户组: { "text":"Document 1 is public", "user_group": ["public"

我们正在考虑使用我们的Web服务。由于ES在较低的级别上运行,因此对于身份验证和授权,必须在其上有某一层。我看到,在基于角色的级别上,哪个显然可以控制
用户
管理员
开发人员
等在搜索索引中可以做什么。然而,我找不到的是如何在用户级别控制数据访问:每个用户都必须访问所有公共文档以及他/她的私人文档


是否有ES插件/范例可以处理此问题?

Shield的想法是在索引文档中有一个用户组:

{
  "text":"Document 1 is public",
  "user_group": ["public"]
}
{
  "text":"Document 2 is restricted",
  "user_group": ["restricted"]
}
然后可以强制为指定的用户组应用筛选器

# For users in group public
{"term" : {"user_group" : "public"}}

# For users in group restricted (can see public as well)
{"terms" : {"user_group" : ["public","restricted"]}}
Elasticsearch 2.0/Shield 2.0有所改进。您被迫使用索引别名

(一个屏蔽替代方案)的行为类似于屏蔽:dlsfilter将用户组与筛选器绑定

在这两种情况下,将用户绑定到文档可能是一项困难(不可能?)的任务,因为一切都基于用户组/角色,而不是单个用户。不过,您可以生成特定于每个用户的组。每次添加用户时,它将强制您添加用户组,并配置其特定授权