Microsoft 365 Grafik Etkinlik Günlükleri (Graph Activity Logs)
Microsoft Graph Etkinlik Günlüğü
Microsoft 365 kurulumlarındaki tüm etkinlikleri izlemek günümüzde güvenlik için çok önemlidir. Standart günlükler her zaman tüm hikayeyi göstermez, özellikle de uygulamalar ve çalışan betikler ile ilgili. Bu yüzden Microsoft Graph Etkinlik Günlüğü sistem güvenliği kritik bir konudur ve kullanımı kesinlikle önerilir.
Bu makale, bu günlük kaydı özelliğinin temellerini açıklamayı hedeflemektedir. Okuyucular, Graph Activity Log’un ne olduğunu, sunduğu içgörüleri, nasıl kurulacağını ve nasıl sorgulanacağını öğrenecekler. Bu temelleri anlamak, herhangi bir kuruluşun izleme, araştırma ve genel Microsoft 365 güvenliğini iyileştirmesi için son derece gerekli ve olmazsa olmazlar arasındadır.
Microsoft Graph Etkinlik Günlüğü Tam Olarak Nedir?
Microsoft Graph, Microsoft 365 içindeki verilere API ağ geçidi olarak hizmet veren bir araçtır. İş kolu uygulamaları, API istemcileri, SDK’lar veya hatta Outlook, Microsoft Teams ve Microsoft Entra yönetim merkezi gibi Microsoft’un kendi uygulamaları olsun, sayısız uygulamayı etkinleştiren ve çalıştıran yazılımsal bir motordur. Entra ID, Exchange Online ve SharePoint Online gibi çeşitli hizmetlerle etkileşimlerini kolaylaştırır.
Microsoft Graph Etkinlik Günlüğü, Microsoft Graph hizmetinin bir kiracı için aldığı ve işlediği tüm HTTP isteklerinin denetimi için izin sağlar.
Bu günlükler, aşağıdakiler de dahil olmak üzere her API isteği hakkında kapsamlı ayrıntıları tutar;
- API İsteği Özellikleri: GET /users, POST /me/sendMail gibi kesin uç nokta URI’si, kullanılan HTTP yöntemi ve belirlenen API sürümü de dahil olmak üzere API çağrısının kapsamlı ayrıntıları.
- Arayan Kimliği: İsteği başlatan istemci uygulamasının Uygulama Tanımlayıcısı (AppId). Bu ayrıca, devredilen kullanıcı izinleri altında yürütülen istekler için Kullanıcı Tanımlayıcısı’nı (UserId) veya uygulama izinleriyle yapılan istekler için ServicePrincipalId’yi de kapsar.
- Kimlik Doğrulama ve Yetkilendirme Nitelikleri: İstemci kimlik doğrulama yöntemini belirten ClientAuthMethod, belirteç taleplerinden türetilen Roller ve Kapsamlar ve TokenIssuedAt zaman damgası gibi kimlik doğrulama ve yetkilendirme süreçleriyle ilgili ilgili veriler.
- İstek ve Yanıt Ölçümleri: İstemci tarafından sağlanmışsa ClientRequestId, hizmet tarafından atanan benzersiz RequestId, DurationMs (istek işleme süresini milisaniye cinsinden temsil eder), 200, 403 veya 429 gibi ortaya çıkan ResponseStatusCode ve ResponseSizeBytes gibi operasyonel veri noktaları.
- Çevresel Bağlam: İstemcinin kaynak IPAdresi, UserAgent dizesi, isteği işleyen Microsoft veri merkezlerinin coğrafi konumu, DeviceId (varsa) ve AadTenantId gibi isteğin ortamına ilişkin ek bilgiler.
Günlükler, API etkinlikleri hakkında ayrıntılı bilgiler yakalayarak Microsoft 365 ortamında etkileşimlerin ve değişikliklerin nasıl gerçekleştiğine dair değerli veriler sağlar. Bu veriler, erişim ve işlemlerin izlenmesi ve analiz edilmesinde hayati bir rol oynar.
Microsoft Graph Etkinlik Günlüğü Oyunun Kurallarını Değiştiriyor
Microsoft Graph Activity Log, yöneticiler ve güvenlik ekipleri için oyunun kurallarını değiştiren bir araçtır çünkü geleneksel günlüklerin genellikle eşleşemeyeceği derinlikte API etkileşimleri görünürlüğü sunar. Kiracı içindeki onaylanmış uygulamalar ve API istemcileri tarafından yapılan her işlem hakkında kapsamlı içgörüler sunar ve kritik olarak arka plan süreçlerinden, kontrolsüz betiklerden ve diğer otomatikleştirilmiş etkinliklerden etkileşimsiz erişime kadar uzanır. Bu ayrıntılı veriler, özellikle API istekleri oturum açma bilgileri için Microsoft Entra ID ile ilişkilendirildiğinde daha eksiksiz bir denetim için kullanıcının işini kolaylaştırır.
Güvenlik operasyonları için, Grafik Etkinlik Günlükleri kullanıcı ve uygulama davranışları hakkında ayrıntılı içgörüler sunar. Tehlikeye atılan hesaplar tarafından gerçekleştirilen eylemleri izlemeye, alışılmadık API kullanımını tespit etmeye ve aşırı ayrıcalıklı veya şüpheli uygulama izinlerini ortaya çıkarmaya yardımcı olur, bu da hassas tehdit algılama ve incelemesini mümkün kılar.
Başlarken: Microsoft Graph Etkinlik Günlüklerini Etkinleştirme
Kiracı yöneticileri, Azure Monitor’daki tanılama ayarlarını kullanarak Microsoft Graph etkinlik günlüklerinin toplanmasını etkinleştirebilir. Bu günlükler daha sonra çeşitli hedeflere gönderilebilir:
- Azure Log Analytics çalışma alanı: Kusto Sorgu Dili (KQL) kullanarak analiz yapmak, panolar oluşturmak ve uyarılar ayarlamak için. (Bu, bu makaledeki sorgulamanın birincil odak noktasıdır).
- Azure Depolama hesabı: Uzun vadeli arşivleme ve uyumluluk için.
- Azure Event Hubs: Günlükleri, uyarı, analiz veya arşivleme amacıyla harici Güvenlik Bilgileri ve Olay Yönetimi (SIEM) araçlarına veya diğer özel çözümlere aktarmak için.
Log Analytics’i kullanmadan önce uygun fiyatlandırma planını seçmek önemlidir. Kullanılabilir seçenekler arasında, 100 GB/gün, 200 GB/gün gibi günlük veri alım seviyelerine göre indirimler sunan Pay-As-You-Go bulunur. Sürekli olarak yüksek veri alımı olan ortamlar için Commitment Tiers maliyetleri düşürebilir. En uygun maliyetli seçeneği belirlemek için veri kullanım eğilimleri düzenli olarak incelenmelidir . Aşağıdaki adımlar, günlükleri bir Log Analytics çalışma alanına göndermek için Microsoft Entra yönetim merkezi aracılığıyla yapılandırma sürecini ana hatlarıyla açıklamaktadır.
Entra Yönetim Merkezi üzerinden adımlar
- Microsoft Entra yönetim merkezine gidin .
- Yönetim merkezine girdikten sonra, sol taraftaki gezinme menüsünde “İzleme ve sağlık” bölümünü bulun. Bu bölümü genişletin ve ardından Tanılama ayarları’nı seçin . Şekil 1, menüde “Tanılama ayarları”nı vurgulayarak bu gezinme bölümünü göstermektedir.

