Gelişmiş Güvenlik Bilgi Modeli (ASIM) ayrıştırıcıları geliştirme

Gelişmiş Güvenlik Bilgileri Modeli (ASIM) kullanıcıları sorgularında tablo adları yerine birleştirici ayrıştırıcılar kullanır, verileri normalleştirilmiş biçimde görüntüler ve şemayla ilgili tüm verileri sorguya ekler. Birleştirici ayrıştırıcılar ise, her kaynağa özgü ayrıntıları işlemek için kaynağa özgü ayrıştırıcılar kullanır.

Microsoft Sentinel, birçok veri kaynağı için yerleşik, kaynağa özgü ayrıştırıcılar sağlar. Aşağıdaki durumlarda bu kaynağa özgü ayrıştırıcıları değiştirmek veya geliştirmek isteyebilirsiniz:

  • Cihazınız bir ASIM şemasına uyan olaylar sağladığında, ancak cihazınız için kaynağa özgü ayrıştırıcı ve ilgili şema Microsoft Sentinel'da mevcut olmadığında.

  • ASIM kaynaklarına özgü ayrıştırıcılar cihazınız için mevcutsa, ancak cihazınız olayları ASIM ayrıştırıcılarının beklediğinden farklı bir yöntem veya formatta gönderiyorsa. Örneğin:

    • Kaynak cihazınız olayları standart olmayan bir şekilde gönderecek şekilde yapılandırılabilir.

    • Cihazınız ASIM ayrıştırıcısı tarafından desteklenenden farklı bir sürüme sahip olabilir.

    • Olaylar bir aracı sistem tarafından toplanabilir, değiştirilebilir ve iletilebilir.

Ayrıştırıcıların ASIM mimarisine nasıl uygun olduğunu anlamak için ASIM mimari diyagramına bakın.

Özel ASIM ayrıştırıcı geliştirme süreci

Aşağıdaki iş akışı, kaynağa özgü özel bir ASIM ayrıştırıcısı geliştirmenin üst düzey adımlarını açıklar:

  1. Örnek günlükleri toplayın.

  2. Kaynaktan gönderilen olayların temsili şemaları veya şemaları tanımlayın. Daha fazla bilgi için bkz . Şemaya genel bakış.

  3. Kaynak olay alanlarını tanımlanan şema veya şemalarla eşleyin .

  4. Kaynağınız için bir veya daha fazla ASIM ayrıştırıcısı geliştirin . Kaynakla ilgili her şema için bir filtreleme ayrıştırıcısı ve parametresiz ayrıştırıcı geliştirmeniz gerekir.

  5. Ayrıştırıcınızı test edin.

  6. Deploy ayrıştırıcıları Microsoft Sentinel çalışma alanlarınıza ekleyin.

  7. İlgili ASIM birleştirme ayrıştırıcısını, yeni özel ayrıştırıcıyı referans alacak şekilde güncelleyin. Daha fazla bilgi için bkz. ASIM ayrıştırıcılarını yönetme.

  8. Ayrıştırıcılarınızla ASIM’in ana dağıtımına katkıda bulunmak da isteyebilirsiniz. Katkı olarak eklenen ayrıştırıcılar, tüm çalışma alanlarında yerleşik ayrıştırıcılar olarak da kullanılabilir.

Bu makale, sürecin geliştirme, test ve dağıtım adımları konusunda size yol gösterir.

Örnek günlükleri toplama

Etkili ASIM ayrıştırıcıları oluşturmak için, çoğu durumda kaynak sistemin ayarlanmasını ve Microsoft Sentinel bağlanmasını gerektiren temsili bir günlük kümesine ihtiyacınız vardır. Kaynak cihaz elinizde yoksa, bulut tabanlı "kullandıkça öde" hizmetleri geliştirme ve test için birçok cihaz dağıtmanıza olanak tanır.

Ayrıca, günlükler için satıcı belgelerini ve örneklerini bulmak, geniş günlük biçimi kapsamı sağlayarak geliştirmeyi hızlandırmaya ve hataları azaltmaya yardımcı olabilir.

Temsili bir günlük kümesi şunları içermelidir:

  • Farklı olay sonuçlarına sahip olaylar.
  • Farklı yanıt eylemlerine sahip olaylar.
  • Kullanıcı adı, ana bilgisayar adı, kimlikler ve değer normalleştirmesi gerektiren diğer alanlar için farklı biçimler.

Tip

Aynı şema için mevcut bir ayrıştırıcıyı kullanarak yeni bir özel ayrıştırıcı başlatın. Var olan ayrıştırıcının kullanılması, şemanın gerektirdiği tüm parametreleri kabul etmelerini sağlamak için ayrıştırıcıları filtrelemek için özellikle önemlidir.

Haritalamayı planlama

