Övning – Hantera din säkerhet

Slutförd

När azure SQL Database har skyddats på nätverks-, autentiserings- och dataskyddsnivå är det sista steget att förstå hur du ska hantera säkerheten kontinuerligt. Hantering av säkerhet omfattar granskning, övervakning och dataklassificering.

Granskning

Granskning kan hjälpa dig att upprätthålla regelefterlevnad, förstå databasaktivitet och få insikter om avvikelser och avvikelser som kan tyda på potentiella säkerhetsöverträdelser. I den här aktiviteten konfigurerar du granskning på servernivå, även om den också är tillgänglig på databasnivå.

Som ett alternativ till granskning av SQL Server har Azure SQL Database Azure SQL-granskning. Den drivs av SQL Server-granskning och stöder, precis som SQL Server, granskningsåtgärdsgrupper och åtgärder. Granskningsfunktionen spårar databas- och serverhändelser och skriver händelser till en granskningslogg i antingen Azure Storage, Log Analytics eller till en Azure Event Hubs. Om du pekar på ett Azure Blob Storage-konto kan du lagra och analysera dina resultat i XEvents-filer. Med Log Analytics kan du göra förfrågningar på dina loggar med Kusto Query Language (KQL) och använda Log Analytics-granskningsinstrumentpanelerna.

Konfigurera granskning

I en tidigare övning för att distribuera SQL Database konfigurerade du granskning på servernivå, men den är också tillgänglig på databasnivå. I en framtida övning får du se hur du kommer åt och använder de filer som skickas till Azure Blob Storage, KQL och Log Analytics-instrumentpanelerna.

Utför följande steg för att konfigurera en Log Analytics-arbetsyta:

  1. I sökfältet Azure-portalen anger du Log Analytics-och väljer sedan Log Analytics-arbetsytor från resultaten. Fönstret för Log Analytics-arbetsytor visas.

  2. Välj Skapa. Menyn Skapa Log Analytics-arbetsyta visas.

  3. På fliken Grundläggande anger du följande värden för varje inställning.

    Inställning Värde
    projektinformation
    Abonnemang Concierge-prenumeration
    Resursgrupp I listrutan väljer du [Sandbox-resursgrupp]
    Instansinformation
    Namn Ange azuresql-la
    Region Välj en plats som är närmast dig från följande lista

    Med den kostnadsfria sandbox-miljön kan du skapa resurser i en delmängd av de globala Azure-regionerna. Välj en region i följande lista när du skapar resurser:

    • Västra USA 2
    • Sydcentrala USA
    • Centrala USA
    • Östra USA
    • Europa, västra
    • Sydostasien
    • Japan, östra
    • Södra Brasilien
    • Australien, sydöstra
    • Centrala Indien
  4. Välj Granska + skapa, vänta tills dina indata har verifierats och välj sedan Skapa. Vänta tills resursen har distribuerats.

  5. Välj Gå till resurs. Fönstret Översikt för Log Analytics-arbetsytan visas.

  6. Gå till din AdventureWorks--databas i Azure-portalen.

  7. På menyn går du till Securityoch väljer Granskning. Granska alternativen.

    Du kan använda granskning på servernivå, vilket gäller för alla databaser i den logiska Azure SQL Database-servern. Om du även tillämpar granskning på databasnivå (vilket du kommer att göra i den här enheten) sker båda granskningarna parallellt. Den ena åsidosätter inte den andra.

  8. Välj skjutreglaget för att Aktivera Azure SQL-granskning.

  9. Markera kryssrutan Storage och slutför sedan de obligatoriska fälten:

    • För prenumeration , välj Concierge-prenumerationi listrutan.
    • För lagringskontoväljer du det konto som börjar med sql följt av en slumpmässig sträng med bokstäver och siffror i listrutan.
    • Lämna lagringsautentiseringstyp som standardalternativet lagringsåtkomstnycklar.

    Det sql lagringskontot används för att samla in XEvent-loggfiler, som sparas som en samling blobfiler i en container med namnet sqldbauditlogs. I en senare aktivitet granskar du containern för att lära dig hur loggfiler skiljer sig från Log Analytics.

    Tips

    Om du inte ser några lagringskonton skapar du ett nytt konto. Du kan behöva uppdatera sidan efter ett par minuter innan den visas.

    Om du ska granska produktionsmiljön bör du överväga att ha ett separat lagringskonto för granskningsloggar.

  10. Välj Avancerade egenskaper för att expandera avsnittet och ange följande konfigurationsobjekt:

    • För kvarhållning (dagar)anger du 7
    • För Lagringsåtkomstnyckelväljer du Primär.

    Note

    Om du inte ser en Avancerade egenskaperväljer du Spara i kommandofältet och upprepar sedan konfigurationsanvisningarna för den här sidan.

  11. Markera kryssrutan Log Analytics och slutför de obligatoriska fälten:

    • För Prenumerationväljer du Concierge-prenumeration i listrutan.
    • För Log Analytics-väljer du den Log Analytics-arbetsyta som du skapade tidigare i den här övningen (asuresql-la).
  12. Välj Spara.

    Det kan ta några minuter innan konfigurationen bearbetas.

