我想通过相当复杂的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的成员,他可以访问该文档。
我应该如何在弹性搜索中存储这样的内容,这样我就可以过滤出不允许用户访问的文档以及查询的内容?