Ayrıştırıcı geliştirmeden önce, kaynak olay veya olaylarda bulunan bilgileri tanımladığınız şemayla eşleyin:

  • Tüm zorunlu alanları ve tercihen önerilen alanları eşleyin.
  • Kaynaktan sağlanan tüm bilgileri normalleştirilmiş alanlarla eşlemeyi deneyin. Seçilen şemanın bir parçası olarak kullanılamıyorsa, diğer şemalarda bulunan alanlarla eşlemeyi göz önünde bulundurun.
  • Kaynakta alanların değerlerini ASIM tarafından izin verilen normalleştirilmiş değerlerle eşleyin. Özgün değer, gibi EventOriginalResultDetailsayrı bir alanda depolanır.

Ayrıştırıcı geliştirme

Her ilgili şema için hem filtreleme hem de parametresiz ayrıştırıcı geliştirin.

Özel ayrıştırıcı, Microsoft Sentinel Logs sayfasında geliştirilen bir KQL sorgusudur. Ayrıştırıcı sorgusunun üç bölümü vardır:

Filtrele>Ayrıştır>Alanları hazırla

Ayrıştırıcı işlemlerini kayıt yerelinde tut

Her kaynak kaydı bağımsız olarak normalleştirin. Bir kaynak kayıt, filtreleme sonrası sıfır kayıt veya bir normalize kayıt üretebilir.

  • Sadece ilan edilen kaynak tablodan olay kayıtlarını okuyun. İkinci bir tablo okuması, olay kaydı join, çalışma alanı tablosu veya izleme listesi başvurusu, externaldata, ya da başka bir harici tablo kaynağı kullanarak aynı tablo içi veya tablolar arası olay zenginleştirmesi gerçekleştirmeyin.
  • Kayıt kardinalitesini koru. Bir kaynak kaydı birden fazla normalize edilmiş kayda dönüştürmeyin. Kaynak birden fazla mantıksal olayı tek bir kayıtta birleştiriyorsa, bağlayıcıyı veya kaynak olay formatını düzeltin.
  • mv-apply ve mv-expand dahil olmak üzere hiçbir mv-* operatörü kullanmayın.
  • Olay kayıtlarını summarize, distinct, arg_min, arg_max ya da buna eşdeğer bir işlemle ilişkilendirmeyin, tekilleştirmeyin, toplulaştırmayın veya yeniden toplulaştırmayın.

Her arama anahtarı benzersiz olduğunda, datatable ile oluşturulan ve lookup ile uygulanan sorguya özgü statik eşlemelere izin verilir. Skaler ifadeler, dinamik değerlere doğrudan erişim ve mevcut satırda bulunan değerler kullanın. Bir alan yasaklı bir desen olmadan haritalanamıyorsa, bağlantı veya kaynak olay şeklini düzeltin ya da zorunlu olmayan bir alanı haritalanmamış bırakın.

Filtreleme

İlgili kayıtları filtreleme

Çoğu durumda, Microsoft Sentinel içindeki bir tablo birden çok olay türü içerir. Örneğin:

  • Syslog tablosunda birden çok kaynaktan veriler bulunur.
  • Özel tablolar, birden fazla olay türü sağlayan ve çeşitli şemalara sığabilen tek bir kaynaktan bilgi içerebilir.

Bu nedenle, ayrıştırıcı öncelikle yalnızca hedef şemayla ilgili kayıtları filtrelemelidir.

KQL'de where işleci kullanılarak filtreleme yapılır. Örneğin, Sysmon olay 1 işlem oluşturmayı raporlar ve bu nedenle ProcessEvent şemasına normalleştirilir. Sysmon olay 1 olayı tablonun Event bir parçasıdır, bu yüzden aşağıdaki sorguyu kullanarak sadece Sysmon işlem oluşturma olaylarına filtrelersiniz:

Event | where Source == "Microsoft-Windows-Sysmon" and EventID == 1

Important

Ayrıştırıcı zamana göre filtre uygulamamalıdır. Ayrıştırıcıyı kullanan sorgu bir zaman aralığı uygular.

Kaynak alanlara göre filtreleme

Mevcut olayda kaynak tipini belirlemek için fiziksel alanlar kullanın. İlgili kayıtları belirlemek için bir izleme listesi veya başka bir tablo sorgulamayın.

Eğer olay, kaynağını veya olay türünü ayırt edecek kadar bilgi içermiyorsa, bağlayıcıyı bir kaynak tanımlayıcısı eklemek veya olayları kaynak özel bir tabloya yönlendirmek için güncelleyin. Eksik kaynak bilgisini tablo zenginleştirme ile telafi etmeyin.

Ayrıştırıcı parametrelerine göre filtreleme

Filtreleme ayrıştırıcıları geliştirirken, ayrıştırıcınızın ilgili şema için filtreleme parametrelerini kabul ettiğinden emin olun( bu şema için başvuru makalesinde belirtildiği gibi). Var olan bir ayrıştırıcıyı başlangıç noktası olarak kullanmak, ayrıştırıcınızın doğru işlev imzasını içermesini sağlar. Çoğu durumda, gerçek filtreleme kodu aynı şema için ayrıştırıcıları filtrelemek için de benzerdir.

