regex - Elasticsearch 在 dls(文档级安全)查询中使用正则表达式过滤访问
问题描述
我正在尝试使用 DLS 控制对索引的读取访问,基于将主机字段与给定的正则表达式匹配。
这方面的文档是有限的,我还没有找到任何使用正则表达式的示例。我已经尝试了一些不同的东西,但在这一点上,我想至少确认这是可能的。
目前查询看起来像:
elastic_dls_test:
- indices:
'index1_*':
'*':
- READ
_dls_: '{"bool": { "filter": { "regexp": { "host.keyword": {"value": "/hostname_to_match[0-9]*/"} }}}}}'
这似乎没有为角色 elastic_dls_test 的用户过滤任何内容。
解决方案
是的,这应该是可能的。您可以对 DLS 使用任何 Elasticsearch 查询,包括正则表达式查询。如果不查看配置的其余部分和基础数据,就很难说出它为什么不起作用。但是有几个一般步骤可以调试问题:
- 使用对索引具有完全访问权限的用户直接运行 DLS 查询(如使用“_search”端点)并查看它是否返回预期结果
- 检查用户是否真的被分配到了 elastic_dls_test 角色,所以实际上应用了 DLS。查看角色和权限的故障排除:https ://docs.search-guard.com/latest/troubleshooting-search-guard-user-roles
- 检查 Elasticsearch 日志文件,看看是否有任何错误
如果您从您的 index1_* 索引之一发布示例文档,这也会有所帮助。
推荐阅读
- javascript - 如何创建创建新网格项 onClick 的函数?Vuex 使用 vue-grid-layout
- javascript - Rxjs 可以将其更改为返回布尔值吗?
- python - 如果索引位置值在变量中定义,可以通过索引位置访问 Jinja 模板变量吗?
- c# - 如何在一个解决方案中添加多个名称空间和类
- python-3.x - 从特定键中具有最高值的字典列表中返回字典
- pandas - Pandas Merge:列标签不唯一
- sql-server - 来自 Powerbuilder 游标错误的存储过程调用
- c# - SonarScanner (C#) 不支持代码内 StyleCop 警告抑制
- ruby-on-rails - 如何在不要求服务器端随机数的情况下停止 Braintree 存储 payment_methode?
- c - 如何在 C 中将字符串添加到 PUNICODE_STRING 的末尾