Pipelines (дамжуулах шугам) — Security Data Lake-ийн лог боловсруулалт
Энэ хуудсыг AI-аар орчуулж, автоматаар шалгасан. Нарийн тохиргоо хийхээсээ өмнө англи эхтэй тулгаж болно.
Pipeline (дамжуулах шугам) нь Security Data Lake-ийн лог мессежийг боловсруулах системийн гол бүрэлдэхүүн юм. Ирсэн өгөгдлийг шалгах, өөрчлөх, чиглүүлэх бүтэцлэгдсэн хүрээг бүрдүүлдэг бөгөөд мессеж орж ирсний дараа ямар алхмуудаар боловсруулахыг тодорхойлно. Ингэснээр лог өгөгдлийг нэг мөр, үр дүнтэй, өөрийн хэрэгцээнд тохируулан боловсруулах боломжтой.
Pipeline бүр streams-д (урсгал) зохион байгуулагдсан олон rule-ээс (дүрэм) бүрдэх ба нэг буюу хэд хэдэн stream-тэй холбогдож болно. Үүгээр мессежийг хэзээ, хэрхэн боловсруулахыг нарийн тохируулж, өгөгдлийг баяжуулах (enrichment), жигдлэх (normalization), чиглүүлэх (routing) боломжтой.
Үндсэн ойлголтууд
Pipelines
Pipeline нь stage-үүдэд (шат) хуваагдсан pipeline rule-уудын цуглуулга юм. Stream-д холбогдсон үед тухайн stream-д орж ирсэн мессеж холбогдсон бүх pipeline-аар stage-үүдийн тодорхойлсон дарааллаар боловсруулагдана.
Pipeline Rules
Pipeline rule нь мессежийг хэрхэн боловсруулахыг тодорхойлдог логик юм.
Дүрэм дараахыг хийж чадна:
- Мессежийг өөр stream руу чиглүүлэх
- Талбар нэмэх буюу өөрчлөх замаар өгөгдлийг баяжуулах
- Мессежийн агуулгыг хувиргах
- Хайлт, шинжилгээнд нэг мөр байхаар мессежийн форматыг жигдлэх
Хоорондоо холбоотой дүрмүүдийн нэг иж бүрдэл нь бүрэн pipeline-ийн ажлын урсгалыг бүрдүүлнэ.
Functions
Functions (функц) нь pipeline rule-ийн барилгын блок юм. Функц бүр текст задлах, талбарын утга шалгах, мессежийн агуулга өөрчлөх зэрэг тодорхой үйлдлийг гүйцэтгэх ба ажиллагааг нь удирдах параметр авч болно. Функцийн буцаасан үр дүн дараагийн дүрмүүд мессежийг хэрхэн боловсруулахад нөлөөлнө.
Stages
Pipeline нь stage-үүдэд хуваагдах ба stage бүр нэг буюу хэд хэдэн дүрэм агуулна. Stage-үүд тоон дарааллаар дарааллан ажиллана.
Холбогдсон бүх pipeline дундах ижил priority-тай (тэргүүлэх зэрэг) stage-үүд зэрэг ажиллана. Энэ бүтцээр олон алхамт ажлын урсгал бүтээх боломжтой. Жишээлбэл, нэг stage-д мессежийг задлан шинжилж, нөгөөд баяжуулж, сүүлийн stage-д чиглүүлнэ.
Streams
Pipeline бүр дор хаяж нэг stream-тэй холбогдсон байх ёстой. Stream нь pipeline ямар мессежийг боловсруулахыг тодорхойлно.
Stream-д орсон мессеж бүр түүнд холбогдсон бүх pipeline-ийг ажиллуулна. Дэлгэрэнгүйг Streams хэсгээс үзнэ үү.
Pipeline rule-ийн логик
Security Data Lake дахь pipeline нь лог мессежийг индексжүүлэх буюу хадгалахын өмнө хэрхэн шалгах, хувиргах, чиглүүлэхийг тодорхойлдог pipeline rule-уудаас бүтдэг. Эдгээр дүрэм нь тусгай зориулалтын DSL (домэйн-тусгай хэл) ашигладаг бөгөөд логикийг хянах боломжтой, уншихад ойлгомжтой синтаксаар бичих ба ажиллах хурдыг сайн хадгалдаг.
Дүрэм бүр нөхцөл ба үйлдлийн хослол юм:
- Нөхцөл (condition) нь дүрэм хэзээ хамаарахыг тодорхойлно.
- Үйлдэл (action) нь нөхцөл биелэхэд юу хийхийг заана.
Дүрэм бичихдээ өгөгдлийн төрлийг ойлгох нь чухал. Өгөгдлийн төрөл нь талбар ямар утга (текст, тоо, IP хаяг гэх мэт) агуулахыг, мөн дүрэм дотор тэр утгыг хэрхэн боловсруулж болохыг тодорхойлно.
Pipeline rule нь төрөл хөрвүүлэх, текст боловсруулах, JSON задлах, lookup table-ийн өгөгдөл авах зэрэг тодорхой ажил гүйцэтгэдэг урьдчилан бэлтгэсэн функцүүдээр бүтдэг. Security Data Lake нь лог өгөгдлийг баяжуулах, хувиргах, удирдахад туслах олон төрлийн суурилагдсан функцтэй.
Дүрмийг rule builder интерфейсээр интерактив байдлаар үүсгэж, турших, эсвэл ахисан түвшний хэрэглэгчид source code editor-т гараар бичиж болно.
Pipeline-ийн жишээ
Дараах жишээнд pipeline болон түүний дүрмүүд дотроо хэрхэн бүтдэгийг харуулав:
pipeline "My new pipeline"
stage 1 match all
rule "has firewall fields";
rule "from firewall subnet";
stage 2 match either
rule "geocode IPs";
rule "anonymize source IPs";
endЭнэ pipeline хоёр stage тодорхойлсон:
- Stage 1 нь жагсаасан бүх дүрэм үнэн (true) үнэлэгдсэн тохиолдолд л ажиллана.
- Stage 2 нь дүрмүүдийн аль нэг нь таарвал ажиллана (OR нөхцөлтэй адил).
Stage-үүд тоо өсөх дарааллаар ажиллах ба тус бүр дахин ашиглагдах дүрмийг дуудаж болно. Ингэснээр модульчилсан загвар бий болно: has firewall fields зэрэг дүрмийг олон pipeline-д хуваалцаж, давхардлаас зайлсхийнэ.
Дүрмийн жишээ
Дээрх pipeline-д дурдсан хоёр дүрмийн жишээ:
Rule 1
rule "has firewall fields"
when
has_field("src_ip") && has_field("dst_ip")
then
endRule 2
rule "from firewall subnet"
when
cidr_match("10.10.10.0/24", to_ip($message.gl2_remote_ip))
then
endХоёр дүрэм хоёулаа нөхцөлөө суурилагдсан функцээр тодорхойлсон:
has_field()нь мессежид тодорхой талбар байгаа эсэхийг шалгана.cidr_match()нь IP хаяг тодорхой дэд сүлжээнд (subnet) багтаж байгаа эсэхийг үнэлнэ.
to_ip() хөрвүүлэлт нь утгыг текст биш IP хаяг гэж тайлбарлахыг баталгаажуулдаг. Энэ нь Security Data Lake дүрмийг шалгахдаа төрлийг чанд баримталдгийг харуулж байна.
Эдгээр дүрэмд үйлдэл байхгүй (then хоосон), учир нь тэдгээрийг зөвхөн pipeline-ийн урсгалыг удирдахад ашигладаг.
Нөхцөл (Conditions)
Дүрмийн when хэсэг нь мессеж бүрийн хувьд үнэлэгддэг Boolean илэрхийлэл юм.
Энэ нь логик операторууд AND (&&), OR (||), NOT (!)-ыг, мөн <, <=, >, >=, ==, != зэрэг харьцуулах операторуудыг дэмжинэ.
Жишээ нь:
has_field("src_ip") && cidr_match("10.0.0.0/8", to_ip($message.src_ip))Нөхцөлд байхгүй функц дурдсан бол нөхцөл автоматаар false гэж үнэлэгдэнэ.
Талбаруудыг харьцуулахдаа хоёулаа ижил төрөлтэй эсэхийг шалга. Жишээ нь:
to_string($message.src_ip) == to_string($message.dst_ip)Үйлдэл (Actions)
then хэсэг нь нөхцөл true гэж үнэлэгдсэн үед юу болохыг тодорхойлно.
Үйлдэл нь дараах хэлбэртэй байж болно:
- Функц дуудах, жишээ нь
set_field("type", "firewall_log"); - Хувьсагчид утга оноох, жишээ нь
let subnet = to_string($message.network);
Хувьсагч нь түр зуурын утгыг хадгалж дахин ашиглах, дахин тооцоолохоос зайлсхийх, дүрмийг илүү ойлгомжтой болгох боломж олгоно.
Нөөцлөгдсөн үгс
Дүрмийн хэлний зарим токен нөөцлөгдсөн тул хувьсагчийн нэр болгон ашиглах боломжгүй. Үүнд:
AllEitherPassAndOrNotPipelineRuleDuringStageWhenThenEndLetMatch
Жишээ нь:
let match = regex(a,b);нь match нөөцлөгдсөн үг учир алдаа өгнө.
Өгөгдлийн төрлүүд
Security Data Lake нь буруу үйлдлээс сэргийлэхийн тулд pipeline rule-д төрлийн аюулгүй байдлыг (type safety) хангадаг. Дараах суурилагдсан өгөгдлийн төрлүүдийг дэмжинэ:
- string — UTF-8 текст утга
- double — Хөвөгч таслалтай тоо (Java Double)
- long — Бүхэл тоо (Java Long)
- boolean — Үнэн эсвэл худал утга
- void — Утга буцаадаггүй функц
- ip — IP хаяг (InetAddress-ийн дэд олонлог)
Plugin-үүд нэмэлт төрөл тодорхойлж болно. to_ угтвартай хөрвүүлэх функцүүд (жишээ нь to_string(), to_ip(), to_long()) нь төрлийг зөв боловсруулахыг хангана. Функцүүдийн бүрэн жагсаалтыг Functions reference хэсгээс үзнэ үү.
`set_field("timestamp", to_string(
$message.@extracted_timestamp));`Pipeline rule бүтээх
Pipeline нь Security Data Lake-ээр дамжих мессежийг хэрхэн боловсруулахыг тодорхойлдог дүрмүүдээр бүтдэг. Дүрэм бүр нөхцөл ба үйлдлийг заах ба тодорхой шалгуураар лог өгөгдлийг шүүх, баяжуулах, хувиргах, чиглүүлэх боломж олгоно.
Дүрмийг тохируулахдаа rule builder эсвэл source code editor ашиглан «when» нөхцөл ба «then» үйлдлийг хослуулж, мессежийг яг хэрхэн боловсруулахыг тодорхойлно. Дүрмүүдийг үүсгэсний дараа pipeline-д нэмж, stage-үүдэд хуваан, stream-үүдтэй холбож болно. Ингэснээр ирснээс нь хадгалах хүртэл мессежийн боловсруулалтыг уян хатан, автоматаар удирдана.
Энэ нийтлэлд pipeline rule үүсгэх, удирдах үйл явцыг тайлбарлав.
Message Processor-ийг тохируулах
Pipeline rule бүтээж эхлэхээсээ өмнө message processor идэвхжсэн, зөв тохируулагдсан эсэхийг шалга:
- System > Configurations руу очно.
- Message Processors-ийг сонгоно.
- Edit configurations-ийг сонгож, Pipeline Processor-ийн хажуугийн нүдийг тэмдэглэн идэвхжүүлнэ.
- Pipeline Processor-ийг Message Filter Chain-ийн дараа орох байдлаар чирнэ. Зүүн талын зургаан цэгээс барьж чирнэ.
- Update configuration-ийг дарна.
Дүрэм үүсгэх, удирдах
Дүрмийг Rule Builder эсвэл Source Code Editor-оор бүтээж болно.
Rule Builder (үндсэн харагдац) нь дүрмийг чиглүүлэн, харааны аргаар үүсгэх боломж олгоно.
Гараар засварлах горимд шилжихийн тулд үүсгэх цэснээс Use Source Code Editor-ийг сонгоно.
Rule Builder-ээр дүрэм үүсгэх
Rule Builder нь Security Data Lake-ийн интерфейс дотроос дүрмийг харааны, бүтэцлэгдсэн аргаар бичих боломж олгоно.
Дүрэм бүр «when → then» энгийн хэв маягтай:
- When нь дүрмийг ажиллуулах нөхцөлийг тодорхойлно.
- Then нь нөхцөл биелэхэд хийх үйлдлийг тодорхойлно.
Хоёр талбар хоёулаа хайх боломжтой унадаг жагсаалттай. Функцийн нэрийн эхний хэдэн үсгийг бичихэд санал болгох функцүүд болон товч тайлбар гарч ирнэ. Бүрэн жагсаалтыг Functions баримтаас үзнэ үү.
Rule Builder-ээр дүрэм бүтээхийн тулд дараах алхмуудыг дагана:
- System > Pipelines > Manage Rules руу очно.
- Create Rule-ийг сонгоно.
- when нөхцөл үүсгэнэ.
GELF input-оор хүлээн авсан мессежээс fortigate_pattern талбарыг хасах бол нөхцөлийг Check if message arrived on input GELF гэж тохируулна.
- (Заавал биш) Нэмэлт нөхцөл нэмж, When хэсгийн баруун дээд буланд байгаа and эсвэл or операторуудаар холбож болно.
- Үйлдлийг заасан then нөхцөл үүсгэнэ.
Дүрмийг remove field функц руу тохируулж, талбарын нэрийг оруулж болно.
Then нөхцөл утга үүсгэвэл гаралтын хувьсагчид автоматаар харагдах ба дараагийн нөхцөлд дахин ашиглаж болно.
Source Code Editor-оор дүрэм үүсгэх
Дүрмийг Source Code Editor-т when, then нөхцөлүүдийг ашиглан гараар бичиж болно. Энэ харагдац нь синтаксийг бүрэн засварлах боломжтой бөгөөд функцүүдийг тайлбартай нь хамт товч лавлах жагсаалтаар харуулна.
Source Code Editor-оор дүрэм үүсгэхийн тулд:
- System > Pipelines > Manage Rules руу очно.
- Create Rule-ийг сонгоно.
- Хуудасны баруун дээд хэсгээс Use Source Code Editor-ийг сонгоно.
- Дүрмээ тохируулна.
> Тэмдэглэл: Синтаксийн дэлгэрэнгүйг Pipeline Rule Logic хэсгээс үзнэ үү.
- Create rule-ийг сонгоно.
Rule Builder-ийн нэгэн адил дүрмээ хадгалахын өмнө Rule Simulation модульд баталгаажуулж болно.
Pipeline дүрмийг симуляц хийх
Симуляц нь дүрмийг ашиглалтад оруулахаас өмнө турших боломж олгоно. Бүтэн мессеж эсвэл зөвхөн нэг талбарыг симуляц хийж болно. Симуляцийн талбарт түүхий мессежийн мөр, key-value хос эсвэл JSON өгөгдөл оруулна.
Симуляторт оноогдсон гаралтын хувьсагчид болон боловсруулсан үр дүнг алхам алхмаар харуулна.
Симуляц ажиллуулахын тулд:
- System > Pipelines > Simulator руу очно.
- Run Rule Simulation-ийг сонгоно.
- Жишээ мессеж оруулна.
- Боловсруулсан гаралтыг шалгана.
- Шаардлагатай бол дүрмээ дахин тохируулж эсвэл сэргээгээд дахин ажиллуулна.
Бусад хэсэг
Энэ хуудсанд гарсан нэр томъёо
- Network
- Таны байгууллагын бүх төхөөрөмжийн жагсаалт (Inventory)