Filtreleme sırasında şunları yaptığınızdan emin olun:

  • Fiziksel alanları kullanarak ayrıştırmadan önce filtreleyin. Filtrelenen sonuçlar yeterince doğru değilse, sonuçlarınıza ince ayar yapmak için ayrıştırdıktan sonra testi yineleyin. Daha fazla bilgi için bkz . filtreleme iyileştirmesi.
  • Parametre tanımlanmamışsa ve hala varsayılan değere sahipse filtre uygulamayın.

Koşullu predikatlar kullanarak isteğe bağlı ayrıştırıcı parametre filtreleme uygulanır, böylece ayrıştırıcı yalnızca çağıranlar değer sağladığında filtreleri uygular. Aşağıdaki örneklerde, varsayılan değerin genellikle '*' olduğu bir dize parametresi ve varsayılan değerin genellikle boş bir liste olduğu liste parametresi için filtrelemenin nasıl uygulanacağı gösterilmektedir.

srcipaddr=='*' or ClientIP==srcipaddr
array_length(domain_has_any) == 0 or Name has_any (domain_has_any)

array_length işlevi ve has_any işleci hakkında daha fazla bilgi için Kusto belgelerine bakın:

Filtreleme iyileştirmesi

Ayrıştırıcının performansını sağlamak için aşağıdaki filtreleme önerilerini not edin:

  • Ayrıştırılmış alanlar yerine her zaman yerleşik alanları filtreleyin. Ayrıştırılmış alanları kullanarak filtrelemek bazen daha kolay olsa da performansı önemli ölçüde etkiler.
  • İyileştirilmiş performans sağlayan işleçler kullanın. Özellikle, ==, hasve startswith. veya contains gibi matches regex işleçlerin kullanılması performansı önemli ölçüde etkiler.

Performans için filtreleme önerilerini izlemek her zaman kolay olmayabilir. Örneğin, has kullanmak, contains kullanmaktan daha az doğrudur. Diğer durumlarda, örneğin SyslogMessage gibi yerleşik bir alanı eşleştirmek, örneğin DvcAction gibi ayıklanmış bir alanı karşılaştırmaktan daha az isabetlidir. Bu gibi durumlarda, yerleşik bir alan üzerinde performans iyileştirme işleci kullanarak yine de önceden filtrelemenizi ve ayrıştırma sonrasında daha doğru koşullar kullanarak filtreyi tekrarlamanızı öneririz.

Bir örnek için aşağıdaki Infoblox DNS ayrıştırıcı kod parçacığına bakın. Ayrıştırıcı önce SyslogMessage alanında has kelimesini clientkontrol eder. Ancak, terim iletide farklı bir yerde kullanılabilir, bu nedenle alanı ayrıştırdıktan Log_Type sonra ayrıştırıcı sözcüğün client gerçekten alanın değeri olduğunu tekrar denetler.

Syslog | where ProcessName == "named" and SyslogMessage has "client"
…
      | extend Log_Type = tostring(Parser[1]),
      | where Log_Type == "client"

Note

Ayrıştırıcıyı kullanan sorgu zamana göre filtrelediğinden ayrıştırıcılar zamana göre filtre uygulamamalıdır.

Ayrıştırma

Sorgu ilgili kayıtları seçtikten sonra bunları ayrıştırmak gerekebilir. Genellikle, tek bir metin alanında birden çok olay alanı iletilirse ayrıştırma gerekir.

Ayrıştırma gerçekleştiren KQL işleçleri, performans iyileştirmelerine göre sıralanmış olarak aşağıda listelenmiştir. İlki en iyi duruma getirilmiş performansı sağlarken, sonuncusu en az iyileştirilmiş performansı sağlar.

İşleç/işlev() Description
split() işlevi Sınırlandırılmış değerlerden oluşan bir dizeyi ayrıştırın.
parse_csv() işlevi CSV (virgülle ayrılmış değerler) satırı olarak biçimlendirilmiş bir değer dizesini ayrıştırın.
parse-kv işleci Bir dize ifadesinden yapılandırılmış bilgileri ayıklar ve bilgileri bir anahtar/değer formunda temsil eder.
ayrıştırma işleci Daha iyi performansa sahip basitleştirilmiş bir desen veya normal bir ifade olabilecek bir desen kullanarak rastgele bir dizeden birden çok değeri ayrıştırma.
extract_all() işlevi Normal ifade kullanarak rastgele bir dizeden tek değerleri ayrıştırma. extract_all , ikincisinin normal bir ifade kullanması durumundakine benzer bir performansa parse sahiptir.
extract() işlevi Normal ifade kullanarak rastgele bir dizeden tek bir değer ayıklayın.