Nu har du aktiverat granskning för ett lagringskonto och en Azure Log Analytics-arbetsyta. Senare går du djupare in på granskningsfunktionerna i Azure SQL. Du ser hur du analyserar granskningsloggarna för att visa alla ändringar som du har gjort i modulen, samt några andra intressanta användningsfall.

Transaktionsregister för Azure SQL Database

Funktionen transaktionsregister ger manipuleringssäkra, kryptografiska bevis för dataintegritetskapacitet i din databas. Det här beviset kan hjälpa till att effektivisera granskningsprocessen.

Ledger hjälper till att skydda data från alla angripare eller högprivilegierade användare, inklusive databasadministratörer (DBA), systemadministratörer och molnadministratörer. Precis som med traditionell huvudbok bevarar funktionen historiska data. När en transaktion i en transaktionsregistertabell ändrar data, är händelsen kryptografiskt SHA-256-hashad med hjälp av en Merkle-träddatastruktur som skapar en rothash som representerar alla rader i transaktionen. Transaktionerna som databasen behandlar är sedan också SHA-256-hashade ihop via en Merkle-träddatastruktur. Resultatet är en rothash som utgör ett block. Blocket hashas sedan genom blockets rothash, tillsammans med rothashen för föregående block som indata till hashfunktionen. Den hashningen utgör en blockkedja. Om en rad uppdateras i databasen behålls dess tidigare värde och skyddas i en historiktabell. Transaktionsregistret innehåller en krönika över alla ändringar som gjorts i databasen över tid.

Transaktionsregisterfunktioner introduceras i tabeller i två former:

  • Uppdaterade transaktionsregistertabeller som gör att du kan uppdatera och ta bort rader i dina tabeller
  • Lägg till endast transaktionsregistertabeller, som endast tillåter infogningar i dina tabeller

Både uppdaterade transaktionsregistertabeller och registertabeller med endast tillägg ger funktioner för manipuleringsbevis och digital kriminalteknik.

Övning med hjälp av transaktionsregister för Azure SQL Database

I övningen för att skapa Azure SQL Database lade vi till en databas med namnet myLedgerDatabase och skapade en tabell med namnet Account.Balance. I den här övningen ska vi infoga data, göra uppdateringar av data och köra frågor mot historiktabellen och transaktionsregistervyerna för att se spårningen som sker och relationen mellan tabellerna.

  1. Öppna SSMS och anslut till din logiska Azure SQL Database-server.

  2. Högerklicka på myLedgerDatabase-databasen och välj sedan Ny fråga.

  3. Infoga namnet Nick Jones som ny kund med ett öppningssaldo på 50 USD.

    INSERT INTO [Account].[Balance]
    VALUES (1, 'Jones', 'Nick', 50);
    
  4. Infoga namnen John Smith, Joe Smithoch Mary Michaels som nya kunder med öppningssaldon på 500, 30 USD respektive 200 USD.

    INSERT INTO [Account].[Balance]
    VALUES (2, 'Smith', 'John', 500),
    (3, 'Smith', 'Joe', 30),
    (4, 'Michaels', 'Mary', 200);
    
  5. Visa tabellen [Account].[Balance] updatable ledger och ange GENERATED ALWAYS kolumner som lagts till i tabellen. Välj Kör för att köra frågan.

    SELECT [CustomerID]
       ,[LastName]
       ,[FirstName]
       ,[Balance]
       ,[ledger_start_transaction_id]
       ,[ledger_end_transaction_id]
       ,[ledger_start_sequence_number]
       ,[ledger_end_sequence_number]
     FROM [Account].[Balance];  
    

    I resultatfönstret ser du först de värden som infogas av dina T-SQL-kommandon, tillsammans med systemmetadata som används för data härkomst.

    • Kolumnen ledger_start_transaction_id noterar det unika transaktions-ID som är associerat med transaktionen som infogade data. Eftersom John, Joeoch Mary infogades med hjälp av samma transaktion delar de samma transaktions-ID.
    • Kolumnen ledger_start_sequence_number anger i vilken ordning värdena infogades av transaktionen.
  6. Uppdatera Nicksaldo från 50 till 100.

    UPDATE [Account].[Balance] SET [Balance] = 100
    WHERE [CustomerID] = 1;
    
  7. Visa huvudboksvyn [Account].[Balance] tillsammans med systemvyn för huvudboken för att identifiera användare som har gjort dessa ändringar. Välj Kör för att köra frågan.

     SELECT
     t.[commit_time] AS [CommitTime] 
     , t.[principal_name] AS [UserName]
     , l.[CustomerID]
     , l.[LastName]
     , l.[FirstName]
     , l.[Balance]
     , l.[ledger_operation_type_desc] AS Operation
     FROM [Account].[Balance_Ledger] l
     JOIN sys.database_ledger_transactions t
     ON t.transaction_id = l.ledger_transaction_id
     ORDER BY t.commit_time DESC;
    

    Nick:s kontosaldo har uppdaterats i den uppdateringsbara huvudbokstabellen till värdet 100.
    I huvudboksvyn visas att uppdateringen av huvudbokstabellen är en DELETE av den ursprungliga raden med 50. Saldot med motsvarande INSERT för en ny rad med 100 visar det nya saldot för Nick.

