Delen via


Zelfstudie: Aan de slag met Always Encrypted met beveiligde enclaves in SQL Server

Van toepassing op: SQL Server 2019 (15.x) en latere versies in Windows

In deze zelfstudie leert u hoe u aan de slag gaat met Always Encrypted met beveiligde enclaves in SQL Server. U ziet het volgende:

  • Een basisomgeving maken voor het testen en evalueren van Always Encrypted met beveiligde enclaves, waarbij er geen attestation is geconfigureerd voor de enclaves.
  • Hoe gegevens ter plaatse te versleutelen en geavanceerde vertrouwelijke zoekopdrachten uit te voeren op versleutelde kolommen met behulp van SQL Server Management Studio (SSMS).

Als u wilt weten hoe u Always Encrypted instelt met beveiligde enclaves met behulp van Host Guardian Service voor enclave-attestation, raadpleegt u de zelfstudie: Aan de slag met Always Encrypted met beveiligde enclaves in SQL Server met attestation met behulp van HGS

Vereiste voorwaarden

De computer die als host fungeert voor uw SQL Server-exemplaar (ook wel SQL Server-computer genoemd) moet voldoen aan de volgende vereisten:

  • SQL Server 2019 (15.x) of hoger.
  • Windows 10 of hoger, Windows Server 2019 of hoger.
  • CPU-ondersteuning voor virtualisatietechnologieën:
    • Intel VT-x met uitgebreide paginatabellen.
    • AMD-V met Snelle virtualisatieindexering.
    • Als u SQL Server uitvoert op een VIRTUELE machine:
      • Gebruik in Azure een VM-grootte van de tweede generatie (aanbevolen) of gebruik een VM-grootte van de eerste generatie waarvoor geneste virtualisatie is ingeschakeld. Raadpleeg de documentatie voor afzonderlijke VM-grootten om te bepalen welke VM-grootten van de eerste generatie ondersteuning bieden voor geneste virtualisatie.
      • Zorg er in Hyper-V 2016 of hoger (buiten Azure) voor dat uw virtuele machine een VM van de tweede generatie is (aanbevolen) of dat het een virtuele machine van de eerste generatie is waarvoor geneste virtualisatie is ingeschakeld. Zie Moet ik een virtuele machine van de 1e of 2e generatie maken in Hyper-V engeneste virtualisatie configureren voor meer informatie.
      • Schakel op VMware vSphere 6.7 of hoger ondersteuning voor beveiliging op basis van virtualisatie in voor de VIRTUELE machine, zoals beschreven in de VMware-documentatie.
      • Andere hypervisors en openbare clouds bieden mogelijk ondersteuning voor geneste virtualisatiemogelijkheden die Always Encrypted met VBS Enclaves mogelijk maken. Raadpleeg de documentatie van uw virtualisatieoplossing voor compatibiliteits- en configuratie-instructies.
  • De nieuwste versie van SQL Server Management Studio (SSMS). Als alternatief kunt u SSMS installeren op een andere computer.

Waarschuwing

In productieomgevingen kan het uitvoeren van SSMS of andere hulpprogramma's voor sleutelbeheer op de SQL Server-computer de beveiligingsvoordelen van het gebruik van Always Encrypted verminderen. Over het algemeen wordt het uitvoeren van dergelijke hulpprogramma's op een andere computer aanbevolen. Zie Beveiligingsoverwegingen voor sleutelbeheer voor meer informatie.

Stap 1: Zorg ervoor dat beveiliging op basis van virtualisatie (VBS) is ingeschakeld

  1. Meld u als beheerder aan bij uw SQL Server-computer, open een Windows PowerShell-console met verhoogde bevoegdheid en voer msinfo32.exeuit. Controleer of VBS actief is. Als VBS wordt uitgevoerd, slaat u de resterende stappen in deze sectie over en gaat u naar de volgende sectie.

    Schermopname van de beveiligingsdetails op basis van systeeminformatievirtualisatie.

  2. Schakel VBS in door de volgende cmdlet uit te voeren in de PowerShell-sessie.

    Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard -Name EnableVirtualizationBasedSecurity -Value 1
    
  3. Als uw SQL Server-computer een virtuele machine is, moet u de VBS-vereiste voor platformbeveiligingsfuncties verwijderen als uw SQL Server-computer geen ondersteuning biedt voor UEFI Secure Boot of een fysieke machine die niet is uitgerust met een IOMMU. Verwijder de vereiste voor Beveiligd opstarten en IOMMU door de volgende opdracht uit te voeren op uw SQL Server-computer in een PowerShell-console met verhoogde bevoegdheid:

    Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard -Name RequirePlatformSecurityFeatures -Value 0
    
  4. Start de SQL Server-computer opnieuw op om VBS online te krijgen.

    Restart-Computer
    
  5. Herhaal stap 1 om te controleren of VBS actief is.

