Esercizio - Creare query di base sui log di Monitoraggio di Azure per estrarre informazioni dai dati dei log

Completato

Il team operativo attualmente non ha a disposizione informazioni sufficienti sul comportamento dei sistemi per diagnosticare e risolvere i problemi in modo efficace. Per risolvere questo problema, il team ha configurato un'area di lavoro di Monitoraggio di Azure con i servizi di Azure aziendali. Esegue query Kusto per recuperare informazioni sullo stato del sistema e prova a identificare le cause dei problemi che potrebbero verificarsi.

In particolare, il team è interessato al monitoraggio degli eventi di sicurezza per identificare possibili tentativi di attacco al sistema. C'è il rischio che un utente malintenzionato tenti di modificare le applicazioni in esecuzione nel sistema e pertanto il team vuole raccogliere anche i dati delle applicazioni per ulteriori analisi. Un utente malintenzionato potrebbe anche tentare di arrestare i computer inclusi nel sistema, quindi il team vuole anche esaminare come e quando i computer vengono arrestati e riavviati.

In questo esercizio si eseguiranno query di log di Azure su un progetto demo che contiene dati di esempio in tabelle, log e query.

Creare query di base sui log di Monitoraggio di Azure per estrarre informazioni dai dati dei log

Si userà il riquadro Log Demo di Azure per esercitarsi a scrivere query. L'area di lavoro del progetto demo è prepopolata con dati di esempio. Azure offre una query ottimizzata di tipo SQL con opzioni di visualizzazione dei dati in un linguaggio denominato KQL (Kusto Query Language).

  1. Aprire l'ambiente demo Log. Nell'angolo superiore sinistro, in Nuova query 1, viene visualizzato Demo, che identifica l'area di lavoro (o l'ambito) della query. Il lato sinistro di questo riquadro contiene diverse schede: Tabelle, Querye Funzioni. Il lato destro ha uno scratchpad per la creazione o la modifica di query.

  2. Nella scheda Nuova query 1 immettere una query di base nella prima riga dello scratchpad. Questa query recupera i dettagli dei 10 eventi di sicurezza più recenti.

    SecurityEvent
        | take 10
    
  3. Nella barra dei comandi selezionare Esegui per eseguire la query e visualizzare i risultati. Per altre informazioni, è possibile espandere ogni riga nel riquadro dei risultati.

  4. Ordinare i dati in base all'ora aggiungendo un filtro alla query:

    SecurityEvent
        | top 10 by TimeGenerated
    
  5. Aggiungere una clausola di filtro e un intervallo di tempo. Eseguire questa query per recuperare i record generati da oltre 30 minuti e con un livello pari almeno a 10:

    SecurityEvent
        | where TimeGenerated < ago(30m)
        | where toint(Level) >= 10
    
  6. Eseguire la query seguente per cercare nella AppEvents tabella i record Clicked Schedule Button dell'evento richiamato nelle ultime 24 ore:

    AppEvents 
        | where TimeGenerated > ago(24h)
        | where Name == "Clicked Schedule Button"
    
  7. Eseguire questa query per visualizzare il numero di computer diversi che hanno generato eventi heartbeat ogni settimana per le ultime tre settimane. I risultati vengono visualizzati sotto forma di grafico a barre:

    Heartbeat
        | where TimeGenerated >= startofweek(ago(21d))
        | summarize dcount(Computer) by endofweek(TimeGenerated) | render barchart kind=default
    

Usare le query di log di Azure predefinite per estrarre informazioni dai dati dei log

Oltre a scrivere query da zero, il team operativo può anche usare le query predefinite nei log di Azure che rispondono a domande comuni relative a integrità, disponibilità, utilizzo e prestazioni delle risorse.

  1. Usare il parametro Intervallo di tempo nella barra dei comandi per impostare un intervallo personalizzato. Selezionare il mese, l'anno e il giorno per un intervallo compreso tra gennaio e la data odierna. È possibile impostare e applicare un'ora personalizzata a qualsiasi query.

  2. Sulla barra degli strumenti a sinistra selezionare Query. Nell'elenco a discesa del menu a sinistra è possibile visualizzare un elenco di query di esempio raggruppate per Categoria, Tipo di query, Tipo di risorsa, Soluzione o Argomento.

    Screenshot delle opzioni a discesa Raggruppa per nella scheda Query nel riquadro laterale.

  3. Nell'elenco a discesa selezionare Categoria, quindi selezionare IT e strumenti di gestione.

  4. Nella casella di ricerca immettere Aggiornamenti distinti mancanti tra tutti i computer. Fare doppio clic sulla query nel riquadro sinistro e quindi selezionare Esegui. Viene visualizzato di nuovo il riquadro Log con un elenco degli aggiornamenti di Windows mancanti dalle macchine virtuali che inviano log all'area di lavoro.

    Nota

    La stessa query può essere eseguita anche dal riquadro Log. Nel riquadro a sinistra selezionare la scheda Query, quindi selezionare Categoria nell'elenco a discesa Raggruppa per. Scorrere ora verso il basso l'elenco, espandere IT e strumenti di gestione e fare doppio clic su Aggiornamenti distinti mancanti tra tutti i computer. Selezionare Esegui per eseguire la query. Quando si seleziona una query predefinita nel riquadro sinistro, il codice della query viene aggiunto a qualsiasi query presente nello scratchpad. Ricordarsi di cancellare lo scratchpad prima di aprire o aggiungere una nuova query da eseguire.

  5. Nel riquadro sinistro, deselezionare la casella di ricerca. Selezionare Query e quindi Categoria, nell'elenco a discesa Raggruppa per. Espandere Monitoraggio di Azure e fare doppio clic su Disponibilità computer odierna. Selezionare Esegui. Questa query crea un grafico delle serie temporali con il numero di indirizzi IP univoci che inviano log nell'area di lavoro ogni ora per l'ultimo giorno.

  6. Nell'elenco a discesa Raggruppa per selezionare Argomento, scorrere verso il basso per espandere App per le funzioni e quindi selezionare Mostra log applicazioni da App per le funzioni. Selezionare Esegui. Questa query restituisce un elenco di log dell'applicazione, ordinati in base all'ora con i log più recenti visualizzati per primi.

Si noterà che dalle query Kusto utilizzate qui è possibile osservare la facilità con cui si può limitare una query a un intervallo di tempo specifico, a un livello di evento o a un tipo di log eventi. Il team dedicato alla sicurezza può facilmente esaminare gli heartbeat per identificare quando i server non sono disponibili, il che potrebbe indicare un attacco Denial of Service. Se il team individua il momento in cui un server non è stato disponibile, può eseguire una query sugli eventi riportati nel log di sicurezza in quel periodo di tempo per diagnosticare se l'interruzione è stata causata da un attacco. È anche possibile usare le query predefinite per valutare la disponibilità delle macchine virtuali, identificare gli aggiornamenti di Windows mancanti ed esaminare i log del firewall per visualizzare i flussi di rete rifiutati destinati alle macchine virtuali di interesse.