gpt4 book ai didi

elasticsearch - ElasticSearch X-Pack安全角色和现场安全

转载 作者:行者123 更新时间:2023-12-03 02:12:40 28 4
gpt4 key购买 nike

我正在使用ES 6.2.4,并且正在使用X-Pack。
我注册具有以下角色的用户:

{
"password" : "changeme",
"roles" : [ "object_basic", "object_ext" ],
"full_name" : "FullName",
"email" : "sample@example.com",
"metadata" : {
"access_group_ids": ["1", "2", "3"]
}
}
我具有以下安全角色。
Object_basic :
{
"indices": [
{
"names": [ "*cases_*" ],
"privileges": [ "read" ],
"field_security" : {
"grant" : [ "case_id","short_name", "type", "status", "owner_department" ]
},
"query": "{\"template\":{\"source\":\"{\\\"bool\\\":{\\\"should\\\":[{\\\"terms\\\":{\\\"case_access_owner_group_ids\\\": {{#toJson}}_user.metadata.access_group_ids{{/toJson}}}},{\\\"terms\\\":{\\\"case_access_contributor_group_ids\\\": {{#toJson}}_user.metadata.access_group_ids{{/toJson}} }},{\\\"terms\\\":{\\\"case_access_viewer_group_ids\\\": {{#toJson}}_user.metadata.access_group_ids{{/toJson}} }},{\\\"terms\\\":{\\\"case_access_basic_viewer_group_ids\\\": {{#toJson}}_user.metadata.access_group_ids{{/toJson}} }} ]}}\"}}"
}
]
}
Object_ext :
{
"indices": [
{
"names": [ "*cases_*" ],
"privileges": [ "read" ],
"field_security" : {
"grant" : [ "name", "description" ]
},
"query": "{\"template\":{\"source\":\"{\\\"bool\\\":{\\\"should\\\":[{\\\"terms\\\":{\\\"case_access_owner_group_ids\\\":{{#toJson}}_user.metadata.access_group_ids{{/toJson}}}},{\\\"terms\\\":{\\\"case_access_contributor_group_ids\\\":{{#toJson}}_user.metadata.access_group_ids{{/toJson}}}},{\\\"terms\\\":{\\\"case_access_viewer_group_ids\\\": {{#toJson}}_user.metadata.access_group_ids{{/toJson}}}}]}}\"}}"
}
]
}
这两个安全角色查询之间的唯一区别是,object_ext包含的条件减少了一个条件(即case_access_basic_viewer_group_ids)。
我摄取了一些包含如下值的数据:
 "case_access_owner_group_ids": [],
"case_access_contributor_group_ids": [],
"case_access_viewer_group_ids": [],
"case_access_basic_viewer_group_ids": ["2"],
当我将两个角色(object_basic和object_ext)都分配给用户时,所有字段(包括“名称”,“描述”)都将返回。
这不是我所期望的。我希望不会返回“名称”,“描述”,因为object_ext查询中不包括 case_access_basic_viewer_group_ids
现在,如果我更新用户的角色,而只留下object_ext,则它的行为正确且不返回任何内容。
如果我更新了用户角色,而只留下了object_basic,则它不会返回“名称”,“描述”。
我当然希望同时为用户分配这两个角色,并且仅当适当的数组包含有效数据以及用户的元数据数组时才返回“名称”,“描述”。现在看来,如果obj_basic角色被触发,它也会自动触发obj_ext。
我究竟做错了什么?

最佳答案

看起来(至少)对于6.2.4版本而言,不可能在与文档here相同的索引处具有文档和字段级安全性。

If you need to restrict access to both documents and fields, considersplitting documents by index instead.


在特定条件下,这可能是一个实际的问题,因为它可能会强制模型的标准化。

关于elasticsearch - ElasticSearch X-Pack安全角色和现场安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64295836/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com