Övning – Hantera din säkerhet
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:
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.
Välj Skapa. Menyn Skapa Log Analytics-arbetsyta visas.
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
Välj Granska + skapa, vänta tills dina indata har verifierats och välj sedan Skapa. Vänta tills resursen har distribuerats.
Välj Gå till resurs. Fönstret Översikt för Log Analytics-arbetsytan visas.
Gå till din AdventureWorks--databas i Azure-portalen.
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.
Välj skjutreglaget för att Aktivera Azure SQL-granskning.
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.
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.
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).
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.
Öppna SSMS och anslut till din logiska Azure SQL Database-server.
Högerklicka på
myLedgerDatabase
-databasen och välj sedan Ny fråga.Infoga namnet
Nick Jones
som ny kund med ett öppningssaldo på 50 USD.INSERT INTO [Account].[Balance] VALUES (1, 'Jones', 'Nick', 50);
Infoga namnen
John Smith
,Joe Smith
ochMary 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);
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. EftersomJohn
,Joe
ochMary
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.
- Kolumnen
Uppdatera
Nick
saldo från50
till100
.UPDATE [Account].[Balance] SET [Balance] = 100 WHERE [CustomerID] = 1;
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ärdet100
.
I huvudboksvyn visas att uppdateringen av huvudbokstabellen är enDELETE
av den ursprungliga raden med50
. Saldot med motsvarandeINSERT
för en ny rad med100
visar det nya saldot förNick
.
Ö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