Şekil 1: Microsoft Entra yönetim merkezinde “İzleme ve sağlık” altında “Tanılama ayarları”na gidin.
3. “Tanılama ayarları | Genel” sayfasında yeni bir yapılandırma oluşturma seçeneği olacak. Kurulum sürecini başlatmak için + Tanılama ayarı ekle düğmesine tıklayın. Şekil 2, günlüklerin nereye gönderileceğini tanımlamanın başlangıç noktası olan bu düğmeyi gösterir.

Şekil 2: Yeni bir günlük toplama yapılandırmasını başlatmak için kullanılan “Tanılama ayarları | Genel” sayfasındaki “+ Tanılama ayarı ekle” düğmesi
4. Bu yeni tanı ayarı için tanımlayıcı bir ad sağlamak önemli bir adımdır. “Tanı ayarı adı” alanına bir ad girin. Şekil 3’te gösterildiği gibi, alanın vurgulandığı gibi, bu yapılandırmayı daha sonra tanımlamaya yardımcı olacak herhangi bir uygun ad seçilebilir.

Şekil 3: Açıklayıcı bir “Tanı ayarı adı” sağlamak için giriş alanı
5. “Günlükler” bölümünde, özellikle “Kategoriler” içinde MicrosoftGraphActivityLogs kutusunu bulun ve işaretleyin. Bu eylem, bunların toplanıp yönlendirilecek günlükler olduğunu belirtir. Şekil 4, kullanılabilir günlük kategorileri listesinden “MicrosoftGraphActivityLogs” seçeneğinin seçildiğini açıkça gösterir.

