Recuperare gli audit log in Azure DevOps

di Matteo Tumiati, in DevOps,

In tutte le organizzazioni aziendali prima o poi capita di dover fare un audit. Che sia una operazione periodica, dovuta ad un certo evento come una certificazione ISO piuttosto che un breach di sicurezza, ci siamo passati tutti e sappiamo quanto sia complesso dover dimostrare una timeline completa degli eventi.

In Azure DevOps abbiamo una API molto utile che ci permette di scaricare ed analizzare in modo semplice gli eventi. Ci serve solo un token generato da una utenza con i permessi "View Audit Log" a livello di organizzazione e un semplice script:

$Token="{PAT}"
$OutputFile="{PATH}"
$Base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($Token)"))
$AuditLogURL = "https://auditservice.dev.azure.com/{organization}/_apis/audit/downloadlog?format=csv&startTime={startTime}&endTime={endTime}&api-version=7.1-preview.1" 
$AuditInfo = Invoke-RestMethod -Uri $AuditLogURL -Headers @{authorization = "Basic $Base64AuthInfo"} -Method Get -OutFile $OutputFile

Di default verrebbe scaricato un file JSON, ma in questo caso per semplicità abbiamo optato per avere un file CSV, perché così sarà più intuitivo e comodo fare una analisi dettagliata, per esempio, tramite Excel o strumenti di reportistica più avanzati come Power BI.

L'elenco degli audit log potrebbe essere veramente lungo, quindi ci conviene sempre filtrare per una data di inizio e fine ben definite. Nel caso non bastasse, in risposta avremo comunque un continuationToken per continuare l'esecuzione della chiamata e ottenere ulteriori risultati.

Ciascuna operazione viene descritta in modo molto preciso, come è giusto che sia.

Azure DevOps Service,,06/25/2025 14:56:20,Organization,myorg (Organization),38cad75d-0000-0000-0000-123456789,2b77a8fd-0000-0000-0000-123456789,Aspitalia.Intranet,,"TFS JobAgent(TfsJobAgent.exe, 20.257.36216.1)",CheckSuite.Completed,"{""CheckSuiteId"":""434c16d1-0000-0000-0000-123456789"",""CheckSuiteStatus"":""TimedOut"",""RunName"":""2025.05.26.6"",""StageName"":""Deploy_Production"",""PipelineName"":""Aspitalia.Intranet"",""CheckRuns"":[{""Id"":""7cb37c1a-0000-0000-0000-123456789"",""Status"":""TimedOut"",""Type"":""Approval"",""Approvers"":""Microsoft.VisualStudio.Services.TFS""}],""CallerProcedure"":""PipelinePolicy.prc_UpdatePolicyBatchEvaluation""}","Checks on stage ""Deploy_Production"" of run ""#2025.05.26.6"" of pipeline ""Aspitalia.Intranet"" in project ""Aspitalia.Intranet"" have been TimedOut"

Anche se non proprio comprensibile a colpo d'occhio, possiamo vedere come all'interno dell'organizzazione myorg sia stato eseguito una CheckSuite (una condizione all'interno di un environment (in questo caso "Deploy_Production", per una pipeline chiamata "Aspitalia.Intranet", il giorno 25/6/2025 e che ha dato come risultato un TimedOut, fallendo di conseguenza il proseguimento della pipeline stessa.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi