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 controle kunt u naleving van regelgeving behouden, databaseactiviteit begrijpen en inzicht krijgen in verschillen en afwijkingen die kunnen duiden op mogelijke schendingen van de beveiliging. In deze activiteit stelt u controle in op serverniveau, maar deze is ook beschikbaar op databaseniveau.

Als alternatief voor SQL Server-audit heeft Azure SQL Database Azure SQL-auditing. Het wordt mogelijk gemaakt door SQL Server-controle en, zoals SQL Server, ondersteunt controleactiegroepen en acties. 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 verwijst naar een Azure Blob Storage-account, kunt u uw resultaten opslaan en analyseren in XEvents-bestanden. Met Log Analytics ontgrendelt u de mogelijkheid om query's uit te voeren op uw logboeken met KQL (Kusto Query Language) en profiteert u van de Log Analytics-controledashboards.

Audit 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 toekomstige oefening ziet u hoe u de bestanden kunt openen en gebruiken die worden verzonden naar Azure Blob Storage, KQL en de Log Analytics-dashboards.

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

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

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

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

    Instelling Waarde
    projectdetails
    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 van de globale Azure-regio's. Selecteer een regio in de volgende lijst wanneer u resources maakt:

    • West US 2
    • Zuid-Centraal VS
    • centraal VS
    • Oost-VS
    • West-Europa
    • Zuidoost-Azië
    • Japan Oost
    • Brazilië - zuid
    • Australië - zuidoost
    • Centraal-India
  4. Selecteer Controleren +maken, wacht totdat uw invoer is gevalideerd en selecteer vervolgens maken. Wacht totdat de resource is geïmplementeerd.

  5. Selecteer Ga naar bron. Het deelvenster Overzicht voor uw Log Analytics-werkruimte wordt weergegeven.

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

  7. Selecteer in het menu onder Securityde optie Auditing. 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 Auditing in te schakelen.

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

    • Selecteer in de vervolgkeuzelijst voor het abonnementhet Concierge-abonnement.
    • Voor opslagaccountselecteert u in de vervolgkeuzelijst het account dat begint met sql gevolgd door een willekeurige tekenreeks met letters en cijfers.
    • Laat het opslagverificatietype 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.

    Fooi

    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:

    • Voer 7 in voor retentie (dagen)
    • Selecteer Primairevoor storage-toegangssleutel.

    Notitie

    Als u geen Geavanceerde eigenschappenziet, 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 Abonnementhet 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 gaat u dieper in op de controlemogelijkheden in Azure SQL. U ziet hoe u de auditlogboeken kunt analyseren om alle wijzigingen weer te geven die u in de module hebt aangebracht, evenals enkele andere interessante use cases.

Grootboek voor Azure SQL Database

De grootboekfunctie biedt cryptografisch bewijs van manipulatiebestendigheid en 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 met SHA-256 gehasht via een Merkle-boomstructuur. Het resultaat is een roothash 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 overzicht van alle wijzigingen die in de loop van de tijd in de database 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 bijwerkbare grootboektabellen als alleen toevoegbare grootboektabellen bieden manipulatieproof 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 met de naam myLedgerDatabase toegevoegd 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 Smith, Joe Smithen Mary Michaels in als nieuwe klanten met respectievelijk een openingssaldo van $ 500, $ 30 en $ 200.

    INSERT INTO [Account].[Balance]
    VALUES (2, 'Smith', 'John', 500),
    (3, 'Smith', 'Joe', 30),
    (4, 'Michaels', 'Mary', 200);
    
  5. Bekijk de grootboektabel [Account].[Balance] die kan worden bijgewerkt, en geef de ALTIJD GEGEREGENEREERDE 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 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 het saldo van Nickbij van 50 naar 100.

    UPDATE [Account].[Balance] SET [Balance] = 100
    WHERE [CustomerID] = 1;
    
  7. Bekijk de [Account].[Balance] grootboekweergave, samen met de weergave transactieboeksysteem 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 succesvol bijgewerkt naar 100in de bij te werken grootboektabel.
    In de grootboekweergave ziet u dat het bijwerken van de grootboektabel een DELETE van de oorspronkelijke rij met 50inhoudt. Het saldo met een overeenkomende INSERT van een nieuwe rij met 100 toont het nieuwe saldo voor Nick.

Bewaking

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 activiteitenlogboeken en controle van 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. Met sys.event_log kunt u bijvoorbeeld het aantal mislukte en geslaagde verbindingen en het aantal verbindingen bijhouden dat is geblokkeerd door de firewall.

Microsoft raadt u aan Microsoft Defender voor Cloudte 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, te beheren en te ontvangen.

Gegevensdetectie & classificatie

De Data Discovery & Classification-service vormt een nieuw paradigma voor gegevensbeveiliging voor Azure SQL Database. De service is gericht op het beveiligen van de gegevens en niet alleen op 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 ondersteunt vergelijkbare functionaliteit via een wizard in SQL Server Management Studio.

Zie Data Discovery & Classificationvoor meer informatie.

Microsoft Defender voor Cloud

Microsoft Defender voor Cloud is een geïntegreerd pakket voor geavanceerde SQL-beveiligingsmogelijkheden. Het biedt één go-to locatie voor het inschakelen en beheren van twee hoofdmogelijkheden:

  • Evaluatie van beveiligingsproblemen
  • Geavanceerde Dreigingsbescherming

Evaluatie van beveiligingsproblemen

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 periodieke terugkerende scans configureert, schakelt u de service in om de zeven dagen uw databases te scannen en te controleren op beveiligingsproblemen. U kunt deze rapporten vervolgens verzenden naar de beheerders, abonnementseigenaren of iemand anders die mogelijk op de hoogte moet worden gesteld van wijzigingen. Om deze service te laten werken, moet u een opslagaccount opgeven waarin de resultaten worden opgeslagen.

Geavanceerde Dreigingsbescherming

Met Advanced Threat Protection kunt u potentiële bedreigingen detecteren en erop reageren wanneer deze zich voordoen door beveiligingswaarschuwingen te ontvangen voor 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
  • Gegevensexfiltratie
  • Onveilige actie
  • Brute-force-aanval
  • Clientaanmelding met afwijkingen

In de volgende twee oefeningen maakt u kennis met de mogelijkheden en scenario's waarmee Microsoft Defender voor Cloud en Azure SQL in het algemeen worden ingeschakeld en beschermd tegen.

Beveiliging op rijniveau

Row-Level Met Beveiliging kunt u groepslidmaatschap of uitvoeringscontext gebruiken om de toegang tot rijen in een databasetabel te beheren.

Row-Level Security (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.

  • Filterpredikaten filteren stilletjes de rijen die beschikbaar zijn voor leesbewerkingen (SELECT, UPDATE en DELETE).
  • Blokkeerpredicaten blokkeren expliciet schrijfbewerkingen (NA INSERT, AFTER UPDATE, BEFORE UPDATE, BEFORE DELETE) die het predicaat schenden.