Tek bir değer gerekiyorsa, extract kullanmak parse veya extract_all kullanmaktan daha iyi performans sağlar. Ancak, aynı kaynak dize üzerinde extract öğesinin birden çok kez etkinleştirilmesi, tek bir parse veya extract_all kullanımına göre daha az verimlidir ve bundan kaçınılmalıdır.
parse_json() işlevi JSON olarak biçimlendirilmiş bir dizedeki değerleri ayrıştırın. JSON'dan yalnızca birkaç değer gerekiyorsa, parsekullanarak extractveya extract_all daha iyi performans sağlar.
parse_xml() işlevi XML olarak biçimlendirilmiş bir dizedeki değerleri ayrıştırın. XML'den yalnızca birkaç değer gerekiyorsa, parsekullanarak extractveya extract_all daha iyi performans sağlar.

Normalleştirme

Alan isimlerini eşleştirme

En basit normalleştirme biçimi, özgün bir alanı normalleştirilmiş adına yeniden adlandırmaktır. Bunun için işlecini project-rename kullanın. Proje yeniden adlandırmanın kullanılması, alanın hala fiziksel bir alan olarak yönetilmesini ve alanın işlenmesinin daha yüksek performanslı olmasını sağlar. Örneğin, aşağıdaki sorgu, kaynak hesap alanlarını normalize edilmiş ASIM aktör alan adlarına eşler:

 | project-rename
    ActorUserId = InitiatingProcessAccountSid,
    ActorUserAadId = InitiatingProcessAccountObjectId,
    ActorUserUpn = InitiatingProcessAccountUpn,

Alan biçimini ve türünü normalleştirme

Çoğu durumda, ayıklanan özgün değerin normalleştirilmesi gerekir. Örneğin, ASIM'de bir MAC adresi ayırıcı olarak iki nokta üst üste kullanırken, kaynak kısa çizgiyle ayrılmış bir MAC adresi gönderebilir. Değerleri dönüştürmek için kullanılan birincil işleç, geniş bir KQL dize, sayısal ve tarih işlevleri kümesiyle birlikte extend öğesidir.

Ayrıca ayrıştırıcı çıkış alanlarının şemada tanımlanan türle eşleştiğinden emin olmak ayrıştırıcıların çalışması için kritik önem taşır. Örneğin, tarih ve saati temsil eden bir dizeyi tarih saat alanına dönüştürmeniz gerekebilir. todatetime ve tohex gibi işlevler bu durumlarda yararlıdır.

Örneğin, özgün benzersiz olay kimliği tamsayı olarak gönderilebilir, ancak ASIM, veri kaynakları arasında geniş uyumluluk sağlamak için değerin dize olmasını gerektirir. Bu nedenle, kaynak alanını atarken, sayısal değeri project-rename yerine extend ve tostring kullanarak bir dizeye dönüştürün; böylece normalleştirilmiş alan, şemanın dize türü gereksinimine uyar:

  | extend EventOriginalUid = tostring(ReportId),

Türetilmiş alanlar ve değerler

Kaynak alanın değeri, çıkarıldıktan sonra, hedef şema alanı için belirlenen değerler kümesine eşlendirilmesi gerekebilir. Mevcut verileri hedef değerlere eşlemek için iff ve case gibi skaler ifadeleri ya da lookup ile birlikte sorguya yerel statik bir datatable kullanın.

Örneğin, Microsoft DNS ayrıştırıcısı, kaynağa özgü olay ve yanıt kodlarından normalize edilmiş başarı veya başarısızlık sonucu elde eder. Ayrıştırıcı, EventResult alanı Olay Kimliği ve Yanıt Kodu temelinde aşağıdaki gibi bir iff ifadeyle atar:

   extend EventResult = iff(EventId==257 and ResponseCode==0 ,'Success','Failure')

Bir kaynak değerin birkaç normalize değere eşlenebildiği durumlarda kullanılır case . Örneğin:

| extend NetworkProtocol = case(
    Proto == 6, "TCP",
    Proto == 17, "UDP",
    ""
)

Daha büyük statik eşlemeler için, sorguya yerel bir boyut tablosu tanımlayın ve bunu lookup ile uygulayın. Lookup ifadesinin sağ tarafı, çalışma alanı tablosu, izleme listesi veya harici veri kaynağı değil, yerel olarak tanımlanmış statik bir datatable olmalıdır. Her arama anahtarı için sadece bir satır tanımlayın ki bir kaynak kayıt birden fazla normalize kayıt üretemez. Örneğin:

let NetworkProtocolLookup = datatable(Proto:real, NetworkProtocol:string)
[
    6, "TCP",
    17, "UDP"
];
...
| lookup NetworkProtocolLookup on Proto

Zenginleştirme alanları

Kaynaktan sağlanan alanlara ek olarak, sonuçta elde edilen ASIM olayı ayrıştırıcının oluşturması gereken zenginleştirme alanlarını içerir. Bu şema alanları, mevcut satırdan veya sabitlerden alınan değerleri kullanır ve tablo zenginleştirmesi gerektirmez. Birçok durumda, ayrıştırıcılar bu alanlara sabit bir değer atabiliyor. Standart zenginleştirme alanlarını, her ayrıştırılmış kayıt tutarlı ürün, tedarikçi ve şema meta verisini içerecek şekilde doldurun, örneğin:

  | extend                  
     EventCount = int(1),
     EventProduct = 'M365 Defender for Endpoint',
     EventVendor = 'Microsoft',
     EventSchemaVersion = '0.1.0',
     EventSchema = 'ProcessEvent'