Şekil 4: Mevcut günlük kategorilerinden “MicrosoftGraphActivityLogs” onay kutusunun seçilmesi
6. Ardından günlükler için hedef olarak Log Analytics çalışma alanına gönder’i seçin . Bu, günlüklerin KQL kullanılarak sorgulanmasını ve analiz edilmesini sağlayacaktır.
- Daha sonra açılır listeden uygun Aboneliği seçin.
- Ardından, günlüklerin depolanacağı ve analiz edileceği istenen Log Analytics çalışma alanını seçin. Uygun bir Log Analytics çalışma alanı henüz mevcut değilse, burada seçilebilmesi için önce bir tane oluşturulması gerekir .
Tüm ayrıntılar doğru bir şekilde girildikten ve seçildikten sonra, yeni tanılama ayarını uygulamak için Kaydet düğmesine tıklayın. Şekil 5, abonelik ve Log Analytics çalışma alanı için seçim alanlarına işaret eder.

Şekil 5: Hedefi (Log Analytics çalışma alanı), aboneliği, belirli çalışma alanını seçip “Kaydet”e tıklayarak tanılama ayarını sonlandırın
Günlük Akışını Doğrulayın
Microsoft Graph Activity Logs’un akışı doğrulanabilir ve günlükler daha sonra iki temel yöntem kullanılarak sorgulanabilir: Log Analytics çalışma alanında doğrudan sorgulama veya Visual Studio Code’daki Azure PowerShell SDK’sından yararlanma. Her iki yaklaşım da aşağıdaki bölümlerde ayrıntılı olarak açıklanmaktadır.
Log Analytics Çalışma Alanını Kullanma
Tanılama ayarı etkinleştirildikten sonra günlükler yakalanır. Genellikle, olaylar çoğu bölgede 30 dakika içinde yapılandırılmış hedeflerine iletilir. Ancak bazı durumlarda, belirli olayların iletilmesi 2 saate kadar sürebilir. Bu süreden sonra, verilerin Log Analytics çalışma alanına alındığını doğrulamak çok önemlidir.
Günlüklerin bir örneğini almak için seçili Log Analytics Çalışma Alanında aşağıdaki Kusto Sorgu Dili (KQL) sorgusunu yürütün:
MicrosoftGraphActivityLogs
| where TimeGenerated > ago(1h)
| take 100
| project TimeGenerated, AppId, RequestMethod, RequestUri, ResponseStatusCode, DurationMs, IPAddress
| sort by TimeGenerated desc
Şekil 6’da gösterildiği gibi, bu sorgunun çıktısı son Microsoft Graph API etkileşimlerinin bir örneğini görüntüler. Her satır bir API çağrısının ne zaman gerçekleştiğini (TimeGenerated), dahil olan uygulamayı (AppId), kullanılan HTTP yöntemini (RequestMethod), erişilen belirli API uç noktasını (RequestUri), sunucunun yanıt durumunu (ResponseStatusCode), istek süresini (DurationMs) ve arayanın IP adresini (IPAddress) ayrıntılarıyla belirtir. Bu, son API etkinliklerinden önemli operasyonel ayrıntıların bir anlık görüntüsünü sağlar.

