Prošlo je dosta vremena otkako smo razgovarali o Entra revizijskim zapisima, a ovaj put ćemo zapravo pokriti neke pozitivne pomake, za promjenu. Naime, skup novih metoda i resursa nedavno je objavljen pod (/beta) Graph API-jem, omogućujući nam da podržimo neke od scenarija koji su godinama bili dostupni u korisničkom sučelju portala. Kratki sažetak možete dobiti tako da pogledate snimku zaslona u nastavku ili čitajte dalje za dodatne pojedinosti.
Počnimo sa skupom “sažetih” (ili “zbirnih”) događaja prijave za Korisnik neinteraktivan, Glavni službenik i Upravljani identitet kategorije. Svi su oni već neko vrijeme dostupni na portalu i pružaju grupiranje događaja prijave po kombinaciji korisnika/aplikacije/IP-a i omogućuju vam pregled agregiranih podataka za vremenske okvire koji se protežu od jednog sata do jednog dana. Pa, tehnički možete birati samo između tri unaprijed definirane vrijednosti (1h, 6h ili 1d), pa pretpostavljam da “raspon” nije ispravna riječ.
Dodane su tri nove metode (krajnje točke) za dohvaćanje odgovarajućeg skupa “sažetih” događaja prijave. Oni odgovaraju nazivima metoda koje koristi portal, kao što je navedeno u mom početni post na tu temu još 2020. Razlika je u tome što su sada dio Microsoft Grapha, a ne starog Azure AD Grapha. I da, portal još uvijek koristi stari, “zastarjeli” API. Još jedan primjer “radi kako ja kažem, a ne kako ja radim”… ali skrenuo sam s teme. Evo popisa metoda:
GET https://graph.microsoft.com/beta/auditLogs/getSummarizedNonInteractiveSignIns(aggregationWindow='h1')
GET https://graph.microsoft.com/beta/auditLogs/getSummarizedServicePrincipalSignIns(aggregationWindow='h1')
GET https://graph.microsoft.com/beta/auditLogs/getSummarizedMSISignIns(aggregationWindow='h1')
Primjer u nastavku pokazuje kako izgleda uzorak “sažetog” događaja. Kao što možete vidjeti, vratit će se samo nekoliko svojstava, za razliku od nekoliko desetaka koje podržava “obična” krajnja točka. Ovo je namjerno i odgovara ponašanju portala. Ako trebate sva dodatna svojstva, možete iskoristiti vraćena svojstva za izradu filtra za “standard” /auditLogs/signIns krajnja točka.
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"signInCount": 1227,
"aggregationDateTime": "2025-09-30T00:00:00Z",
"firstSignInDateTime": "2025-09-30T00:01:03Z",
"userPrincipalName": "user@domain.com",
"appId": "d3590ed6-52b3-4102-aeff-aad2292ab01c",
"appDisplayName": "Microsoft Office",
"ipAddress": "xxx.xxx.xxx.xxx",
"conditionalAccessStatus": "success",
"resourceDisplayName": "Office 365 SharePoint Online",
"resourceId": "00000003-0000-0ff1-ce00-000000000000",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"servicePrincipalName": null,
"servicePrincipalId": "",
"agent": {
"agentType": "notAgentic",
"parentAppId": ""
},
"status": {
"errorCode": 9002341,
"failureReason": "Other",
"additionalDetails": null
},
"managedServiceIdentity": {
"msiType": "none",
"associatedResourceId": null,
"federatedTokenId": null,
"federatedTokenIssuer": null
}
}
Sve gore navedeno trenutno je dostupno samo pod krajnjom točkom /beta. Svaka metoda podržava dopuštenja delegata i aplikacije, s AuditLog.Read.All opseg je potreban. Svaki od njih također ima obavezni parametar koji trebate navesti, aggregationWindowodnosno vremensko razdoblje za koje se generiraju zbirni podaci. Sljedeći popis vrijednosti je podržan: h1 (1 sat), h6 (6 sati), d1 (1 dan). Imajte na umu da zahtjev neće uspjeti ako ne navedete vrijednost za aggregationWindow parametar.
Metode podržavaju paginaciju, sa zadanom veličinom stranice postavljenom na 1000. To možete promijeniti putem $top iako maksimalna veličina stranice odgovara zadanoj, to jest 1000. Oni također podržavaju robustan skup filtara putem $filter parametar upita, na gotovo svim svojstvima dostupnim na summarizedSignIn resurs. Na primjer, možemo filtrirati prema ID-u aplikacije, koristeći upit u nastavku:
GET https://graph.microsoft.com/beta/auditLogs/getSummarizedNonInteractiveSignIns(aggregationWindow='d1')?$filter=appid eq '00000006-0000-0ff1-ce00-000000000000'
Zanimljiviji scenarij je filtriranje svih prijava koje nisu prošle provjere uvjetnog pristupa, što možete učiniti putem:
GET https://graph.microsoft.com/beta/auditLogs/getSummarizedNonInteractiveSignIns(aggregationWindow='d1')?$filter=conditionalAccessStatus eq 'failure'
Na kraju, kao bonus savjet, također možete filtrirati na temelju datumskog raspona, iako dokumentacija tvrdi drugačije. Možete koristiti firstSignInDateTime svojstvo za to, kao što je prikazano u primjeru u nastavku:
GET https://graph.microsoft.com/beta/auditLogs/getSummarizedNonInteractiveSignIns(aggregationWindow='d1')?$filter=(firstSignInDateTime ge 2025-09-30T00:00:00.000Z and firstSignInDateTime lt 2025-10-01T00:00:00.000Z)
A budući da pričam o nedokumentiranim značajkama, evo još jedne: također možete koristiti $orderby parametar:
GET https://graph.microsoft.com/beta/auditLogs/getSummarizedNonInteractiveSignIns(aggregationWindow='d1')?$filter=(firstSignInDateTime ge 2025-09-30T12:41:50.000Z and firstSignInDateTime lt 2025-10-07T12:41:50.000Z)$orderby=firstSignInDateTime%20asc
Gornji primjer nadjačat će zadano ponašanje razvrstavanja i rasporedit će sažete događaje uzlaznim redoslijedom.
Zatim, imamo dvije daleko manje zanimljive krajnje točke, ponovno vjerojatno objavljene kao zamjena za zastarjele API-je koje još uvijek koristi portal Entra. Prvo, signInEventsActivity daje nam broj događaja prijave po danu, što su u osnovi podaci iz Pregled > Praćenje tab. Također dobivamo signInEventsAppActivity metoda ili Graph API krajnja točka za izvješće o aktivnostima aplikacijeiako bez podjele između uspjeha i neuspjeha. Obje su prilično dosadne, iako bih mogao naći primjenu za potonju kao dio svog izvješće ravnatelja službe. Za svaki slučaj, evo kako koristiti dvije krajnje točke:
#Fetch the Sign-in events summary report GET https://graph.microsoft.com/beta/auditLogs/signInEventsSummary #Fetch the App Sign-in events summary report GET https://graph.microsoft.com/beta/auditLogs/signInEventsAppSummary
Oba izvješća zahtijevaju AuditLog.Read.All dopuštenje, bilo u obliku dopuštenja delegata ili aplikacije.
Na kraju, imamo auditActivityTypes metoda, koja služi kao vrsta dokumenta metapodataka za Entra revizijske zapisnike. Drugim riječima, daje vam popis svih mogućih vrsta događaja koje Entra podržava, kao i kojem servisu pripadaju. Trenutačno postoji ukupno 1312 unosa vraćenih navedenom metodom, a možete očekivati da će popis s vremenom rasti:
Ponašanje metode odgovara onima koje smo gore opisali, s podržanim dozvolama za aplikacije i delegate, i AuditLog.Read.All potreban. Podržava $filter operator također, iako s obzirom na svrhu metode, vjerojatno biste ipak htjeli dobiti cijeli popis i primijeniti bilo koje filtriranje na strani klijenta. U svakom slučaju, evo primjera:
GET https://graph.microsoft.com/beta/auditLogs/auditActivityTypes?$filter=category eq 'WorkflowManagement'
S time možemo zatvoriti ovaj pregled dodataka za Graph API koji se odnose na Entra reviziju. Nadamo se da vam je bilo korisno!