Ayrıştırıcılarınızın ayarlaması gereken başka bir zenginleştirme alanı türü, ilgili alanda depolanan değerin türünü belirleyen tür alanlarıdır. Örneğin, SrcUsernameType alanı, SrcUsername alanında depolanan değerin türünü belirtir. Varlık açıklamasında tür alanları hakkında daha fazla bilgi bulabilirsiniz.

Çoğu durumda, türlere sabit bir değer de atanır. Ancak bazı durumlarda türün gerçek değere göre belirlenmesi gerekir. Örneğin, ayrıştırılan ana bilgisayar adının birden fazla segment içerip içermediğini kontrol ederek tam nitelikli bir alan adı (FQDN) olup olmadığını belirleyin:

   DomainType = iif (array_length(SplitHostname) > 1, 'FQDN', '')

Microsoft Sentinel zenginleştirmeyi işlemek için kullanışlı işlevler sağlar. Örneğin, normalize edilmiş kaynak ana bilgisayar adı, etki alanı, etki alanı türü ve FQDN alanlarını Computer sütunundan türetmek için _ASIM_ResolveSrcFQDN yardımcı işlevini kullanın. Aşağıdaki kod parçacığı, Computer alanındaki değere göre SrcHostname, SrcDomain, SrcDomainType ve SrcFQDN alanlarını otomatik olarak doldurur.

  | invoke _ASIM_ResolveSrcFQDN('Computer')

Bu işlev alanları aşağıdaki gibi ayarlar:

Bilgisayar alanı Çıkış alanları
sunucu1 SrcHostname: server1
SrcDomain, SrcDomainType, SrcFQDN tümü boş
server1.microsoft.com SrcHostname: server1
SrcDomain: microsoft.com
SrcDomainType: FQDN
SrcFQDN:server1.microsoft.com

İşlevler _ASIM_ResolveDstFQDN ve _ASIM_ResolveDvcFQDN ilgili Dst ve Dvc alanları dolduran benzer bir görev gerçekleştirir. ASIM yardım işlevlerinin tam listesi için bkz. ASIM işlevleri

Sonuç kümesindeki alanları seçme

Ayrıştırıcı isteğe bağlı olarak sonuç kümesindeki alanları seçebilir. Gereksiz alanların kaldırılması, normalleştirilmiş alanlarla kalan kaynak alanlar arasındaki kafa karıştırıcılığı önleyerek performansı geliştirebilir ve netlik sağlayabilir.

Aşağıdaki KQL işleçleri, sonuç kümenizdeki alanları seçmek için kullanılır:

Operator Description Ayrıştırıcıda ne zaman kullanılır?
proje dışı Alanları kaldırır. Sonuç kümesinden kaldırmak istediğiniz belirli alanlar için kullanın project-away . Karışıklığa neden olmadığı veya çok büyük olduğu ve performans açısından etkileri olabileceği sürece, sonuç kümesinden normalleştirilmemiş özgün alanları kaldırmamanızı öneririz.
proje Daha önce var olan veya deyimin bir parçası olarak oluşturulmuş alanları seçer ve diğer tüm alanları kaldırır. Ayrıştırıcı normalleştirilmemiş diğer alanları kaldırmaması gerektiği için ayrıştırıcıda kullanılması önerilmez.

Ayrıştırma sırasında kullanılan geçici değerler gibi belirli alanları kaldırmanız gerekiyorsa, bunları sonuçlardan kaldırmak için kullanın project-away .

Örneğin, özel bir günlük tablosunu ayrıştırırken, kalan kaynağa özgü tipli sütunları (örneğin, _d, _s, _b veya _g soneklerine sahip alanları) kaldırın; böylece ayrıştırıcı çıktısı yalnızca tutmak istediğiniz normalleştirilmiş alanları içerir:

    | project-away
        *_d, *_s, *_b, *_g

Ayrıştırma varyantlarını işleme

Important

Farklı olay türlerini temsil eden veya farklı şemalara eşleyen varyantlar için ayrı ayrıştırıcılar geliştirin.

Aynı olay türünün varyantları farklı ayrıştırma mantığı gerektiriyorsa, her bir kaynak kayıt için tek bir çıktı kaydını koruyarak iff ve case gibi skaler koşullu ifadeler kullanın. Tablo dalları oluşturup bunları ile unionyeniden birleştirmeyin çünkü dallar aynı kaynak kaydı birden fazla kez işleyebilir veya döndürebilir.

Ayrıştırıcıları dağıtın

Ayrıştırıcıları Azure İzleyici Günlüğü sayfasına kopyalayıp sorguyu işlev olarak kaydederek el ile dağıtın. Bu yöntem test için yararlıdır. Daha fazla bilgi için bkz. İşlev oluşturma.

