我正在构建一个kibana仪表板,显示有关X509 certificates
的信息。我想在CN
或SAN
属性中构建一个包含通配符的证书饼图,但我找不到有效的查询语法。
要匹配subject.cn: "*.example.net"
之类的字符串,我尝试了以下kibana查询:
subject.cn:/\*./
subject.cn:/^\*./
subject.cn:\*\.
subject.cn:\*.
subject.cn:*.
有人能指出我正确的语法吗?这甚至是ES / Lucene支持的东西吗?
答案 0 :(得分:1)
使用标准分析器分析*.example.net
将为您提供单个术语example.net
- 即星号和第一个“。”被剥夺了。
使用 not_analyzed 会存储完整字段*.example.net
(正如所料!)
如果通配符始终位于CN名称的开头,则使用简单的前缀查询将起作用(我简化了字段名称):
curl -XGET 'http://localhost:9200/mytest/certificates/_search?pretty' -d '{
"query": {
"prefix": { "cn.raw":"*"}
}
}'
但是,如果您想搜索不同级别的域名,则需要更改您正在使用的分析器。
E.g。使用pattern analyser并定义“。”作为分隔符或可能创建一个调用path hierarchy tokenizer的自定义分析器 - 它将取决于用户想要搜索数据的方式。
答案 1 :(得分:1)
感谢Olly的回答,我找到了一个有效的解决方案。一旦定义了raw
字段,诀窍是逃避通配符将其视为一个字符,并用unescape通配符包围它,以接受周围的字符:
ca:false AND (subject.cn.raw:*\** OR x509v3Extensions.subjectAlternativeName.raw:*\**)