弹性搜索复杂acl

时间:2016-06-22 14:19:05

标签: elasticsearch

我想通过相当复杂的ACL实现在弹性搜索中实现文档过滤。文档被组织到文件夹中,每个节点的ACL都是从它和它的所有祖先ACL中计算出来的。在解析某些安全主体的访问时,使用最接近当前节点的祖先的ACL。

我们假设这是我要存储的文件:

{
    "id":"2",
    "acl":[
        {
            "priority":"0",
            "name":"g1",
            "allowed":true
        },
        {
            "priority":"1",
            "name":"g2",
            "allowed":false
        },
        {
            "priority":"2",
            "name":"g3",
            "allowed":true
        }
    ]
}

Acl包含各种安全主体的组合权限。名称是安全主体的名称,优先级是距当前文档的距离(0是文档ACL,1是直接父ACL)。作为g2成员的用户只能访问此文档,如果他也是g1的成员。如果用户不是g2的成员,如果他是g1或g3的成员,他可以访问该文档。

我应该如何在弹性搜索中存储这样的内容,这样我就可以过滤出不允许用户访问的文档以及查询的内容?

0 个答案:

没有答案