Çok sayıda ayrıştırıcı dağıtmak için ayrıştırıcı ARM şablonlarını aşağıdaki gibi kullanmanızı öneririz:

  1. Her şema için ilgili şablonu temel alan bir YAML dosyası oluşturun ve sorgunuzu buna ekleyin. Şemanız ve ayrıştırıcı türünüz için uygun, filtrelemeli veya parametresiz YAML şablonuyla başlayın.

  2. YAML dosyanızı ARM şablonuna dönüştürmek için ASIM YAML to ARM şablon dönüştürücüsünüzü kullanın.

  3. Güncelleştirme dağıtıyorsanız portalı veya işlev silme PowerShell aracını kullanarak işlevlerin eski sürümlerini silin.

  4. şablonunuzu Azure portal veya PowerShell kullanarak dağıtın.

Ayrıca, bağlı şablonları kullanarak birden çok şablonu tek bir dağıtım işlemiyle birleştirebilirsiniz

Tip

ARM şablonları farklı kaynakları birleştirebilir, böylece ayrıştırıcılar bağlayıcılar, analitik kurallar veya izleme listeleriyle birlikte kullanılabilir. Ayrıştırıcıyı izleme listelerinden ve diğer tablolardan bağımsız tutun.

Ayrıştırıcıları test et

ASIM, özel ayrıştırıcılarınızı doğrulamak için kullanabileceğiniz test araçları sağlar. Bununla birlikte, ayrıştırıcılar da birer koddur, bazen karmaşık olabilirler ve otomatik testlere ek olarak kod gözden geçirmeleri gibi standart kalite güvence uygulamalarının kullanılması önerilir.

ASIM test araçlarını yükleme

ASIM test aracını dağıtmadan önce, aşağıdaki Microsoft Sentinel çalışma alanınız olduğundan emin olun:

  • Ayrıştırıcınız dağıtıma alındı.
  • Ayrıştırıcı tarafından kullanılan kaynak tablo kullanılabilir.
  • Ayrıştırıcı tarafından kullanılan kaynak tablo, ilgili olaylardan oluşan çeşitli bir koleksiyonla doldurulur.

Çalışma alanınız bu gereksinimleri karşıladığında, ASIM test aracını o çalışma alanına dağıtın.

Çıkış şemasını doğrulama

Ayrıştırıcınızın geçerli bir şema oluşturduğundan emin olmak için, Microsoft Sentinel Logs sayfasında aşağıdaki şema test sorgusunu çalıştırın. Bu komut, ayrıştırıcınızın çıkış alanlarının, türlerinin ve takma adlarının beklenen ASIM şeması ile eşleşip eşleşmediğini doğrular:

<parser name> | getschema | invoke ASimSchemaTester('<schema>')

Sonuçları aşağıdaki gibi işleyin:

Error Action
Eksik zorunlu alan [<Alan>] Alanı ayrıştırıcınıza ekleyin. Çoğu durumda, bu türetilmiş bir değer veya sabit bir değer olur ve kaynakta zaten kullanılabilir bir alan olmaz.
Eksik alan [<Alan>], [<Alan>] zorunlu sütunu mevcut olduğunda zorunludur. Alanı ayrıştırıcınıza ekleyin. Çoğu durumda, bu alan başvurduğu mevcut sütunun türlerini belirtir.
Eksik olan [<Alan>] alanı, [<Alan>] sütunu mevcut olduğunda zorunludur. Alanı ayrıştırıcınıza ekleyin. Çoğu durumda, bu alan başvurduğu mevcut sütunun türlerini belirtir.
Eksik zorunlu takma ad [<Alan>], mevcut sütunu takma ad olarak kullanma [<Alan>] Parserınıza takma adı ekleyin
Mevcut sütun [<Alan>] için önerilen takma ad [<Alan>] eksik Parserınıza takma adı ekleyin
İsteğe bağlı takma ad eksik olan [<Alan>] mevcut sütunun takma adı [<Alan>] Parserınıza takma adı ekleyin
Eksik [<Alan>] sütunu için zorunlu takma ad [<Alan>] eksik Bu hata, takma ad alanındaki benzer bir hatayla birlikte görülür. Aliased alan hatasını düzelt ve bu takma adı ayrıştırıcına ekle.
[<Alan>] alanı için tür uyuşmazlığı. Şu anda [<Tür>] ve [<Tür>] olmalıdır Normalleştirilmiş alanın türünün doğru olduğundan emin olun; bunu genellikle dönüştürme işlevi olarak tostring gibi bir işlev kullanarak yaparsınız.
Bilgi Action
Önerilen alan eksik [<Alan>] Bu alanı ayrıştırıcınıza eklemeyi göz önünde bulundurun.
Bilgi Action
Önerilen diğer ad eksik [<Alan>], var olmayan sütuna diğer ad veriliyor [<Alan>] Eğer takma adlı alanı ayrıştırıcıya eklerseniz, bu takma adı da eklediğinizden emin olun.
Var olmayan sütun [<Alan>] için isteğe bağlı takma ad [<Alan>] eksik Eğer takma adlı alanı ayrıştırıcıya eklerseniz, bu takma adı da eklediğinizden emin olun.
İsteğe bağlı alan eksik [<Alan>] İsteğe bağlı alanlar genellikle eksik olsa da, isteğe bağlı alanlardan herhangi birinin kaynaktan eşlenip eşlenemediğini belirlemek için listeyi gözden geçirmeye değer.
Ekstra normalleştirilmemiş alan [<Alan>] Normal olmayan alanlar geçerli olsa da, normal olmayan değerlerden herhangi birinin isteğe bağlı bir alana eşlenip eşlenemediğini belirlemek için listeyi gözden geçirmeye değer.

