Gelişmiş Güvenlik Bilgileri Modeli (ASIM) ayrıştırıcıları geliştirme (Genel önizleme)
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. Ayrıştırıcıları birleştirerek, her kaynağın belirli ayrıntılarını işlemek için kaynağa özgü ayrıştırıcıları da kullanabilirsiniz.
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 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'de mevcut olmadığında.
ASIM kaynağına özgü ayrıştırıcılar cihazınız için kullanılabiliyorsa ancak cihazınız olayları ASIM ayrıştırıcıları tarafından beklenenden farklı bir yöntemde veya biçimde gönderdiğinde. Örneğin:
Kaynak cihazınız olayları standart olmayan bir şekilde gönderecek şekilde yapılandırılabilir.
Cihazınızın ASIM ayrıştırıcısı tarafından desteklenenden farklı bir sürümü 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.
Önemli
ASIM şu anda ÖNİzLEME aşamasındadır. Azure Önizleme Ek Koşulları, beta, önizleme aşamasında olan veya henüz genel kullanıma sunulmamış Azure özellikleri için geçerli olan ek yasal koşulları içerir.
Özel ASIM ayrıştırıcı geliştirme süreci
Aşağıdaki iş akışında, kaynağa özgü özel bir ASIM ayrıştırıcı geliştirmenin üst düzey adımları açıklanmaktadır:
Örnek günlükleri toplayın.
Kaynaktan gönderilen olayların temsili şemaları veya şemaları tanımlayın. Daha fazla bilgi için bkz . Şemaya genel bakış.
Kaynak olay alanlarını tanımlanan şema veya şemalarla eşleyin .
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.
Ayrıştırıcınızı test edin.
Ayrıştırıcıları Microsoft Sentinel çalışma alanlarınıza dağıtın .
Yeni özel ayrıştırıcıya başvurmak için ilgili ASIM birleştirici ayrıştırıcısını güncelleştirin. Daha fazla bilgi için bkz . ASIM ayrıştırıcılarını yönetme.
Ayrıştırıcılarınızı birincil ASIM dağıtımına da katkıda bulunmak isteyebilirsiniz. Katkıda bulunan ayrıştırıcılar tüm çalışma alanlarında yerleşik ayrıştırıcılar olarak da kullanılabilir hale getirilebilir.
Bu makale, sürecin geliştirme, test ve dağıtım adımları konusunda size yol gösterir.
İpucu
Ayrıca Microsoft Sentinel Ayrıştırıcıları ve Normalleştirilmiş İçeriği Normalleştirme hakkında Ayrıntılı Web seminerini izleyin veya ilgili slayt destesini gözden geçirin. Daha fazla bilgi için bkz. Sonraki adımlar.
Ö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'e bağlanmasını gerektiren temsili bir günlük kümesine ihtiyacınız vardır. Kullanılabilir kaynak cihazınız yoksa, bulut 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ı ve kimlikler ve değer normalleştirmesi gerektiren diğer alanlar için farklı biçimler.
İpucu
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.
Eşlemeyi 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 kullanılabilen 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
EventOriginalResultDetails
ayrı 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 Günlükleri sayfasında geliştirilen bir KQL sorgusudur. Ayrıştırıcı sorgusunun üç bölümü vardır:
Ayrıştırma Hazırlama alanlarını filtrele>>
Filtreleme
İlgili kayıtları filtreleme
Çoğu durumda, Microsoft Sentinel'deki 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ının önce yalnızca hedef şemayla ilgili kayıtları filtrelemesi gerekir.
KQL'de filtreleme işleci kullanılarak where
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 bir parçasıdırEvent
, bu nedenle aşağıdaki filtreyi kullanabilirsiniz:
Event | where Source == "Microsoft-Windows-Sysmon" and EventID == 1
Önemli
Ayrıştırıcı zamana göre filtre uygulamamalıdır. Ayrıştırıcıyı kullanan sorgu bir zaman aralığı uygular.
İzleme Listesi kullanarak kaynak türüne göre filtreleme
Bazı durumlarda, olayın kendisi belirli kaynak türleri için filtrelemeye izin verecek bilgiler içermez.
Örneğin, Infoblox DNS olayları Syslog iletileri olarak gönderilir ve diğer kaynaklardan gönderilen Syslog iletilerinden ayırt etmek zordur. Bu gibi durumlarda ayrıştırıcı, ilgili olayları tanımlayan bir kaynak listesine dayanır. Bu liste Sources_by_SourceType izleme listesinde tutulur.
Ayrıştırıcılarınızda ASimSourceType izleme listesini kullanmak için ayrıştırıcı filtreleme bölümündeki işlevini kullanın _ASIM_GetSourceBySourceType
. Örneğin, Infoblox DNS ayrıştırıcısı filtreleme bölümünde aşağıdakileri içerir:
| where Computer in (_ASIM_GetSourceBySourceType('InfobloxNIOS'))
Ayrıştırıcınızda bu örneği kullanmak için:
değerini kaynağınızın kaynak bilgilerini içeren alanın adıyla değiştirin
Computer
. Syslog'a dayalı tüm ayrıştırıcılar için bunu olduğu gibiComputer
tutabilirsiniz.Belirteci
InfobloxNIOS
ayrıştırıcınız için seçtiğiniz bir değerle değiştirin. Ayrıştırıcı kullanıcılarını, seçtiğiniz değeri ve bu tür olayları gönderen kaynakların listesini kullanarak izleme listesini güncelleştirmeleriASimSourceType
gerektiğini bildirin.
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 filtrelemeyin.
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)
Kusto belgelerinde aşağıdaki öğeler hakkında daha fazla bilgi bulabilirsiniz:
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çleri kullanın. Özellikle,
==
,has
vestartswith
. veyamatches regex
gibicontains
işleçlerin kullanılması performansı önemli ölçüde etkiler.
Performans için filtreleme önerilerini izlemek her zaman kolay olmayabilir. Örneğin, kullanmak has
değerinden daha contains
az doğrudur. Diğer durumlarda, gibi SyslogMessage
yerleşik alanla eşleştirmek, gibi DvcAction
ayıklanan bir alanı karşılaştırmaktan daha az doğrudur. Bu gibi durumlarda, yerleşik bir alan üzerinde performans iyileştirme işleci kullanarak hala ön filtreleme yapmanızı ve ayrıştırdıktan sonra 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ı ilk olarak SyslogMessage'ın sözcüğünü alan has
olduğunu client
denetler. 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"
Not
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ırılıyor
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() | Açıklama |
---|---|
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 bir anahtar/değer formundaki bilgileri 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 bir ifade kullanarak tek değerleri rastgele bir dizeden 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. kullanmak extract , tek bir değer gerektiğinden parse daha extract_all iyi performans sağlar. Ancak, aynı kaynak dize üzerinde birden çok etkinleştirmenin extract kullanılması tek parse bir dizeden daha az verimlidir veya extract_all 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, parse kullanarak extract veya 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, parse kullanarak extract veya extract_all daha iyi performans sağlar. |
Normal -leştirme
Eşleme alanı adları
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 alan olarak yönetilmesini ve alanı işlemenin daha yüksek performanslı olmasını sağlar. Örneğin:
| 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ürmeye yönelik birincil işleç, çok çeşitli KQL dizesi, sayısal ve tarih işlevleriyle birlikte şeklindedir extend
.
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. ve gibi todatetime
tohex
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ı atarken yerine ve tostring
project-rename
kullanınextend
:
| extend EventOriginalUid = tostring(ReportId),
Türetilmiş alanlar ve değerler
Ayıklandıktan sonra kaynak alanın değerinin hedef şema alanı için belirtilen değer kümesine eşlenmesi gerekebilir. , case
ve lookup
işlevleriiff
, kullanılabilir verileri hedef değerlerle eşlemek için yararlı olabilir.
Örneğin, Microsoft DNS ayrıştırıcısı alanı olay kimliğine ve yanıt koduna göre aşağıdaki gibi bir iff
deyim kullanarak atarEventResult
:
extend EventResult = iff(EventId==257 and ResponseCode==0 ,'Success','Failure')
Birkaç değeri eşlemek için işlecini kullanarak eşlemeyi datatable
tanımlayın ve eşlemeyi gerçekleştirmek için kullanın lookup
. Örneğin, bazı kaynaklar sayısal DNS yanıt kodlarını ve ağ protokollerini bildirirken, şema her ikisi için de daha yaygın metin etiketleri gösterimini zorunlu hale getirir. Aşağıdaki örnek, ve lookup
kullanarak datatable
gerekli değerlerin nasıl türetilmiş olduğunu gösterir:
let NetworkProtocolLookup = datatable(Proto:real, NetworkProtocol:string)[
6, 'TCP',
17, 'UDP'
];
let DnsResponseCodeLookup=datatable(DnsResponseCode:int,DnsResponseCodeName:string)[
0,'NOERROR',
1,'FORMERR',
2,'SERVFAIL',
3,'NXDOMAIN',
...
];
...
| lookup DnsResponseCodeLookup on DnsResponseCode
| lookup NetworkProtocolLookup on Proto
Eşlemenin yalnızca iki olası değeri olduğunda da aramanın yararlı ve verimli olduğuna dikkat edin.
Eşleme koşulları daha karmaşık olduğunda , case
ve lookup
'yi birleştiriniff
. Aşağıdaki örnekte ve case
'nin nasıl birleştirildiği lookup
gösterilmektedir. Yukarıdaki lookup
örnek, arama değeri bulunamazsa alanda DnsResponseCodeName
boş bir değer döndürür. Aşağıdaki case
örnek, varsa işlemin sonucunu lookup
kullanarak ve aksi takdirde ek koşullar belirterek bunu genişletmektedir.
| extend DnsResponseCodeName =
case (
DnsResponseCodeName != "", DnsResponseCodeName,
DnsResponseCode between (3841 .. 4095), 'Reserved for Private Use',
'Unassigned'
)
Microsoft Sentinel, yaygın arama değerleri için kullanışlı işlevler sağlar. Örneğin, DnsResponseCodeName
yukarıdaki arama aşağıdaki işlevlerden biri kullanılarak uygulanabilir:
| extend DnsResponseCodeName = _ASIM_LookupDnsResponseCode(DnsResponseCode)
| invoke _ASIM_ResolveDnsResponseCode('DnsResponseCode')
İlk seçenek, arama değerini parametre olarak kabul eder ve çıkış alanını seçmenize olanak tanır ve bu nedenle genel arama işlevi olarak kullanışlıdır. İkinci seçenek ayrıştırıcılara yöneliktir, kaynak alanın adını girdi olarak alır ve bu durumda DnsResponseCodeName
gerekli ASIM alanını güncelleştirir.
ASIM yardım işlevlerinin tam listesi için ASIM işlevleri'ne bakın
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. Çoğu durumda ayrıştırıcılar alanlara sabit bir değer atayabilir, ö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ı alanda SrcUsername
depolanan değerin türünü gösterir. 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:
DomainType = iif (array_length(SplitHostname) > 1, 'FQDN', '')
Microsoft Sentinel zenginleştirmeyi işlemek için kullanışlı işlevler sağlar. Örneğin, , ve SrcFQDN
alanlarını SrcDomainType
SrcHostname
SrcDomain
alanındaki Computer
değere göre otomatik olarak atamak için aşağıdaki işlevi kullanın.
| 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 ASIM işlevleri'ne bakın
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ında kafa karışıklığını ö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 | Açıklama | 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ık oluşturmadığı veya çok büyük olmadığı ve performans üzerindeki etkileri olmadığı sürece, sonuç kümesinden normalleştirilmemiş özgün alanları kaldırmamanızı öneririz. |
proje | Daha önce var olan veya deyiminin 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, yine de tür tanımlayıcısı olan kalan özgün alanları kaldırmak için aşağıdakileri kullanın:
| project-away
*_d, *_s, *_b, *_g
Değişken ayrıştırma tutamacı
Önemli
Farklı değişkenler farklı olay türlerini temsil eder, genellikle farklı şemalarla eşlenir, ayrı ayrıştırıcılar geliştirir
Çoğu durumda, bir olay akışındaki olaylar farklı ayrıştırma mantığı gerektiren değişkenler içerir. Tek bir ayrıştırıcıda farklı varyantları ayrıştırmak için ve case
gibi iff
koşullu deyimler kullanın veya birleşim yapısı kullanın.
Birden çok değişkeni işlemek üzere kullanmak union
için, her değişken için ayrı bir işlev oluşturun ve birleşim deyimini kullanarak sonuçları birleştirin:
let AzureFirewallNetworkRuleLogs = AzureDiagnostics
| where Category == "AzureFirewallNetworkRule"
| where isnotempty(msg_s);
let parseLogs = AzureFirewallNetworkRuleLogs
| where msg_s has_any("TCP", "UDP")
| parse-where
msg_s with networkProtocol:string
" request from " srcIpAddr:string
":" srcPortNumber:int
…
| project-away msg_s;
let parseLogsWithUrls = AzureFirewallNetworkRuleLogs
| where msg_s has_all ("Url:","ThreatIntel:")
| parse-where
msg_s with networkProtocol:string
" request from " srcIpAddr:string
" to " dstIpAddr:string
...
union parseLogs, parseLogsWithUrls…
Yinelenen olayları ve aşırı işlemeyi önlemek için, her işlevin yerel alanları kullanarak, yalnızca ayrıştırması amaçlanan olayları filtreleyerek başladığından emin olun. Ayrıca gerekirse birleşimden önce her dalda proje dışında kullanın.
Ayrıştırıcıları dağıtma
Ayrıştırıcıları Azure İzleyici Günlük 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:
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, filtrelemeniz veya parametresiz için uygun OLAN YAML şablonuyla başlayın.
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.
Güncelleştirme dağıtıyorsanız portalı veya işlev silme PowerShell aracını kullanarak işlevlerin eski sürümlerini silin.
Azure portalını veya PowerShell'i kullanarak şablonunuzu dağıtın.
Ayrıca, bağlı şablonları kullanarak birden çok şablonu tek bir dağıtım işlemiyle birleştirebilirsiniz
İpucu
ARM şablonları farklı kaynakları bir araya getirebileceğinden ayrıştırıcılar bağlayıcılar, analiz kuralları veya izleme listeleriyle birlikte dağıtılabilir ve bu sayede birkaç yararlı seçeneği adlandırabilir. Örneğin, ayrıştırıcınız yanında dağıtılan bir izleme listesine başvurabilir.
Ayrıştırıcıları test et
Bu bölümde ASIM'in ayrıştırıcılarınızı test etmenizi sağlayan test araçları açıklanmaktadır. Buna göre ayrıştırıcılar kod, bazen karmaşıktır ve otomatik testlere ek olarak kod gözden geçirmeleri gibi standart kalite güvencesi uygulamaları önerilir.
ASIM test araçlarını yükleme
ASIM'yi test etmek için ASIM test aracını aşağıdaki durumlarda bir Microsoft Sentinel çalışma alanına dağıtın:
- Ayrıştırıcınız dağıtılır.
- 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.
Çıkış şemasını doğrulama
Ayrıştırıcınızın geçerli bir şema ürettiğinden emin olmak için, Microsoft Sentinel Günlükleri sayfasında aşağıdaki sorguyu çalıştırarak ASIM şema test aracını kullanın:
<parser name> | getschema | invoke ASimSchemaTester('<schema>')
Sonuçları aşağıdaki gibi işleyin:
Hata | Eylem |
---|---|
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. |
[Alan>] zorunlu sütun mevcut olduğunda eksik [<Alan>] alanı< zorunludur | Alanı ayrıştırıcınıza ekleyin. Çoğu durumda, bu alan başvurduğu mevcut sütunun türlerini belirtir. |
[<<Alan>] sütunu mevcut olduğunda eksik [Alan>] alanı 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 diğer ad [<Alan>] var olan sütunun diğer adı [<Alan>] | Diğer adı ayrıştırıcınıza ekleme |
Önerilen diğer ad eksik [<Alan>] var olan sütunun diğer adı [<Alan>] | Diğer adı ayrıştırıcınıza ekleme |
İsteğe bağlı diğer ad eksik [<Alan>] var olan sütunun diğer adı [<Alan>] | Diğer adı ayrıştırıcınıza ekleme |
Eksik zorunlu diğer ad [<Alan>] diğer adı eksik sütun [<Alan>] | Bu hata, diğer ad alanı için de benzer bir hataya eşlik eder. Diğer ad alan hatasını düzeltin ve bu diğer adı ayrıştırıcınıza ekleyin. |
[<Alan>] alanı için tür uyuşmazlığı. Şu anda [<Tür>] ve [<Tür>] olmalıdır | Normalleştirilmiş alan türünün doğru olduğundan emin olun; genellikle gibi tostring bir dönüştürme işlevi kullanarak. |
Bilgi | Eylem |
---|---|
Önerilen alan eksik [<Alan>] | Bu alanı ayrıştırıcınıza eklemeyi göz önünde bulundurun. |
Bilgi | Eylem |
---|---|
Önerilen diğer ad eksik [<Alan>] varolmayan sütun diğer adı [<Alan>] | Diğer adı alan ayrıştırıcıya eklerseniz, bu diğer adı da eklediğinizden emin olun. |
İsteğe bağlı diğer ad eksik [<Alan>] varolmayan sütun diğer adı [<Alan>] | Diğer adı alan ayrıştırıcıya eklerseniz, bu diğer 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. |
Not
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 Microsoft Sentinel Günlükleri sayfasında aşağıdaki sorguyu çalıştırarak ASIM veri test aracını kullanı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ı ig alan EventSchema
içermez, 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, alanı ayarlamayan EventSchema
eski ayrıştırıcılar için kullanışlıdır.
Not
Ş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:
İleti | Eylem |
---|---|
(0) Hata: [<Alan>] sütunu için tür uyuşmazlığı. Şu anda [<Tür>] ve [<Tür>] olmalıdır | Normalleştirilmiş alan türünün doğru olduğundan emin olun; genellikle gibi tostring bir dönüştürme işlevi kullanarak. |
(0) Hata: [<Alan>] türü [Mantıksal Tür>] 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 boş değer [<Alan>] | Zorunlu alanlar doldurulmalıdır, yalnızca tanımlanmamalı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ı alanda boş değer [<Alan>] | Diğer adı geçen 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.
Not
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 bulunma
Ayrıştırıcıyı birincil ASIM dağıtımına katkıda bulunmak isteyebilirsiniz. Kabul edilirse ayrıştırıcılar asim yerleşik ayrıştırıcıları olarak her müşterinin kullanımına sunulur.
Ayrıştırıcılarınıza katkıda bulunmak için:
- Hem filtreleme ayrıştırıcısı hem de parametresiz ayrıştırıcı geliştirin.
- Yukarıdaki Ayrıştırıcıları Dağıtma bölümünde açıklandığı gibi ayrıştırıcı için bir YAML dosyası oluşturun.
- Ayrıştırıcılarınızın tüm testlerden hatasız geçtiğine emin olun. Herhangi bir uyarı bırakılırsa, bunları ayrıştırıcı YAML dosyasında belgeleyin.
- Microsoft Sentinel GitHub deposunda aşağıdakiler dahil olmak üzere bir çekme isteği oluşturun:
- ASIM ayrıştırıcı klasörlerindeki YAML dosyalarını ayrıştırıcılarınız (
/Parsers/ASim<schema>/Parsers
) - Örnek gönderme yönergelerine göre örnek verileri temsil eder.
- Test sonuçları gönderme yönergelerine göre test sonuçları.
- ASIM ayrıştırıcı klasörlerindeki YAML dosyalarını ayrıştırıcılarınız (
Kabul edilen uyarıları belgeleme
ASIM test araçları tarafından listelenen uyarılar ayrıştırıcı için geçerli kabul edilirse, aşağıdaki örnekte gösterildiği gibi Özel Durumlar bölümünü kullanarak ayrıştırıcı YAML dosyasında kabul edilen uyarıları belgeleyin.
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ı, benzersiz olarak tanımlayan uyarı iletisinin kısa bir biçimi olmalıdır. Bu değer, otomatikleştirilmiş testler gerçekleştirirken uyarı iletilerini eşleştirmek ve yoksaymak 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 aşağıdaki sorguyu kullanın:
Syslog
| where ProcessName == "named"
CSV'ye Aktar seçeneğini kullanarak sonuçları , Where
EventProduct
,EventProduct
ve adlı<EventVendor>_<EventProduct>_<EventSchema>_IngestedLogs.csv
bir dosyaya aktarın veEventSchema
ayrıştırıcı tarafından bu alanlara atanan değerlerdir.Logs
Ekranda, şemanın veya ayrıştırıcı giriş tablosunun çıktısını alacak bir sorgu çalıştırın. Örneğin, aynı 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.csv
bir dosyaya aktarın; buradaTableName
ayrıştırıcının kullandığı kaynak tablonun adıdır.Her iki dosyayı da çekme isteğinize klasörüne
/Sample Data/ASIM
ekleyin. Dosya zaten varsa, ada GitHub tanıtıcınızı 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ı testlerini çalıştırın ve testler bölümünde açıklanmıştır.
ve CSV'ye Aktar seçeneğini kullanarak test sonuçlarını sırasıyla ve
<EventVendor>_<EventProduct>_<EventSchema>_DataTest.csv
adlı<EventVendor>_<EventProduct>_<EventSchema>_SchemaTest.csv
dosyalara aktarın.Her iki dosyayı da çekme isteğinize klasörüne
/Parsers/ASim<schema>/Tests
ekleyin.
Sonraki adımlar
Bu makalede ASIM ayrıştırıcılarının geliştirilmesi ele alınmaktadır.
ASIM ayrıştırıcıları hakkında daha fazla bilgi edinin:
- ASIM ayrıştırıcılarına genel bakış
- ASIM ayrıştırıcılarını kullanma
- ASIM ayrıştırıcılarını yönetme
- ASIM ayrıştırıcıları listesi
ASIM hakkında genel olarak daha fazla bilgi edinin:
- Microsoft Sentinel Ayrıştırıcıları ve Normalleştirilmiş İçeriği Normalleştirme hakkında Ayrıntılı Web Semineri'ni izleyin veya slaytları gözden geçirin
- Gelişmiş Güvenlik Bilgileri Modeline (ASIM) genel bakış
- Gelişmiş Güvenlik Bilgileri Modeli (ASIM) şemaları
- Gelişmiş Güvenlik Bilgileri Modeli (ASIM) içeriği