Övning – Köra grundläggande frågor mot Azure Monitor-loggar för att extrahera information från loggdata

Slutförd

Driftteamet har för närvarande inte tillräckligt med information om sitt systembeteende för att diagnostisera och lösa problem effektivt. Därför har teamet konfigurerat en Azure Monitor-arbetsyta för företagets Azure-tjänster. Den kör Kusto-frågor för att hämta systemets status och försöker identifiera orsakerna till eventuella problem som kan uppstå.

Teamet är i synnerhet intresserat av att övervaka säkerhetshändelser och söka efter möjliga försök till intrång i systemet. En angripare kan försöka manipulera program som körs i systemet. Teamet vill därför även samla in programdata för vidare analys. En angripare kan också försöka stoppa de datorer som ingår i systemet, så de vill även undersöka hur och när datorer stoppas och startas om.

I den här övningen övar du på att köra Azure-loggfrågor mot ett demoprojekt som innehåller exempeldata i tabeller, loggar och frågor.

Köra grundläggande frågor mot Azure Monitor-loggar för att extrahera information från loggdata

Nu ska vi använda fönstret Azure Demo Logs för att öva på att skriva frågor. Demoprojektets arbetsyta är ifyllda med exempeldata. Azure erbjuder en optimerad SQL-liknande fråga med visualiseringsalternativ för sina data på ett språk som kallas KQL (Kusto-frågespråk.)

  1. Öppna demomiljön Loggar. I det övre vänstra hörnet, under Ny fråga 1, hittar du Demo, som identifierar arbetsytan eller frågans omfattning. Till vänster i det här fönstret finns flera flikar: Tabeller, frågor och funktioner. Den högra sidan har en scratchpad för att skapa eller redigera frågor.

  2. På fliken Ny fråga 1 anger du en grundläggande fråga på den första raden i scratchpaden. Den här frågan hämtar information om de 10 senaste säkerhetshändelserna.

    SecurityEvent
        | take 10
    
  3. I kommandofältet väljer du Kör för att köra frågan och visa resultatet. Du kan expandera varje rad i resultatfönstret för mer information.

  4. Sortera data efter tid genom att lägga till ett filter i frågan:

    SecurityEvent
        | top 10 by TimeGenerated
    
  5. Lägg till en filtersats och ett tidsintervall. Kör den här frågan för att hämta poster som är mer än 30 minuter gamla och som har en nivå på 10 eller mer:

    SecurityEvent
        | where TimeGenerated < ago(30m)
        | where toint(Level) >= 10
    
  6. Kör följande fråga för att söka i AppEvents tabellen efter poster för händelsen Clicked Schedule Button som anropats under de senaste 24 timmarna:

    AppEvents 
        | where TimeGenerated > ago(24h)
        | where Name == "Clicked Schedule Button"
    
  7. Kör följande fråga för att visa antalet olika datorer som genererade pulsslagshändelser varje vecka under de senaste tre veckorna. Resultatet visas som ett stapeldiagram:

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

Använda fördefinierade Azure-loggfrågor för att extrahera information från loggdata

Förutom att skriva frågor från grunden kan driftteamet också dra nytta av fördefinierade frågor i Azure-loggar som besvarar vanliga frågor som rör deras resursers hälsa, tillgänglighet, användning och prestanda.

  1. Använd parametern Tidsintervall i kommandofältet för att ange ett anpassat intervall. Välj månad, år och dag till ett intervall från januari till idag. Du kan ange och tillämpa en anpassad tid på valfri fråga.

  2. Välj Frågor i verktygsfältet. Fönstret Frågor visas. I listrutan i den vänstra menyn kan du visa en lista över exempelfrågorna grupperade efter kategori, frågetyp, resurstyp, lösning eller ämne.

  3. Välj Kategori i listrutan och välj sedan IT- och hanteringsverktyg.

  4. I sökrutan anger du Distinkta uppdateringar som saknas mellan datorer. Välj frågan i den vänstra rutan och välj sedan Kör. Fönstret Loggar visas igen och frågan returnerar en lista över Windows-uppdateringar som saknas från virtuella datorer som skickar loggar till arbetsytan.

    Kommentar

    Du kan också köra samma fråga från fönstret Loggar . I den vänstra rutan väljer du fliken Frågor och väljer sedan Kategori i listrutan Gruppera efter. Rulla nu nedåt i listan, expandera IT - och hanteringsverktyg och dubbelklicka på Distinkta uppdateringar som saknas mellan datorer. Välj Kör för att köra frågan. När du väljer en fördefinierad fråga i den vänstra rutan läggs frågekoden till i den fråga som finns i scratchpad. Kom ihåg att rensa scratchpad innan du öppnar eller lägger till en ny fråga som ska köras.

  5. I den vänstra rutan avmarkerar du sökrutan. Välj Frågor och välj sedan Kategori i listrutan Gruppera efter. Expandera Azure Monitor och dubbelklicka på Datorers tillgänglighet i dag. Markera Kör. Den här frågan skapar ett tidsseriediagram med antalet unika IP-adresser som skickar loggar till arbetsytan varje timme för den senaste dagen.

  6. Välj Ämne i listrutan Gruppera efter, rulla nedåt för att expandera Funktionsapp och dubbelklicka sedan på Visa programloggar från Funktionsappar. Markera Kör. Den här frågan returnerar en lista över programloggar, sorterade efter tid med de senaste loggarna som visas först.

Du kommer att märka att från de Kusto-frågor som du använde här är det enkelt att rikta en fråga mot ett specifikt tidsfönster, händelsenivå eller händelseloggtyp. Säkerhetsteamet kan enkelt undersöka pulsslag för att identifiera när servrar inte är tillgängliga, vilket kan tyda på en DOS-attack. Om teamet upptäcker tidpunkten när en server inte var tillgänglig kan de köra frågor om händelser i säkerhetsloggen kring den här tidpunkten och diagnostisera om avbrottet orsakades av en attack. Dessutom kan fördefinierade frågor även utvärdera vm-tillgänglighet, identifiera saknade Windows-uppdateringar och granska brandväggsloggar för att visa nekade nätverksflöden som är avsedda för de virtuella datorerna av intresse.