我正在尝试根据主机字段与给定的正则表达式匹配,使用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_ *索引之一发布示例文档,这也将有所帮助。

    关于regex - 在dls(文档级安全性)查询中使用正则表达式进行Elasticsearch过滤器访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63469471/

    10-11 06:44