Security Data Lake-д хайлтын асуулгыг хэрхэн бичих вэ?
Энэ хуудсыг AI-аар орчуулж, автоматаар шалгасан. Нарийн тохиргоо хийхээсээ өмнө англи эхтэй тулгаж болно.
Синтакс
Хайлтын синтакс нь Lucene синтаксд маш ойрхон. Мессежийн талбар заагаагүй бол хайлт нь мессежийн бүх талбараас хийгдэнэ.
ssh гэсэн нэр томьёо агуулсан мессежүүд:
sshssh эсвэл login гэсэн нэр томьёо агуулсан мессежүүд:
ssh loginssh login гэсэн яг тэр хэллэгийг агуулсан мессежүүд:
"ssh login"type талбарт ssh агуулсан мессежүүд:
type:sshtype талбарт ssh эсвэл login агуулсан мессежүүд:
type:(ssh OR login)type талбарт ssh login гэсэн яг тэр хэллэг агуулсан мессежүүд:
type:"ssh login"type талбартай мессежүүд:
_exists_:typetype талбаргүй мессежүүд:
NOT _exists_:typeethernet[0-9]+ regular expression-тэй таарах мессежүүд:
/ethernet[0-9]+/Анхдагчаар бүх нэр томьёо, хэллэг OR холбоотой тул ядаж нэг таарсан бүх мессеж гарна. Хайлтаа удирдахын тулд Boolean операторууд ба бүлэглэлийг ашиглана:
"ssh login" AND source:example.org
("ssh login" AND (source:example.org OR source:another.example.org)) OR _exists_:always_find_meNOT операторыг бас ашиглаж болно:
"ssh login" AND NOT source:example.org
NOT example.orgWildcard (орлуулагч тэмдэгт): Нэг тэмдэгтийг орлуулахад ?, тэг ба түүнээс олон тэмдэгтийг орлуулахад * ашиглана:
source:*.org
source:exam?le.org
source:exam?le.*allow_leading_wildcard_searches = trueМөн message, full_message, source нь анхдагчаар шинжилдэг (analyzed) цорын ганц талбарууд гэдгийг анхаарна уу. Wildcard хайлт (* ба ?) индекслэгдсэн бүх талбарт ажилладаг ч шинжилдэг талбарууд арай өөрөөр ажиллана. Дэлгэрэнгүйг wildcard and regexp queries-ээс үзнэ үү.
Fuzziness (ойролцоо хайлт): Төстэй нэр томьёог хайж болно:
ssh logni~ source:exmaple.org~Энэ жишээ нь Damerau–Levenshtein distance-ийг анхдагч зай 2-оор ашигладаг тул (хайлтад зориуд буруу бичсэн ч) “ssh login” болон “example.org”-той таарна.
Зайг дараах байдлаар өөрчилж болно:
source:exmaple.org~1Fuzziness операторыг proximity (ойрын) хайлтад бас ашиглаж болно. Энэ үед хэллэг доторх нэр томьёонууд хоорондоо өөр өөр зайтай байж болох ба заасан дарааллаар байх шаардлагагүй:
"foo bar"~5Тоон талбарууд range query (завсарын хайлт)-ийг дэмжинэ. Дөрвөлжин хаалт заасан утгыг оруулна, том хаалт оруулахгүй ба хоёуланг нь хольж болно:
http_response_code:[500 TO 504]
http_response_code:{400 TO 404}
bytes:{0 TO 64]
http_response_code:[0 TO 64}Хязгааргүй завсрын операторуудыг бас хослуулж болно:
http_response_code:(>=400 AND <500)Огнооны талбарт мөн range query хийж болно. Time-picker дээр сонгосон хугацаа таны хайх завсарт багтсан байх нь чухал. Жишээ нь сүүлийн 5 минутаар хайгаад хайж буй хугацаа нэг долоо хоногийн өмнө байвал юу ч гарахгүй. Огноо нь UTC байх ба Security Data Lake-ийн харуулдаг форматтай ижил байх ёстой:
timestamp:["2019-07-23 09:53:08.175" TO "2019-07-23 09:53:08.575"]Security Data Lake нь timestamp талбарт огноог YYYY-MM-DD HH:MM:SS.sss форматаар хадгалдаг тусгай индексийн mapping ашигладаг. Elasticsearch өөр нэг талбарыг огноо гэж тодорхойлж анхдагч огнооны форматыг ашигласан бол (энэ нь мөн YYYY-MM-DD HH:MM:SS.sss) тухайн хугацаан дахь хайлт дараах байдалтай байна:
otherDate:["2019-07-23T09:53:08.175" TO "2019-07-23T09:53:08.575"]Наад зах нь Elasticsearch 6.x-д энэ хугацааны завсарт цагийн бүсийн мэдээллийг оруулж болно. Хайлт иймэрхүү харагдана:
otherDate:["2020-07-29T12:00:00.000-05:00" TO "2020-07-30T15:13:00.000-05:00"]Энэ огнооны хайлтыг динамик болгож, заасан хугацааны өмнөх үеийг үргэлж харах боломжтой:
otherDate:[now-5d TO now-4d]Escape хийх (тусгай тэмдэгтийг хамгаалах)
Дараах тэмдэгтүүдийн өмнө backslash тавьж escape хийх ёстой:
& | : \ / + - ! ( ) { } [ ] ^ " ~ * ?Жишээ:
resource:\/posts\/45326Алдааны төрлүүд
Хайлтаа бичихдээ анхааруулга, алдааны мэдэгдэлд анхаараарай. Security Data Lake ойлгохгүй хайлт оруулбал шар анхаарлын тэмдэгтэй дүрс, анхааруулга эсвэл алдааны мессежтэй хамт гарна. Үүнд дараах төрлүүд бий:
Parse exception: Задлан шинжлэх алдаа гарахад энэ алдаа үүснэ. Хайлтын синтаксд алдаа гаргасан үед гарна. Алдааны мессежид синтаксийн алдааны байрлалын талаар нэмэлт мэдээлэл байна.
Invalid operator: Оператор буруу бичигдсэн үед гарна. Жишээ нь AND нь зөв оператор боловч and биш. Ихэнх тохиолдолд операторыг том үсгээр бичнэ.
Unknown field: Хайлтад оруулсан талбар холбогдох index set-үүдэд байхгүй үед энэ анхааруулга гарна. Үүнийг stream болон index set хоорондын холбоогоор тодорхойлно.
Parameter error: Хайлтдаа зарлаагүй параметр ашиглахад энэ алдаа гарна. Параметрүүдийг хайлтдаа оруулахаасаа өмнө тодорхойлсон байх ёстой.
