Oefening: uw beveiliging beheren

Voltooid

Nadat uw Azure SQL Database is beveiligd op het niveau van netwerken, verificatie en gegevensbeveiliging, is de laatste stap om te begrijpen hoe u de beveiliging doorlopend gaat beheren. Het beheren van beveiliging omvat controle, bewaking en gegevensclassificatie.

Controle

Met controles kunt u wet- en regelgeving naleven en krijgt u inzicht in activiteiten in de database, en in afwijkingen en discrepanties die kunnen wijzen op mogelijke schendingen van de beveiliging. In deze activiteit stelt u de controle op serverniveau in, maar deze is ook beschikbaar op databaseniveau.

Als alternatief voor SQL Server Audit, kunt u in Azure SQL Database Azure SQL Auditing gebruiken. Het wordt aangestuurd door SQL Server Audit en ondersteunt, zoals SQL Server, acties en actiegroepen voor controles. De controlefunctie houdt database- en servergebeurtenissen bij en schrijft gebeurtenissen naar een auditlogboek in Azure Storage, Log Analytics of naar een Azure Event Hubs. Als u naar een Azure Blob-opslagaccount verwijst, kunt u uw resultaten opslaan en analyseren in XEvents-bestanden. Met Log Analytics hebt u de mogelijkheid om uw logboeken met Kusto Query Language (KQL) te doorzoeken en profiteren van de Log Analytics-dashboards voor controles.

Controle configureren

In een eerdere oefening voor het implementeren van SQL Database hebt u controle ingesteld op serverniveau, maar deze is ook beschikbaar op databaseniveau. In een volgende oefening ziet u hoe u de bestanden die naar de Azure Blob-opslag worden verzonden, KQL en de Log Analytics-dashboards kunt openen en gebruiken.

Voer de volgende stappen uit om een Log Analytics-werkruimte in te stellen:

  1. Voer in de zoekbalk van Azure Portal Log Analytics in en selecteer vervolgens Log Analytics-werkruimten in de resultaten. Het deelvenster Log Analytics-werkruimten wordt weergegeven.

  2. Selecteer Maken. Het menu Log Analytics-werkruimte maken wordt weergegeven.

  3. Voer op het tabblad Basisinformatie de volgende waarden in voor elke instelling.

    Instelling Weergegeven als
    Projectgegevens
    Abonnement Concierge-abonnement
    Resourcegroep Selecteer in de vervolgkeuzelijst [Sandbox-resourcegroep]
    Exemplaardetails
    Naam Voer azuresql-la in
    Regio Selecteer een locatie die het dichtst bij u in de volgende lijst staat

    Met de gratis sandbox kunt u resources maken in een subset met wereldwijde Azure-regio's. Selecteer een regio in de volgende lijst wanneer u resources maakt:

    • VS - west 2
    • VS - zuid-centraal
    • Central US
    • VS - oost
    • Europa -west
    • Azië - zuidoost
    • Japan East
    • Brazilië - zuid
    • Australië - zuidoost
    • India - centraal
  4. Selecteer Controleren en maken, wacht totdat uw invoer is gevalideerd en selecteer vervolgens Maken. Wacht totdat de resource is geïmplementeerd.

  5. Selecteer Naar resource. Het deelvenster Overzicht voor uw Log Analytics-werkruimte wordt weergegeven.

  6. Ga in Azure Portal naar uw AdventureWorks-database .

  7. Selecteer Controle in het menu onder Beveiliging. Bekijk de opties.

    U kunt controle toepassen op serverniveau, dat van toepassing is op alle databases binnen de logische Server van Azure SQL Database. Als u ook controle toepast op databaseniveau (wat u in deze eenheid gaat doen), worden beide controles parallel uitgevoerd; de ene overschrijft de andere niet.

  8. Selecteer de schuifknop om Azure SQL-controle in te schakelen.

  9. Schakel het selectievakje Opslag in en vul de vereiste velden in:

    • Selecteer voor Abonnement in de vervolgkeuzelijst het Concierge-abonnement.
    • Voor opslagaccount selecteert u in de vervolgkeuzelijst het account dat begint met sql gevolgd door een willekeurige tekenreeks met letters en cijfers.
    • Laat het verificatietype voor opslag staan als de standaardoptie Opslagtoegangssleutels .

    Het sql opslagaccount wordt gebruikt voor het verzamelen van XEvent-logboekbestanden, die worden opgeslagen als een verzameling blobbestanden in een container met de naam sqldbauditlogs. In een latere activiteit bekijkt u de container om te leren hoe logboekbestanden verschillen van Log Analytics.

    Tip

    Als u geen opslagaccounts ziet, maakt u een nieuw account. Mogelijk moet u de pagina na een paar minuten vernieuwen voordat deze wordt weergegeven.

    Als u uw productieomgeving gaat controleren, kunt u overwegen om een afzonderlijk opslagaccount voor auditlogboeken te hebben.

  10. Selecteer Geavanceerde eigenschappen om de sectie uit te vouwen en de volgende configuratie-items in te stellen:

    • Voor retentie (dagen) voert u 7 in
    • Selecteer Primair voor opslagtoegangssleutel.

    Notitie

    Als u geen geavanceerde eigenschappen ziet, selecteert u Opslaan op de opdrachtbalk en herhaalt u de configuratie-instructies voor deze pagina.

  11. Schakel het selectievakje Log Analytics in en vul de vereiste velden in:

    • Selecteer voor Abonnement het Concierge-abonnement in de vervolgkeuzelijst.
    • Selecteer voor Log Analytics de Log Analytics-werkruimte die u eerder in deze oefening hebt gemaakt (asuresql-la).
  12. Selecteer Opslaan.

    Het kan enkele minuten duren voordat de configuratie is verwerkt.

