Delen via


Zelfstudie: Aan de slag met Always Encrypted met VBS-enclaves in Azure SQL Database

Van toepassing op: Azure SQL Database

In deze zelfstudie leert u hoe u aan de slag gaat met Always Encrypted met beveiligde enclaves in Azure SQL Database met behulp van VBS-enclaves (virtualization-based security). U ziet het volgende:

  • Een omgeving maken voor het testen en evalueren van Always Encrypted met VBS-enclaves.
  • In-place gegevens versleutelen en uitgebreide vertrouwelijke query's uitvoeren op versleutelde kolommen met behulp van SQL Server Management Studio (SSMS).

Vereisten

Hulpprogrammavereisten

SQL Server Management Studio (SSMS) is vereist voor deze zelfstudie. U kunt PowerShell of de Azure CLI gebruiken om VBS-enclaves in te schakelen.

Download de nieuwste versie van SQL Server Management Studio (SSMS).

Stap 1: Een server en een database maken en configureren

In deze stap maakt u een nieuwe logische Azure SQL Database-server en een nieuwe database.

Ga naar Quickstart: Een individuele database maken - Azure SQL Database en volg de instructies in de sectie Eén database maken om een nieuwe logische Azure SQL Database-server en een nieuwe database te maken.

Belangrijk

Zorg ervoor dat u een lege database maakt met de naam ContosoHR (en niet een voorbeelddatabase).

Stap 2: een VBS-enclave inschakelen

In deze stap schakelt u een VBS-enclave in de database in. Deze is vereist voor Always Encrypted met beveiligde enclaves. Als u VBS-enclaves in uw database wilt inschakelen, moet u de eigenschap preferredEnclaveType-databaseinstellen op VBS.

  1. Open Azure Portal en zoek de database waarvoor u beveiligde enclaves wilt inschakelen.

  2. Selecteer Gegevensversleuteling in de beveiligingsinstellingen.

  3. Selecteer in het menu Gegevensversleuteling het tabblad Always Encrypted .

  4. Stel Beveiligde enclaves in op AAN. Als deze optie al is ingesteld op AAN , gaat u verder met de volgende stap.

    Screenshot of enabling secure enclaves on an existing database in the Azure portal.

  5. Selecteer Opslaan om uw Always Encrypted-configuratie op te slaan.

Stap 3: De database vullen

In deze stap maakt u een tabel en vult u deze met enkele gegevens die u later gaat versleutelen en er query's op uitvoeren.

  1. Open SSMS en maak verbinding met de ContosoHR-database op de logische Azure SQL-server die u hebt gemaakt zonder Always Encrypted ingeschakeld in de databaseverbinding.

    1. Geef in het dialoogvenster Verbinding maken server de volledig gekwalificeerde naam van uw server op (bijvoorbeeld myserver135.database.windows.net) en voer de gebruikersnaam van de beheerder en het wachtwoord in dat u hebt opgegeven toen u de server maakte.

    2. Selecteer Opties >> en selecteer het tabblad Verbinding maken eigenschappen. Zorg ervoor dat u de ContosoHR-database selecteert (niet de standaarddatabase). master

    3. Selecteer het tabblad Always Encrypted .

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

      Screenshot of Connect to Server using SSMS without Always Encrypted enabled.

    5. Selecteer Verbinding maken.

  2. Maak een nieuwe tabel met de naam Werknemers.

    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];
    GO
    
  3. Voeg enkele werknemersrecords toe aan de tabel Werknemers .

    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: Sleutels met enclave inrichten

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

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

  2. Richt een nieuwe kolomhoofdsleutel met enclave in:

    1. Klik met de rechtermuisknop op Always Encrypted-sleutels en selecteer Nieuwe kolomhoofdsleutel....
    2. Voer een naam in voor de nieuwe kolomhoofdsleutel: CMK1.
    3. Controleer of Enclaveberekeningen toestaan is geselecteerd. (Deze optie is standaard geselecteerd als een beveiligde enclave is ingeschakeld voor de database. Deze moet worden ingeschakeld omdat uw database gebruikmaakt van de hardwareconfiguratie van de DC-serie.)
    4. Selecteer Azure Key Vault (aanbevolen) of Windows Certificate Store (huidige gebruiker of lokale computer).
      • Als u Azure Key Vault selecteert, meldt u zich aan bij Azure, selecteert u een Azure-abonnement met een sleutelkluis die u wilt gebruiken en selecteert u uw sleutelkluis. Selecteer Sleutel genereren om een nieuwe sleutel te maken.
      • Als u Windows Certificate Store selecteert, selecteert u de knop Certificaat genereren om een nieuw certificaat te maken. Screenshot of the allow enclave computations selection in SSMS when creating a new column master key.
    5. Selecteer OK.
  3. Maak een nieuwe enclave-versleutelingssleutel voor kolommen:

    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. Selecteer 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 database met Always Encrypted ingeschakeld voor de databaseverbinding.

    1. Start een nieuw exemplaar van SSMS.

    2. Geef in het dialoogvenster Verbinding maken server de volledig gekwalificeerde naam van uw server op (bijvoorbeeld myserver135.database.windows.net) en voer de gebruikersnaam van de beheerder en het wachtwoord in dat u hebt opgegeven toen u de server maakte.

    3. Selecteer Opties >> en selecteer het tabblad Verbinding maken eigenschappen. Zorg ervoor dat u de ContosoHR-database selecteert (niet de standaarddatabase). master

    4. Selecteer het tabblad Always Encrypted .

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

    6. Selecteer Beveiligde enclaves inschakelen.

    7. Stel Protocol in op Geen. Zie de onderstaande schermopname.

      Screenshot of the SSMS Connect to Server dialog Always Encrypted tab, with attestation protocol set to None.

    8. Selecteer Verbinding maken.

    9. Als u wordt gevraagd 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 instructies uit te voeren.

    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;
    

    Notitie

    De instructie ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE wist de cache van het queryplan voor de database in het bovenstaande script. Nadat u de tabel hebt gewijzigd, moet u de plannen voor alle batches en opgeslagen procedures wissen die toegang hebben tot de tabel 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 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. Selecteer Extra in het hoofdmenu van SSMS.
    2. Selecteer Opties....
    3. Navigeer naar Sql Server>Advanced voor queryuitvoering.>
    4. Zorg ervoor dat Parameterisatie voor Always Encrypted is ingeschakeld.
    5. Selecteer OK.
  2. Open een nieuw queryvenster, plak de onderstaande query en voer deze 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. Er moet een fout optreden.

Volgende stappen

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

Zie ook