背景:我已经开始将几百个gbs转储到ElasticSearch中,试图通过反规范化使我的查询更快。他们确实更快!
在这一点上我想揭露 one index
直接发送给我们的内部用户(包含数百个字段的复杂模式和我们无法绕过的复杂查询),只需一点限制,行级acl:
问题
给定一个定义为
PUT my_denormalized_index/_mapping
{
"properties": {
"allowedUsers": [ARRAY OF SOME SORT],
"all_the_rest_of_secret_data": {
"type": "nested"
}
}
}
我希望我的用户只能查询其id在“allowedusers”内的数据。
我正在考虑的选择
有什么问题吗 Standard
怎么办?比如只允许用户访问一个索引,并强制在所有查询中添加where条件?
要么通过elasticsearch配置,要么通过某种标准代理来丰富查询?
评估的其他选项
直接访问kibana-->我对es还不熟悉,但我的理解是他们将拥有完全的访问权限
允许他们访问代理,每次创建查询时也会添加代理 match{allowedUsers: contains myId1}
因此,因为我相信es搜索不是新手友好,我想给你同样的自动完成的经验,你会在kibana,但使用这种代理。
有什么建议吗?
1条答案
按热度按时间tmb3ates1#
如果你有白金或更多的许可证和ElasticSearch的最新版本,这是很容易做到的。
您可以基于用户的元数据使用一些rbac创建角色。但是应用程序的每个用户都需要有自己的凭据。
如果不是,则应该在代理/应用程序端强制使用筛选器参数。您可以考虑强制使用某个搜索模板来保持对最终用户操作的更多控制。
如果你想在kibana有这样的行为,我认为他们是没有其他的可能性比使用铂牌照的rbac。