如何在Elasticsearch中管理细粒度权限?

时间:2014-09-10 15:22:43

标签: permissions elasticsearch

我需要以一致的方式存储可以访问信息的角色/组,但我不确定最佳方法是什么。

总结:我有两种文档“tweet”和“blog”:

  • tweet级别,我存储了允许访问信息的组名称
  • blog更复杂,有元数据(titledescriptionnature,...)但其中一些信息可以限制在某些组中用户(仅限adminlogged_in用户)

使用Elasticsearch进行映射的最佳方式是什么?

截至今天,我最终得到的文件如下:

/tweet/455
{
    id: 112,
    ugroups: [ "restricted_user", "admin" ],
    description: "foo",
},
{
    id: 113,
    ugroups: [ "anonymous" ]
    description: "foo",
}

/blog/500
{
    id: 5,
    fields: [
        {
            "nature": {
                "value": "foo",
                "ugroup": [ "admin" ]
            }
        }
    ]
}
{
    id: 6,
    fields: [
        {
            "comment": {
                "value": "foo",
                "ugroup": [ "anonymous" ]
            }
        }
    ]
}

当用户想要在tweet中搜索时,这很简单,我使用用户提交的字词构建term查询,并将用户所属的组追加到此查询中。

但是如何制作一个会在不同级别上接受这个“ugroup”事物的查询?

理想情况下,我可以发出如下查询:

  • 使用tweettweet.ugroup: "anonymous" blog
  • 搜索blog.fields.*.ugroup: "anonymous"

有没有办法编写这样的查询?

0 个答案:

没有答案