Note

Hatalar, ayrıştırıcıyı kullanan içeriğin düzgün çalışmasını engeller. Uyarılar içeriğin çalışmasını engellemez, ancak sonuçların kalitesini düşürebilir.

Çıkış değerlerini doğrulama

Ayrıştırıcınızın geçerli değerler ürettiğinden emin olmak için, ayrıştırıcı çıktısının örneklemindeki alan değerlerini doğrulamak ve hata veya uyarıları belirlemek için ASIM veri testerini kullanın. Microsoft Sentinel Logs sayfasında aşağıdaki sorguyu çalıştırın:

<parser name> | limit <X> | invoke ASimDataTester ('<schema>')

Şema belirtmek isteğe bağlıdır. Bir şema belirtilmezse, EventSchema bu alan olayın uyması gereken şemayı tanımlamak için kullanılır. Bir olay bir EventSchema alan içermiyorsa, yalnızca ortak alanlar doğrulanır. Parametre olarak bir şema belirtilirse, bu şema tüm kayıtları test etmek için kullanılır. Bu, EventSchema alanını ayarlamayan eski ayrıştırıcılar için kullanışlıdır.

Note

Şema belirtilmediğinde bile işlev adından sonra boş parantezler gerekir.

Bu test yoğun kaynak kullanır ve veri kümenizin tamamında çalışmayabilir. X değerini sorgunun zaman aşımına neden olmayacak en büyük sayıya ayarlayın veya zaman aralığı seçicisini kullanarak sorgunun zaman aralığını ayarlayın.

Sonuçları aşağıdaki gibi işleyin:

Message Action
(0) Hata: [<Alan>] sütunu için tür uyuşmazlığı. Şu anda [<Tür>] ve [<Tür>] olmalıdır Normalleştirilmiş alanın türünün doğru olduğundan emin olun; bunu genellikle dönüştürme işlevi olarak tostring gibi bir işlev kullanarak yaparsınız.
(0) Hata: [<Mantıksal Tür>] türünde [<Alan>] alanı için geçersiz değerler (en fazla 10 listelenmiş) Ayrıştırıcının doğru kaynak alanını çıkış alanıyla eşlediğinden emin olun. Doğru eşlenmişse, kaynak değeri doğru türe, değere veya biçime dönüştürmek için ayrıştırıcıyı güncelleştirin. Her mantıksal türün doğru değerleri ve biçimleri hakkında daha fazla bilgi için mantıksal türler listesine bakın.

Test aracının yalnızca 10 geçersiz değerin bir örneğini listelediğini unutmayın.
(1) Uyarı: Zorunlu alandaki [<Alan>] değeri boş Zorunlu alanlar yalnızca tanımlanmakla kalmamalı, doldurulmalıdır. Geçerli kaynağın boş olduğu kayıtlar için alanın diğer kaynaklardan doldurulup doldurulamayacağını denetleyin.
(2) Bilgi: Önerilen alandaki boş değer [<Alan>] Önerilen alanlar genellikle doldurulmalıdır. Geçerli kaynağın boş olduğu kayıtlar için alanın diğer kaynaklardan doldurulup doldurulamayacağını denetleyin.
(2) Bilgi: İsteğe bağlı [<Alan>] alanındaki boş değer Diğer adla belirtilen alanın zorunlu mu yoksa önerilen mi olduğunu ve varsa diğer kaynaklardan doldurulup doldurulamayacağını denetleyin.

İletilerin çoğu, iletiyi oluşturan kayıt sayısını ve toplam örneğin yüzdesini de bildirir. Bu yüzde, sorunun öneminin iyi bir göstergesidir. Örneğin, önerilen bir alan için:

  • %90 boş değerler genel ayrıştırma sorununa işaret edebilir.
  • %25 boş değer, doğru ayrıştırılmayan bir olay değişkeni gösterebilir.
  • Birkaç boş değer göz ardı edilebilir bir sorun olabilir.

Note

Hatalar, ayrıştırıcıyı kullanan içeriğin düzgün çalışmasını engeller. Uyarılar içeriğin çalışmasını engellemez, ancak sonuçların kalitesini düşürebilir.

Ayrıştırıcılara katkıda bulunun

