Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure İzleyici'deki dönüştürmeler, gelen verileri Log Analytics çalışma alanına gönderilmeden önce filtrelemenize veya değiştirmenize olanak sağlar. Bu makalede, kendi dönüşümlerinizi oluşturmaya başlamak için kullanabileceğiniz yaygın senaryolara yönelik örnek sorgular sağlanır. Bu dönüştürmeleri test etme ve bunları bir veri toplama kuralına (DCR) ekleme hakkında ayrıntılı bilgi için Azure İzleyici'da dönüştürme oluşturma bölümüne bakın.
Veri maliyetlerini azaltma
Log Analytics çalışma alanına gönderilen tüm veriler için ücretlendirildiğiniz için maliyetlerinizi azaltmak için gerekmeyen verileri filtrelemek istersiniz.
Veri satırlarını filtreleme
Belirli gereksinimlerle eşleşen gelen verileri filtrelemek için bir where deyimi kullanın. Eğer gelen kayıt ifadeyle eşleşmiyorsa, kayıt hedefe gönderilmez. Aşağıdaki örnekte yalnızca önem derecesine Critical sahip kayıtlar toplanır.
source | where severity == "Critical"
Veri sütunlarını filtreleme
Veri alımı maliyetlerinden tasarruf etmek için gerekli olmayan sütunları veri kaynağından kaldırın. Çıkışınızdaki sütunları belirtmek için bir project deyim kullanın veya yalnızca kaldırılacak sütunları belirtmek için kullanın project-away . Aşağıdaki örnekte sütun RawData çıktıdan kaldırılmıştır.
source | project-away RawData
Bir sütundaki önemli verileri ayrıştırma
Önemli verilerin aşırı metinle gömüldüğü bir sütuna sahip olabilirsiniz. Yalnızca değerli verileri tutun ve gerekli olmayan metni kaldırın. İstediğiniz verileri ayrıştırmak için substring ve extract gibi dize işlevlerini kullanın.
parse veya split kullanarak da verileri ayrıştırabilir, tek bir sütunu birden çok değere bölebilir ve istediğiniz değeri seçebilirsiniz. Ardından, ayrıştırılmış verilerle yeni bir sütun oluşturmak ve extend özgün sütunu kaldırmak için kullanınproject-away.
Uyarı
Karmaşık ayrıştırma komutlarını kullanmaya ilişkin ipuçları için Büyük ayrıştırma komutlarını ayırma bölümüne bakın.
Aşağıdaki örnekte, RequestContext sütunu çalışma alanının ResourceId'sini içeren JSON verilerini içerir.
parse_json ve split işlevleri, çalışma alanının basit adını ayıklamak için kullanılır. Bu değer için yeni bir sütun oluşturulur ve diğer sütunlar kaldırılır.
source
| extend Context = parse_json(RequestContext)
| extend Workspace_CF = tostring(Context['workspaces'][0])
| extend WorkspaceName_CF = split(Workspace_CF,"/")[8]
| project-away RequestContext, Context, Workspace_CF
Satırları temel günlüklere gönder
Verilerinizde temel sorgulama özellikleri gerektiren satırları, daha düşük veri alma maliyeti için temel günlük tablolarına gönderin. Birden çok tabloya veri gönderme hakkında ayrıntılı bilgi için bkz. Birden çok tabloya veri gönderme.
Hassas verileri kaldırma
Gizlilik veya uyumluluk nedeniyle depolanmasını istemediğiniz bilgileri gönderen bir veri kaynağınız olabilir.
Hassas bilgileri filtreleme
Hassas bilgiler içeren satırların veya belirli sütunların tamamını filtrelemek için Veri maliyetlerini azaltma başlığında açıklanan stratejilerin aynısını kullanın. Aşağıdaki örnekte sütun ClientIP çıktıdan kaldırılmıştır.
source | project-away ClientIP
Gizli bilgileri gizleme
IP adresi veya telefon numarasındaki basamaklar gibi bilgileri ortak bir karakterle değiştirmek için dize işlevlerini kullanın. Aşağıdaki örnek, bir e-posta adresindeki kullanıcı adını "*****" ile değiştirir.
source | extend Email = replace_string(Email,substring(Email,0,indexof(Email,"@")),"*****")
Alternatif tabloya gönderme
Hassas kayıtları farklı rol tabanlı erişim denetimi yapılandırmasına sahip alternatif bir tabloya gönderin. Birden çok tabloya veri gönderme hakkında ayrıntılı bilgi için bkz. Birden çok tabloya veri gönderme.
Verileri zenginleştirme
İş bağlamı sağlayan veya daha sonra verileri sorgulamayı basitleştiren verilere bilgi eklemek için dönüştürme kullanın.
Dize işlevlerini kullanarak bir sütundan kritik bilgileri ayıklayın ve ardından deyimini extend kullanarak veri kaynağına yeni bir sütun ekleyin. Aşağıdaki örnek, başka bir sütundaki IP adresinin iç mi yoksa dış mı olduğunu tanımlayan bir sütun ekler.
source | extend IpLocation = iff(split(ClientIp,".")[0] in ("10","192"), "Internal", "External")
Verileri normalleştirme
Microsoft Sentinel tarafından kullanılan Gelişmiş Güvenlik Bilgileri Modeli (ASIM) gibi sorgulama ve raporlamayı basitleştirmek için verileri ortak bir şemada normalleştirin. Alma zamanında verileri normalleştirmek için alma zamanı normalleştirmesi bölümünde açıklandığı gibi bir dönüştürme kullanın.
Aşağıdaki örnekte, gelen veriler ASimAuditEventLogs tablosunun normalleştirilmiş şemasına dönüştürülür.
source
| project TimeGenerated = timestamp, EventOwner=owner, EventMessage=message, EventResult=result, EventSeverity=severity
Hedef için verileri biçimlendirme
Hedef tablonun yapısıyla eşleşmeyen bir biçimde veri gönderen bir veri kaynağınız olabilir. Verileri gerekli şemaya yeniden biçimlendirmek için dönüştürme kullanın.
Şemayı değiştirme
Gelen verilerin şemasını hedef tabloyla eşleşecek şekilde değiştirmek için ve extend gibi project komutları kullanın. Aşağıdaki örnekte, geçerli saati döndürmek için KQL işlevi kullanılarak giden verilere adlı TimeGenerated yeni bir sütun eklenir.
source | extend TimeGenerated = now()
Verileri ayrıştırma
Hedef tabloda verileri birden çok sütuna ayrıştırmak için split veya parse işlecini kullanın. Aşağıdaki örnekte, gelen veriler, hedef tablo için ayrı sütunlara ayrılmış adlı RawData virgülle ayrılmış bir sütuna sahiptir. İşleme süresini kısaltmak için büyük ayrıştırma komutlarını ayırma.
source
| project d = split(RawData,",")
| project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])
Çok aşamalı dönüştürme örnekleri (önizleme)
Important
Çok aşamalı dönüştürmeler şu anda genel önizleme aşamasındadır. Beta veya önizleme aşamasında olan ya da başka bir şekilde henüz genel kullanıma sunulmamış olan Azure özelliklerinde geçerli olan yasal koşullar için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.
Aşağıdaki örneklerde işlemci tabanlı çok aşamalı dönüşümler gösterilmektedir. Her örnek, DCR tanımının bölümünü gösterir transformations . DCR’nin tam yapısı ve bu dönüşümlere veri kaynakları ile veri akışlarından nasıl başvurulacağı hakkında bilgi için, çok aşamalı dönüşüm oluşturma konusuna bakın.
İstemci tarafında syslog’u facility değerine göre filtreleme
Syslog kayıtlarını ağ üzerinden göndermeden önce yalnızca auth ve authpriv olaylarını saklamak için istemci tarafında filtreleyin.
{
"name": "client_filter_auth",
"headerProcessor": {
"processor": "header.Syslog",
"configuration": {}
},
"processors": [
{
"processor": "filter.Basic",
"configuration": {
"any": [
{
"all": [
{
"columnName": "Facility",
"operator": "==",
"value": "auth"
}
]
},
{
"all": [
{
"columnName": "Facility",
"operator": "==",
"value": "authpriv"
}
]
}
]
}
}
]
}
Windows Olaylarından JSON alanlarını ayrıştırma
Windows Olayları'nın EventData sütunundaki bir JSON yükünden yapılandırılmış alanları ayıklayın.
{
"name": "client_parse_windows_events",
"headerProcessor": {
"processor": "header.WindowsEvents",
"configuration": {}
},
"processors": [
{
"processor": "parse.XmlPath",
"configuration": {
"columnName": "RawXml",
"all": [
{
"path": "/Event/System/EventID",
"nameAs": "EventID",
"typeAs": "int"
},
{
"path": "/Event/EventData/Data[@Name='SubjectUserName']",
"nameAs": "SubjectUserName",
"typeAs": "string"
}
]
}
},
{
"processor": "map.Drop",
"configuration": {
"columnNames": ["RawXml", "RenderingInfo"]
}
}
]
}
Performans sayaçlarını toplama
5 dakikalık bir süre boyunca değerleri özetleyerek veri hacmini azaltmak için istemci tarafında performans sayacı verilerini toplama.
{
"name": "client_aggregate_perf",
"headerProcessor": {
"processor": "header.WindowsPerformanceCounters",
"configuration": {}
},
"processors": [
{
"processor": "aggregate.Basic",
"configuration": {
"batchingSettings": {
"timeWindow": "5m",
"maxBatchRows": 1000
},
"aggregates": [
{
"columnName": "CounterValue",
"operator": "avg",
"nameAs": "AvgValue"
},
{
"columnName": "CounterValue",
"operator": "max",
"nameAs": "MaxValue"
},
{
"operator": "count",
"nameAs": "SampleCount"
}
],
"dimensionColumns": ["CounterName", "Instance"]
}
}
]
}
Important
Toplama, çıkış şemasını tamamen değiştirir. Toplanan verileri ayrı bir özel tabloya yönlendirme.
Syslog'dan CEF özniteliklerini ayıklama
Genellikle güvenlik cihazı verileri için kullanılan syslog iletilerinden CEF (Ortak Olay Biçimi) özniteliklerini ayıklayın.
{
"name": "client_parse_cef",
"headerProcessor": {
"processor": "header.Syslog",
"configuration": {}
},
"processors": [
{
"processor": "parse.CEFAttribute",
"configuration": {
"columnName": "Message",
"all": [
{
"path": "deviceAction",
"nameAs": "DeviceAction",
"typeAs": "string"
},
{
"path": "sourceAddress",
"nameAs": "SourceIP",
"typeAs": "string"
},
{
"path": "destinationAddress",
"nameAs": "DestinationIP",
"typeAs": "string"
}
]
}
},
{
"processor": "enrich.DNSLookup",
"configuration": {
"columnName": "SourceIP",
"nameAs": "SourceDNSName"
}
}
]
}
Alma zamanı KQL dönüştürmesi
Veri alımı sırasında standart bir akışa KQL ifadesi uygulayın. Bu, eski transformKql özelliğinden bir geçiş yolu sağlar.
{
"name": "ingestion_kql_syslog",
"headerProcessor": {
"processor": "header.StandardStream",
"configuration": {
"streamId": "Microsoft-Syslog"
}
},
"processors": [
{
"processor": "transform.KQL",
"configuration": {
"expression": "source | where SeverityLevel != 'info' | extend EnrichedMsg = strcat(HostName, ': ', SyslogMessage)"
}
}
]
}
Syslog to CommonSecurityLog iki aşamalı yaklaşım
İki aşamalı bir yaklaşım kullanarak syslog verilerini dönüştürün ve CommonSecurityLog olarak içeri alın. İstemci tarafı dönüşümü CEF özniteliklerini ayrıştırır ve alım tarafı dönüşümü verileri CommonSecurityLog tablosunun şemasına eşler.
İstemci tarafı dönüştürme:
{
"name": "client_cef_extract",
"headerProcessor": {
"processor": "header.Syslog",
"configuration": {}
},
"processors": [
{
"processor": "parse.CEFAttribute",
"configuration": {
"columnName": "Message",
"all": [
{
"path": "deviceAction",
"nameAs": "DeviceAction",
"typeAs": "string"
}
]
}
}
]
}
Alım zamanı dönüşümü:
{
"name": "ingestion_map_to_csl",
"headerProcessor": {
"processor": "header.StandardStream",
"configuration": {
"streamId": "Microsoft-CommonSecurityLog"
}
},
"processors": [
{
"processor": "transform.KQL",
"configuration": {
"expression": "source | extend DeviceAction = DeviceAction"
}
}
]
}