Unified Audit Log MCP Sunucusu
Microsoft Purview'ın birleşik denetim günlüğü (unified audit log) hakkındasalt-okunur bir Model Context Protocolsunucusu — Exchange PowerShell'deki Search-UnifiedAuditLog cmdlet'ininmodern Graph REST karşılığını sarmalar.ArubaCentralMCP /JamfMCP /DefenderCloudAppsMCP /TeamsCallsMCP /IntuneMCP /EntraIDMCP /M365HealthMCP ile aynımimari desenle yazılmıştır ve NetRadar Copilot Studio ajan ailesinin birparçasıdır.
Neden ayrı bir servis (EntraIDMCP'nin sign-in tool'undan farkı ne)
EntraIDMCP'nin list_signins_by_user tool'u yalnızca Entra ID sign-inolaylarını kapsar. Bu servis ise gerçekten birleşik (unified) —Exchange, SharePoint, OneDrive, Teams, Entra ID ve diğer tüm M365workload'larındaki denetim kayıtlarını tek sorguda arar. "Bu kullanıcışu dosyaya eriştin mi", "bu işlemi kim yaptı" gibi çapraz-servis/kanıtamaçlı sorular için tercih edilmelidir.
Mimari — asenkron sorgu deseni
Diğer MCP sunucularımızdan farklı olarak, bu API asenkron çalışır:
flowchart LR
A["1. POST /security/auditLog/queries<br/>(sorguyu oluştur)"] --> B["2. GET .../queries/{id}<br/>(durumu kontrol et — polling)"]
B -->|"succeeded"| C["3. GET .../queries/{id}/records<br/>(sonuçları al)"]
B -->|"running"| B
search_unified_audit_log tool'u bu üç adımı tek bir çağrı arkasında(en fazla ~45 saniyelik bir polling ile) gizler. Sorgu 45 saniyedetamamlanmazsa (gerçek dünyada ilk sorgular için 2-3 dakikaya kadarsürebiliyor — Purview backend'inin "soğuk başlangıç" gecikmesi), tool birqueryId ile birlikte "status": "running" döner; bu durumdaget_audit_log_results(query_id) ile birkaç saniye/dakika sonra tekrarsorulmalıdır.
Barındırma: aruba-mcp-vm üzerinde sekizinci bir systemd servisi(unified-auditlog-mcp.service, port 8427) ve Caddy'de sekizinci birsite block'u olarak çalışır. Dedike, ayrıcalıksız auditlogmcp sistemkullanıcısı altında.
Kimlik Doğrulama
Microsoft Entra ID, Doğuş Grubu tenant'ı. Ayrı bir Entra ID AppRegistration (UnifiedAuditLogMCP), OAuth2 client_credentials akışı,tek bir application permission: AuditLogsQuery.Read.All (adminconsent almış) — kasıtlı olarak en geniş kapsamlı seçenek: Exchange,SharePoint, OneDrive, Teams, Entra ID, DLP dahil TÜM workload'larıkapsayan gerçek "unified" arama için bu gerekli. Daha darAuditLogsQuery-Entra.Read.All yalnızca Entra ID kayıtlarını döndürür.
Araçlar
| Tool | Açıklama |
|---|---|
search_unified_audit_log |
Ana tool — sorguyu oluşturur, ~45 saniye bekler, sonuçları döndürür (veya running + queryId) |
get_audit_log_results |
Önceki bir sorgunun sonucunu tekrar kontrol eder/getirir |
Veri Saklama Notu
Denetim verisine erişim, tenant'ın Purview Audit lisansına bağlıdır:standart lisansta 180 gün, premium lisansta 365 gün geriye dönük arama.
Gizlilik
Yazma/aksiyon işlemi içermez — Graph'ta zaten bu alanda bir yazma uçnoktası yok. auditData alanı (ham, kayıt tipine göre değişen JSON)800 karaktere kırpılarak döndürülür; gereksiz büyük yanıtları önler.