Stap 2: Always Encrypted inschakelen met beveiligde enclaves in SQL Server

In deze stap schakelt u de functionaliteit van Always Encrypted in met behulp van enclaves in uw SQL Server-exemplaar.

  1. Maak met behulp van SSMS verbinding met uw SQL Server-exemplaar als sysadmin zonder Always Encrypted ingeschakeld voor de databaseverbinding.

    1. Start SSMS.

    2. Geef in het dialoogvenster Verbinding maken met server de servernaam op, selecteer een verificatiemethode en geef uw referenties op.

    3. Selecteer Opties >> en selecteer het tabblad Always Encrypted .

    4. Zorg ervoor dat het selectievakje Always Encrypted inschakelen (kolomversleuteling) is niet geselecteerd.

      Schermopname van de SSMS-verbindingsoptie voor Always Encrypted uitgeschakeld.

    5. Selecteer Maak verbinding met.

  2. Open een nieuw queryvenster en voer de onderstaande instructie uit om het type beveiligde enclave in te stellen op beveiliging op basis van virtualisatie (VBS).

    EXEC sys.sp_configure 'column encryption enclave type', 1;
    RECONFIGURE;
    
  3. Start uw SQL Server-exemplaar opnieuw op voordat de vorige wijziging van kracht wordt. U kunt het exemplaar opnieuw opstarten in SSMS door er met de rechtermuisknop op te klikken in Objectverkenner en Opnieuw opstarten te selecteren. Zodra het exemplaar opnieuw is opgestart, maakt u opnieuw verbinding met het exemplaar.

  4. Controleer of de beveiligde enclave nu is geladen door de volgende query uit te voeren:

    SELECT [name], [value], [value_in_use] FROM sys.configurations
    WHERE [name] = 'column encryption enclave type';
    

    De query moet het volgende resultaat retourneren:

    naam waarde gebruikswaarde
    enclave-type voor kolomversleuteling 1 1

Stap 3: Een voorbeelddatabase maken

In deze stap maakt u een database met enkele voorbeeldgegevens, die u later gaat versleutelen.

  1. Voer met behulp van het SSMS-exemplaar uit de vorige stap de onderstaande instructie uit in een queryvenster om een nieuwe database met de naam ContosoHR te maken.

    CREATE DATABASE [ContosoHR];
    
  2. Maak een nieuwe tabel met de naam Werknemers.

    USE [ContosoHR];
    GO
    
    CREATE SCHEMA [HR];
    GO
    
    CREATE TABLE [HR].[Employees]
    (
        [EmployeeID] [int] IDENTITY(1,1) NOT NULL,
        [SSN] [char](11) NOT NULL,
        [FirstName] [nvarchar](50) NOT NULL,
        [LastName] [nvarchar](50) NOT NULL,
        [Salary] [money] NOT NULL
    ) ON [PRIMARY];
    
  3. Voeg enkele werknemersrecords toe aan de tabel Werknemers .

    USE [ContosoHR];
    GO
    
    INSERT INTO [HR].[Employees]
            ([SSN]
            ,[FirstName]
            ,[LastName]
            ,[Salary])
        VALUES
            ('795-73-9838'
            , N'Catherine'
            , N'Abel'
            , $31692);
    
    INSERT INTO [HR].[Employees]
            ([SSN]
            ,[FirstName]
            ,[LastName]
            ,[Salary])
        VALUES
            ('990-00-6818'
            , N'Kim'
            , N'Abercrombie'
            , $55415);
    

Stap 4: Enclave-ingeschakelde sleutels voorzien

In deze stap maakt u een kolomhoofdsleutel en een kolomversleutelingssleutel waarmee enclaveberekeningen zijn toegestaan.

  1. Vouw met behulp van het SSMS-exemplaar uit de vorige stap in Objectverkenner uw database uit en navigeer naarAlways Encrypted-sleutels>.

  2. Richt een nieuwe kolomhoofdsleutel met enclave in:

    1. Klik met de rechtermuisknop op Always Encrypted-sleutels en selecteer Nieuwe kolomhoofdsleutel....

    2. Selecteer de naam van de kolomhoofdsleutel: CMK1.

    3. Zorg ervoor dat u Windows Certificate Store (huidige gebruiker of lokale computer) ofAzure Key Vault selecteert.

    4. Selecteer Enclaveberekeningen toestaan.

    5. Als u Azure Key Vault hebt geselecteerd, meldt u zich aan bij Azure en selecteert u uw sleutelkluis. Zie Uw sleutelkluizen beheren vanuit de Azure-portal voor meer informatie over het maken van een sleutelkluis voor Always Encrypted.

    6. Selecteer uw certificaat of Azure Key Value-sleutel als deze al bestaat of selecteer de knop Certificaat genereren om een nieuw certificaat te maken.

    7. Kies OK.

      Schermopname van de optie 'toestaan van enclaveberekeningen' in SSMS bij het maken van een nieuwe kolomhoofdsleutel.

  3. Maak een nieuwe enclave-geactiveerde kolomversleutelingssleutel aan:

    1. Klik met de rechtermuisknop op Always Encrypted-sleutels en selecteer Nieuwe kolomversleutelingssleutel.
    2. Voer een naam in voor de nieuwe kolomversleutelingssleutel: CEK1.
    3. Selecteer in de vervolgkeuzelijst Kolomhoofdsleutel de kolomhoofdsleutel die u in de vorige stappen hebt gemaakt.
    4. Kies OK.

