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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestione ciclo di vita in .NET Aspire
Gestire progetti NPM in .NET Aspire
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Rendere le variabili read-only in una pipeline di Azure DevOps
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Eliminare una project wiki di Azure DevOps
Combinare Container Queries e Media Queries
Fornire parametri ad un Web component HTML
Utilizzare i variable font nel CSS
Testare il failover sulle region in Azure Storage
Collegare applicazioni server e client con .NET Aspire
I più letti di oggi
- Sfruttare i nuovi overload di TimeSpan.From* per creare timespan usando numeri interi
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- Inviare i comandi SQL generati da Entity Framework alla console di Visual Studio
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Gestione CSS in Blazor con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!