Övervakning

Det finns två aspekter av övervakning och hantering av säkerhet:

  • Azure-nivån
  • Databas- eller servernivå

I Azure kan du använda verktyg som aktivitetsloggar och rollbaserad granskning av åtkomstkontroll.

I Din Azure SQL Database kan du konfigurera Azure SQL-granskning och tillämpa dynamiska hanteringsvyer, mått och aviseringar för att övervaka säkerhetsrelaterade händelser. Med sys.event_log kan du till exempel spåra antalet misslyckade och lyckade anslutningar och antalet anslutningar som blockeras av brandväggen.

Microsoft rekommenderar att du konfigurerar Microsoft Defender för molnet, inklusive att konfigurera aviseringar för Advanced Threat Protection. Vi diskuterar dessa säkerhetselement i nästa avsnitt och övning. Slutligen kan du använda Microsoft Defender för molnet för att övervaka, hantera och få rekommendationer om alla resurser i din Azure-egendom.

Klassificering av dataidentifiering &

Tjänsten Data Discovery & Classification utgör ett nytt informationsskyddsparadigm för Azure SQL Database. Tjänsten syftar till att skydda data och inte bara databasen. Det här paradigmet omfattar:

  • Identifiering och rekommendationer för potentiellt känsliga data som ska klassificeras
  • Möjligheten att beständigt lägga till etiketter i kolumner med hjälp av metadataattribut
  • Möjligheten att granska och fråga känslig dataåtkomst

Azure SQL erbjuder både SQL Information Protection-principen och Microsoft Information Protection-principen i dataklassificering, och du kan välja någon av dessa principer baserat på dina behov.

Portalvyn är endast tillgänglig för Azure SQL, men SQL Server stöder liknande funktioner via en guide i SQL Server Management Studio.

Mer information finns i Data Discovery & Classification.

Microsoft Defender för molnet

Microsoft Defender för molnet är ett enhetligt paket för avancerade SQL-säkerhetsfunktioner. Det ger en enda go-to plats för att aktivera och hantera två huvudfunktioner:

  • Sårbarhetsbedömning
  • Avancerat hotsskydd

Sårbarhetsbedömning

På högsta nivå är SQL Vulnerability Assessment en genomsökningstjänst som ger insyn i ditt säkerhetstillstånd och tillhandahåller åtgärdsbara steg för att åtgärda eventuella problem. När du konfigurerar periodiska återkommande genomsökningar gör du det möjligt för tjänsten att genomsöka dina databaser var sjunde dag och söka efter eventuella säkerhetsrisker. Du kan sedan välja att skicka dessa rapporter till administratörer, prenumerationsägare eller någon annan som kan behöva meddelas om ändringar. För att den här tjänsten ska fungera måste du ange ett lagringskonto där resultatet ska lagras.

Avancerat Hotsskydd

Med Advanced Threat Protection kan du identifiera och svara på potentiella hot när de inträffar genom att ta emot säkerhetsaviseringar om avvikande aktiviteter. Advanced Threat Protection använder avancerade övervaknings- och maskininlärningstekniker för att identifiera om något av följande hot har inträffat:

  • SQL-injektion
  • SÅRBARHET FÖR SQL-inmatning
  • Dataexfiltrering
  • Osäker åtgärd
  • Brute force-försök
  • Avvikande klientinloggning

I de kommande två övningarna går du in på de funktioner och scenarier som Microsoft Defender för molnet och Azure SQL i allmänhet aktiverar och skyddar mot.

Säkerhet på radnivå

Row-Level Security gör att du kan använda gruppmedlemskap eller körningskontext för att styra åtkomsten till rader i en databastabell.

Row-Level Security (RLS) hjälper dig att implementera begränsningar för dataradsåtkomst. Du kan till exempel se till att arbetare endast kommer åt de datarader som är relevanta för deras avdelning. Ett annat exempel är att begränsa kundernas dataåtkomst till endast de data som är relevanta för deras företag.

Logiken för åtkomstbegränsning finns på databasnivån i stället för från data på en annan programnivå. Databassystemet tillämpar åtkomstbegränsningarna varje gång dataåtkomst görs från valfri nivå. Detta gör ditt säkerhetssystem mer tillförlitligt och robust genom att minska säkerhetssystemets yta.

RLS stöder två typer av säkerhetspredikat.

  • Filterpredikat filtrerar tystlåtet raderna som är tillgängliga för läsåtgärder (SELECT, UPDATE och DELETE)
  • Blockpredikat stoppar uttryckligen skrivoperationer (EFTER INFÖRING, EFTER UPPDATERING, FÖRE UPPDATERING, FÖRE RADERING) som bryter mot predikatet

Kunskapstest

1.

Vilket av följande är sätt som du kan övervaka säkerhetsrelaterade händelser för Azure SQL Database på?