Stap 5: Enkele kolommen ter plaatse versleutelen

In deze stap versleutelt u de gegevens die zijn opgeslagen in de kolommen SSN en Salaris in de enclave aan de serverzijde en test u vervolgens een SELECT-query op de gegevens.

  1. Open een nieuw SSMS-exemplaar en maak verbinding met uw SQL Server-exemplaar met Always Encrypted ingeschakeld voor de databaseverbinding.

    1. Start een nieuw exemplaar van SSMS.

    2. Geef in het dialoogvenster Verbinding maken met server de servernaam op, selecteer een verificatiemethode en geef uw referenties op.

    3. Selecteer Opties >> en selecteer het tabblad Always Encrypted .

    4. Schakel het selectievakje Always Encrypted inschakelen (kolomversleuteling) in.

    5. Selecteer Beveiligde enclaves inschakelen.

    6. Stel Protocol in op Geen.

      Schermopname van het tabblad Verbinding maken met server Always Encrypted zonder attestation met behulp van SSMS.

    7. Selecteer Maak verbinding met.

    8. Als u wordt gevraagd om de parameterisatie in te schakelen voor Always Encrypted-query's, selecteert u inschakelen.

  2. Open met hetzelfde SSMS-exemplaar (met Always Encrypted ingeschakeld) een nieuw queryvenster en versleutel de kolommen SSN en Salaris door de onderstaande query's uit te voeren.

    USE [ContosoHR];
    GO
    
    ALTER TABLE [HR].[Employees]
    ALTER COLUMN [SSN] [char] (11) COLLATE Latin1_General_BIN2
    ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
    WITH
    (ONLINE = ON);
    
    ALTER TABLE [HR].[Employees]
    ALTER COLUMN [Salary] [money]
    ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
    WITH
    (ONLINE = ON);
    
    ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
    

    Opmerking

    Let op de instructie ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE om de cache van het queryplan voor de database in het bovenstaande script te wissen. Nadat u de tabel hebt gewijzigd, moet u de plannen voor alle batches en opgeslagen procedures voor toegang tot de tabel wissen om versleutelingsinformatie over parameters te vernieuwen.

  3. Als u wilt controleren of de kolommen SSN en Salaris nu zijn versleuteld, opent u een nieuw queryvenster in het SSMS-exemplaar zonder Always Encrypted ingeschakeld voor de databaseverbinding en voert u de onderstaande instructie uit. Het queryvenster moet versleutelde waarden retourneren in de kolommen SSN en Salaris . Als u dezelfde query uitvoert met behulp van het SSMS-exemplaar waarvoor Always Encrypted is ingeschakeld, ziet u de gegevens ontsleuteld.

    SELECT * FROM [HR].[Employees];
    

Stap 6: Uitgebreide query's uitvoeren op versleutelde kolommen

U kunt nu uitgebreide query's uitvoeren op de versleutelde kolommen. Sommige queryverwerking wordt uitgevoerd in uw enclave aan de serverzijde.

  1. Zorg ervoor dat parameterisatie voor Always Encrypted ook is ingeschakeld in het SSMS-exemplaar waarvoor Always Encrypted is ingeschakeld.

    1. Kies Extra in het hoofdmenu van SSMS.
    2. Selecteer Opties....
    3. Navigeer naar query-uitvoering>SQL Server>Advanced.
    4. Zorg ervoor dat Parameterisatie inschakelen voor Always Encrypted- is ingeschakeld.
    5. Kies OK.
  2. Open een nieuw queryvenster, plak deze en voer de onderstaande query uit. De query moet waarden voor tekst zonder opmaak retourneren en rijen die voldoen aan de opgegeven zoekcriteria.

    DECLARE @SSNPattern [char](11) = '%6818';
    DECLARE @MinSalary [money] = $1000;
    SELECT * FROM [HR].[Employees]
    WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
    
  3. Probeer dezelfde query opnieuw in het SSMS-exemplaar waarvoor Always Encrypted niet is ingeschakeld en noteer de fout die optreedt.

Volgende stappen

Nadat u deze zelfstudie hebt voltooid, kunt u naar een van de volgende zelfstudies gaan:

Zie ook