Şekil 6: Log Analytics’te MicrosoftGraphActivityLogs’a karşı yürütülen bir KQL sorgusunun örnek çıktısı, alınan günlük verilerini göstermektedir
Grafik Etkinlik Günlüğü Sorguları için VS Code’da Azure PowerShell SDK’sından Yararlanmak
Bu yaklaşım, özellikle betik tabanlı bir iş akışını tercih eden veya günlük alma ve analizini otomatikleştirmeyi amaçlayan kullanıcılar veya ekipler için faydalıdır. En son elde edilen 100 MicrosoftGraphActivityLog’u için bu sorgunun birkaç dakika içinde çalışmasını bekleyin. Bizim durumumuzda, yalnızca 15 saniye sürdü. Gerçek süre, veri hacmine ve mevcut Azure hizmet performansına bağlı olacaktır.
VS Code ve PowerShell ile Grafik Etkinlik Günlüklerini Sorgulama
Azure portalının ötesinde, Microsoft Graph Activity Logs’u sorgulamak için PowerShell ile birleştirilmiş Visual Studio Code’un (VS Code) gücünden yararlanmak mümkündür. Bu yaklaşım, özellikle betik tabanlı bir iş akışını tercih eden veya günlük alma ve analizini otomatikleştirmeyi amaçlayan kullanıcılar veya ekipler için faydalıdır.
Ön koşullar
Çalıştırmadan önce, Azure PowerShell modülünün, özellikle Az.OperationalInsights’ın Visual Studio Code ortamında mevcut olduğunu doğrulamanız gerekmektedir. Bu modül Log Analytics çalışma alanlarıyla etkileşim için gereklidir ve halihazırda mevcut değilse aşağıdaki betiği bir PowerShell terminalinde çalıştırarak yüklenebilir.
Install-Module Az.OperationalInsights -Scope CurrentUser
Aşağıdaki betik, bir Azure hesabına bağlanmayı ve belirtilen bir Log Analytics çalışma alanına karşı bir KQL sorgusu yürütmeyi gösterir. Bu sorgu, Log Analytics Çalışma Alanında günlük akışını doğrulamak için kullanılan sorguyla aynıdır.
Connect-AzAccount
$workspaceId = "f7cd80f3-2cac-42f4-9acc-cba357e9468d"
$csvFilePath = ".\GraphActivityLogs.csv"
$query = @"
MicrosoftGraphActivityLogs
| where TimeGenerated > ago(1h)
| take 100
| project TimeGenerated, AppId, RequestMethod, RequestUri, ResponseStatusCode, DurationMs, IPAddress
| sort by TimeGenerated desc
"@
# Inform the user about the query being executed
Write-Host "Running the query against Workspace ID: $workspaceId"
try {
$result = Invoke-AzOperationalInsightsQuery -WorkspaceId $workspaceId -Query $query -ErrorAction Stop
# Display results and save to CSV
if ($result.Results) {
Write-Host "Query executed successfully. Displaying results:"
$result.Results | Format-Table
# Save the results to a CSV file
Write-Host "Saving results to $csvFilePath..."
$result.Results | Export-Csv -Path $csvFilePath -NoTypeInformation -Encoding UTF8
Write-Host "Results successfully saved to $csvFilePath"
} else {
Write-Host "Query executed, but no results were returned."
}
}
catch {
# Handle any errors that occur during query execution
Write-Error "An error occurred while running the query: $($_.Exception.Message)"
}
# Additional information for the user
Komut dosyasının doğru bir şekilde çalışması için, $workspaceId değişkenine belirli Log Analytics Çalışma Alanı Kimliği atanması ve $csvFilePath’in CSV çıktı dosyasının kaydedileceği tam yolu tanımlaması gerekir. Bu Kimlik Azure portalında bulunabilir. Komut dosyasının başarılı bir şekilde başlatılması, uygun Azure Hesabına bağlanmak için bir kimlik doğrulama işlemi başlatır. Daha sonra, doğru aboneliğin adına göre seçilmesi gerekir. Bu adımların başarılı bir şekilde yürütülmesi üzerine çıktı görüntülenir. Ayrıca, Şekil 7’de gösterilen örneğe karşılık gelen ilgili dosya yolunda bir CSV dosyası kaydedilir.

Şekil 7: PowerShell aracılığıyla sorgulanan Microsoft Graph Etkinlik Günlüğü verilerini gösteren VS Code terminalindeki örnek çıktı.
Bu ilk makale Microsoft Graph Activity Log’un temellerini, ne işe yaradığını, görünürlük açısından önemini ve verileri görmeye başlamak için nasıl çalıştırılacağını ele alıyor. Bu temelleri öğrenmek, herhangi bir kuruluşun Microsoft 365 etkinliğini daha iyi anlaması ve güvenliğini güçlendirmesi için önemlidir. Bu temelin yerinde olmasıyla, bu serideki bir sonraki makale, olası posta kutusu ihlallerini araştırmak için bu günlüklerin nasıl kullanılacağını gösteren pratik bir örnek ile beraber yayınlanacak. Tüm bu bilgiler, ekiplere Microsoft 365 ortamlarını korumak adına daha iyi araçlar sağlayabilmek ve alternatifler sunmak için paylaşılmıştır.
Keyifli okumalar.
Bu konuyla ilgili forum tartışmaları
- Sürekli Outlook Veri Dosyasının Bozulması Hk.
- Exchange hesaplarına girişlerde sorun yaşayanlar varmı acaba ?
- Microsoft Entra Hybrid Join ve Intune Auto Enrollment Yapılandırması Hakkında Destek Talebi
- Office 365 Outlook
- Exchange Online'da Gruplara Atılan maillerin gönderene gelmemesi
- 365 Fatura işlemleri hakkında











Eline sağlık