U hebt nu controle ingeschakeld voor een opslagaccount en een Azure Log Analytics-werkruimte. Later leert u meer over de controlemogelijkheden in Azure SQL. U leert ook hoe u de controlelogboeken kunt analyseren om alle wijzigingen te bekijken die u tijdens deze module hebt aangebracht, evenals enkele andere interessante gebruiksvoorbeelden.

Grootboek voor Azure SQL Database

De grootboekfunctie biedt manipulatie-bewijs, cryptografisch bewijs van de mogelijkheden voor gegevensintegriteit in uw database. Dit bewijs kan helpen bij het stroomlijnen van het controleproces.

Grootboek helpt gegevens te beschermen tegen aanvallers of gebruikers met hoge bevoegdheden, waaronder databasebeheerders (DBA's), systeembeheerders en cloudbeheerders. Net als bij een traditioneel grootboek behoudt de functie historische gegevens. Wanneer een transactie in een grootboektabel gegevens wijzigt, wordt de gebeurtenis cryptografisch SHA-256 gehasht met behulp van een Merkle-structuurgegevensstructuur die een hoofd-hash maakt die alle rijen in de transactie vertegenwoordigt. De transacties die door de database worden verwerkt, worden vervolgens ook SHA-256 gehasht via een Merkle-structuurgegevensstructuur. Het resultaat is een hoofd-hash die een blok vormt. Het blok wordt vervolgens SHA-256 gehasht via de hoofd-hash van het blok, samen met de hoofd-hash van het vorige blok als invoer voor de hash-functie. Die hashing vormt een blockchain. Als een rij in de database wordt bijgewerkt, wordt de vorige waarde behouden en beveiligd in een geschiedenistabel. Grootboek biedt een kroniek van alle wijzigingen die in de database in de loop van de tijd zijn aangebracht.

Grootboekfunctionaliteit wordt geïntroduceerd in tabellen in twee vormen:

  • Tabellen met grootboek die kunnen worden bijgewerkt en verwijderd, zodat u rijen in uw tabellen kunt bijwerken en verwijderen
  • Grootboektabellen met alleen toevoegbewerkingen, waardoor alleen invoegingen aan uw tabellen zijn toegestaan

Zowel updatable grootboektabellen als grootboektabellen die alleen toevoegt, bieden manipulatie-bewijs en digitale forensische mogelijkheden.

Oefening met behulp van grootboek voor Azure SQL Database

In de oefening voor het maken van de Azure SQL Database hebben we een database toegevoegd met de naam myLedgerDatabase en een tabel gemaakt met de naam Account.Balance. In deze oefening gaan we gegevens invoegen, gegevens bijwerken en query's uitvoeren op de geschiedenistabel en grootboekweergaven om de tracering te zien die plaatsvindt en de relatie tussen de tabellen.

  1. Open SSMS en maak verbinding met uw logische Azure SQL Database-server.

  2. Klik met de rechtermuisknop op de myLedgerDatabase database en selecteer Vervolgens Nieuwe query.

  3. Voeg de naam Nick Jones in als een nieuwe klant met een openingssaldo van $ 50.

    INSERT INTO [Account].[Balance]
    VALUES (1, 'Jones', 'Nick', 50);
    
  4. Voeg de namen John Smithin, Joe Smithen Mary Michaels als nieuwe klanten met een openingssaldo van respectievelijk $ 500, $ 30 en $ 200.

    INSERT INTO [Account].[Balance]
    VALUES (2, 'Smith', 'John', 500),
    (3, 'Smith', 'Joe', 30),
    (4, 'Michaels', 'Mary', 200);
    
  5. Bekijk de [Account].[Balance] tabel met het updatable grootboek en geef de GEGENEREERDE ALWAYS-kolommen op die aan de tabel zijn toegevoegd. Selecteer Uitvoeren om uw query uit te voeren.

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

    In het resultatenvenster ziet u eerst de waarden die zijn ingevoegd door uw T-SQL-opdrachten, samen met de systeemmetagegevens die worden gebruikt voor gegevensherkomstdoeleinden.

    • De ledger_start_transaction_id kolom noteert de unieke transactie-id die is gekoppeld aan de transactie die de gegevens heeft ingevoegd. Omdat John, Joeen Mary zijn ingevoegd met behulp van dezelfde transactie, delen ze dezelfde transactie-id.
    • De ledger_start_sequence_number kolom noteert de volgorde waarin de waarden door de transactie zijn ingevoegd.
  6. Werk Nickhet saldo van 50 naar 100.

    UPDATE [Account].[Balance] SET [Balance] = 100
    WHERE [CustomerID] = 1;
    
  7. Bekijk de [Account].[Balance] grootboekweergave, samen met de systeemweergave van het transactieboek om gebruikers te identificeren die de wijzigingen hebben aangebracht. Selecteer Uitvoeren om de query uit te voeren.

     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 rekeningsaldo is bijgewerkt in de updatable grootboektabel naar 100.
    In de grootboekweergave ziet u dat het bijwerken van de grootboektabel een DELETE van de oorspronkelijke rij is met 50. Het saldo met een overeenkomstige INSERT van een nieuwe rij met 100 toont het nieuwe saldo voor Nick.

Controleren

Er zijn twee aspecten voor het bewaken en beheren van beveiliging:

  • Het Azure-niveau
  • Het database- of serverniveau

In Azure kunt u hulpprogramma's zoals activiteiten logboeken en controles met op rollen gebaseerd toegangsbeheer toepassen.

In uw Azure SQL Database kunt u Azure SQL-controle configureren en dynamische beheerweergaven, metrische gegevens en waarschuwingen toepassen om beveiligingsgebeurtenissen te bewaken. U kunt bijvoorbeeld sys.event_log het aantal mislukte en geslaagde verbindingen bijhouden en het aantal verbindingen dat is geblokkeerd door de firewall.

Microsoft raadt u aan Microsoft Defender voor Cloud te configureren, waaronder het instellen van waarschuwingen voor Advanced Threat Protection. In de volgende sectie en oefening bespreken we deze beveiligingselementen. Ten slotte kunt u Microsoft Defender voor Cloud gebruiken om aanbevelingen voor alle resources in uw Azure-estate te bewaken, beheren en ontvangen.

Gegevensdetectie en -classificatie

De Data Discovery & Classification-service vormt een nieuw informatiebeveiligingsparadigma voor Azure SQL Database. De service is gericht op het beveiligen van de gegevens en niet alleen de database. Dit paradigma omvat:

  • Detectie en aanbevelingen voor mogelijk gevoelige gegevens die moeten worden geclassificeerd
  • De mogelijkheid om permanent labels toe te voegen aan kolommen met behulp van metagegevenskenmerken
  • De mogelijkheid om toegang tot gevoelige gegevens te controleren en er query's op uit te voeren

Azure SQL biedt zowel SQL Information Protection-beleid als Microsoft Information Protection-beleid in gegevensclassificatie en u kunt een van deze beleidsregels kiezen op basis van uw behoeften.

De portalweergave is alleen beschikbaar voor Azure SQL, maar SQL Server biedt ondersteuning voor vergelijkbare functionaliteit via een wizard in SQL Server Management Studio.

Zie Gegevensdetectie en -classificatie voor meer informatie.

Microsoft Defender for Cloud

Microsoft Defender voor Cloud is een geïntegreerd pakket voor geavanceerde SQL-beveiligingsmogelijkheden. Het is ook een centraal punt voor het inschakelen en beheren van twee hoofdmogelijkheden:

  • Beoordeling van beveiligingslekken
  • Advanced Threat Protection

Beoordeling van beveiligingslekken

Op het hoogste niveau is SQL Vulnerability Assessment een scanservice die inzicht biedt in uw beveiligingsstatus en bruikbare stappen biedt om mogelijke problemen op te lossen. Wanneer u periodiek terugkerende scans configureert, kunt u de service in staat stellen om elke zeven dagen uw databases te scannen en te controleren of er beveiligingsproblemen zijn. U kunt deze rapporten vervolgens verzenden naar de beheerders, abonnementseigenaren of iemand anders die mogelijk moet worden gewaarschuwd als er wijzigingen zijn. Als u deze service wilt uitvoeren, moet u een opslagaccount opgeven om de resultaten in op te slaan.

Advanced Threat Protection

Met Advanced Threat Protection kunt u potentiële bedreigingen detecteren en erop reageren wanneer deze optreden door beveiligingswaarschuwingen te ontvangen bij afwijkende activiteiten. Advanced Threat Protection past geavanceerde bewakings- en machine learning-technologieën toe om te detecteren of een van de volgende bedreigingen heeft plaatsgevonden:

  • SQL-injectie
  • Beveiligingsprobleem met SQL-injectie
  • Gegevensoverdracht
  • Onveilige actie
  • Poging tot een beveiligingsaanval
  • Afwijkende clientaanmelding

In de volgende twee oefeningen gaat u dieper in op de mogelijkheden en scenario's die Microsoft Defender voor Cloud, en Azure SQL in het algemeen, inschakelen en beschermen tegen.

Beveiliging op rijniveau

Met beveiliging op rijniveau kunt u groepslidmaatschap of uitvoeringscontext gebruiken om de toegang tot rijen in een databasetabel te beheren.

Beveiliging op rijniveau (RLS) helpt u bij het implementeren van beperkingen voor toegang tot gegevensrijen. U kunt er bijvoorbeeld voor zorgen dat werknemers alleen toegang hebben tot de gegevensrijen die relevant zijn voor hun afdeling. Een ander voorbeeld is om de gegevenstoegang van klanten te beperken tot alleen de gegevens die relevant zijn voor hun bedrijf.

De toegangsbeperkingslogica bevindt zich in de databaselaag in plaats van de gegevens in een andere toepassingslaag. Het databasesysteem past de toegangsbeperkingen toe telkens wanneer gegevenstoegang wordt geprobeerd vanuit elke laag. Hierdoor is uw beveiligingssysteem betrouwbaarder en robuuster door het oppervlak van uw beveiligingssysteem te verminderen.

RLS ondersteunt twee typen beveiligingspredicaten.

  • Filterpredicaten filteren op de achtergrond de rijen die beschikbaar zijn voor leesbewerkingen (SELECT, UPDATE en DELETE)
  • Blokpredicaten blokkeren expliciet schrijfbewerkingen (NA INSERT, AFTER UPDATE, BEFORE UPDATE, BEFORE DELETE) die het predicaat schenden

Kenniscontrole

1.

Op welke van de volgende manieren kunt u beveiligingsgebeurtenissen voor Azure SQL Database controleren?