Ayrıştırıcıyı ana ASIM dağıtımına eklemek isteyebilirsiniz. Kabul edilirse, ayrıştırıcılar tüm müşterilerin kullanımına ASIM’in yerleşik ayrıştırıcıları olarak sunulacaktır.

Ayrıştırıcılarınıza katkıda bulunmak için:

Kabul edilen uyarıları belgeleme

ASIM test araçları tarafından listelenen uyarılar bir ayrıştırıcı için geçerli sayılırsa, kabul edilen uyarıları ayrıştırıcı YAML dosyasında İstisnalar bölümünde belgeleyin. Aşağıdaki YAML örneği, ayrıştırıcı tanımının bölümünde kabul edilen ayrıştırıcı test uyarılarının Exceptions nasıl kaydedileceğini gösterir:

Exceptions:
- Field: DnsQuery 
  Warning: Invalid value
  Exception: May have values such as "1164-ms-7.1440-9fdc2aab.3b2bd806-978e-11ec-8bb3-aad815b5cd42" which are not valid domains names. Those are related to TKEY RR requests.
- Field: DnsQuery
  Warning: Empty value in mandatory field
  Exception: May be empty for requests for root servers and for requests for RR type DNSKEY

YAML dosyasında belirtilen uyarı, ilgili ASIM test cihazı uyarı mesajının kısa biçimi olmalı ve o özel uyarıyı tanımlamak için yeterince benzersiz olmalıdır. Bu değer, otomatik test sırasında ASIM testçi uyarı mesajlarını eşleştirmek ve bu eşleşen uyarıları görmezden gelmek için kullanılır.

Örnek gönderme yönergeleri

Ayrıştırıcı sorunlarını giderirken ve ayrıştırıcıda gelecekteki güncelleştirmelerin eski örneklere uygun olduğundan emin olmak için örnek veriler gereklidir. Gönderdiğiniz örnekler ayrıştırıcının desteklediği herhangi bir olay değişkenini içermelidir. Örnek olayların tüm olası olay türlerini, olay biçimlerini ve başarılı ve başarısız etkinliği temsil eden olaylar gibi varyasyonları içerdiğinden emin olun. Ayrıca, değer biçimlerindeki varyasyonların temsil edildiklerinden emin olun. Örneğin, bir konak adı FQDN veya basit bir konak adı olarak gösterilebilirse, örnek olaylar her iki biçimi de içermelidir.

Olay örneklerini göndermek için aşağıdaki adımları kullanın:

  • Logs Ekranda, kaynak tablodan yalnızca ayrıştırıcı tarafından seçilen olayları ayıklayacak bir sorgu çalıştırın. Örneğin, Infoblox DNS ayrıştırıcısı için, yalnızca ayrıştırıcının işlediği Infoblox NIOS Syslog kayıtlarını almak için aşağıdaki sorgu kullanın:
    Syslog
    | where ProcessName == "named"
  • Sonuçları CSV'ye Aktar seçeneğini kullanarak <EventVendor>_<EventProduct>_<EventSchema>_IngestedLogs.csv adlı bir dosyaya aktarın. Burada EventProduct, EventProduct ve EventSchema, ayrıştırıcının bu alanlara atadığı değerlerdir.

  • Logs ekranında, kaynak tablo üzerinde mevcut sütunları ve türlerini incelemek için getschema komutunu çalıştırın. Bu şema bilgisini örnek verilerinizle birlikte dışa aktarın. Örneğin, Infoblox DNS ayrıştırıcısı için sorgu şöyledir:

    Syslog
    | getschema
  • CSV'ye Aktar seçeneğini kullanarak sonuçları adlı <TableName>_schema.csvbir dosyaya aktarın; burada TableName ayrıştırıcının kullandığı kaynak tablonun adıdır.

  • Her iki dosyayı da PR'nizdeki /Sample Data/ASIM klasörüne ekleyin. Dosya zaten varsa, GitHub kullanıcı adınızı adına ekleyin, örneğin: <EventVendor>_<EventProduct>_<EventSchema>_SchemaTest_<GitHubHandle>.csv

Test sonuçları gönderme yönergeleri

Ayrıştırıcının doğruluğunu doğrulamak ve bildirilen özel durumları anlamak için test sonuçları önemlidir.

Test sonuçlarınızı göndermek için aşağıdaki adımları kullanın:

  • Ayrıştırıcıları test etme bölümünde açıklandığı gibi ayrıştırıcı testlerini çalıştırın.

  • ve CSV'ye Aktar seçeneğini kullanarak test sonuçlarını sırasıyla ve <EventVendor>_<EventProduct>_<EventSchema>_SchemaTest.csv adlı <EventVendor>_<EventProduct>_<EventSchema>_DataTest.csv dosyalara aktarın.

  • Her iki dosyayı da PR'nizdeki /Parsers/ASim<schema>/Tests klasörüne ekleyin.

ASIM ayrıştırıcıları hakkında daha fazla bilgi edinin:

ASIM hakkında genel olarak daha fazla bilgi edinin: