Delen via


Zelfstudie: Aan de slag met Always Encrypted met Intel SGX-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. Je gebruikt Intel Software Guard Extensions (Intel SGX)-enclaves. U ziet het volgende:

  • Een omgeving maken voor het testen en evalueren van Always Encrypted met Intel SGX-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).

Vereiste voorwaarden

PowerShell-vereisten

Opmerking

De vereisten die in deze sectie worden vermeld, zijn alleen van toepassing als u PowerShell wilt gebruiken voor een aantal van de stappen in deze zelfstudie. Als u in plaats daarvan Azure Portal wilt gebruiken, kunt u deze sectie overslaan.

Az PowerShell module versie 9.3.0 of hoger is vereist. Zie De Azure Az PowerShell-module installeren voor meer informatie over het installeren van de Az PowerShell-module. Voer de volgende opdracht uit vanuit PowerShell om te bepalen welke versie van de Az PowerShell-module op uw computer is geïnstalleerd.

Get-InstalledModule -Name Az

Stap 1: Een server en een DC-seriedatabase maken en configureren

In deze stap maakt u een nieuwe logische Azure SQL Database-server en een nieuwe database met DC-seriehardware die vereist is voor Always Encrypted met beveiligde enclaves. Zie DC-serievoor meer informatie.

  1. Ga naar Azure SQL Hub op aka.ms/azuresqlhub.

  2. Selecteer Opties weergeven in het deelvenster voor Azure SQL Database.

  3. Selecteer In het venster Opties voor Azure SQL Databasede optie SQL Database maken.

    Schermopname van Azure Portal met de Azure SQL-hub, de knop Opties weergeven en de knop SQL Database maken.

  4. Selecteer op het tabblad Basisbeginselen van het formulier SQL Database maken onder Projectdetails het gewenste Azure-abonnement.

  5. Selecteer Nieuwe maken voor de resourcegroep, voer een naam in voor uw resourcegroep en selecteer OK.

  6. Voer contosoHR in voor databasenaam.

  7. Voor Serverselecteert u Nieuwemaken en vult u het formulier Nieuwe server in met de volgende waarden:

    • Servernaam: voer mysqlserver-in en voeg enkele tekens toe voor uniekheid. We kunnen geen exacte servernaam opgeven die moet worden gebruikt, omdat servernamen globaal uniek moeten zijn voor alle servers in Azure, niet alleen uniek binnen een abonnement. Voer dus iets in als mysqlserver135 en de portal laat u weten of deze beschikbaar is of niet.
    • Locatie: Selecteer een locatie in de vervolgkeuzelijst.

      Belangrijk

      U moet een locatie (een Azure-regio) selecteren die zowel hardware uit de DC-serie als Microsoft Azure Attestation ondersteunt. Zie beschikbaarheid van DC-serie voor de lijst met regio's die DC-serie ondersteunen. Bekijk de regionale beschikbaarheid van Microsoft Azure Attestation.

    • Verificatiemethode: SELECTEER SQL-verificatie gebruiken
    • Aanmelding van de serverbeheerder: voer een aanmeldingsnaam voor de beheerder in, bijvoorbeeld : azureuser.
    • wachtwoord: voer een wachtwoord in dat voldoet aan de vereisten en voer het opnieuw in het veld Wachtwoord bevestigen in.
    • Kies OK.
  8. Laat Wilt u de elastische SQL-pool gebruiken ingesteld op Geen.

  9. Selecteer onder Compute en opslagde optie Database configureren en selecteer Configuratie wijzigen.

    Schermopname van de hardwareconfiguratie van Azure Portal en waar de database moet worden geconfigureerd.

  10. Selecteer de hardwareconfiguratie DC-serie, en selecteer vervolgens OK.

  11. Selecteer de optie Toepassen.

  12. Controleer op het tabblad Basisbeginselen of Compute + opslag is ingesteld op Algemeen gebruik, DC, 2 vCores, 32 GB-opslag.

  13. Voor redundantie van back-upopslag selecteert u Lokaal redundante back-upopslag.

  14. Selecteer Volgende: Netwerken onder aan de pagina.

    Schermopname van Azure Portal met de basisbeginselen van de database van de DC-serie configureren.

  15. Selecteer op het tabblad Netwerken , voor de connectiviteitsmethode, het openbare eindpunt.

  16. Voor firewallregels stelt u huidig IP-adres van client toevoegen in op Ja. Laat Azure-services en -resources toegang geven tot deze server ingesteld op Nee.

  17. Voor verbindingsbeleid laat u het verbindingsbeleid op de standaardwaarde staan: maakt gebruik van omleidingsbeleid voor alle clientverbindingen die afkomstig zijn van Azure en Proxy voor alle clientverbindingen die afkomstig zijn van buiten Azure

  18. Voor versleutelde verbindingen laat u de minimale TLS-versie op TLS 1.2 staan.

  19. Selecteer Review + create onderaan de pagina.

    Schermopname van het Azure Portal, netwerk tabblad, SQL Database maken.

  20. Controleer op de pagina Beoordelen en maken de instellingen en selecteer daarna Maken.

Stap 2: Een attestation-provider configureren

In deze stap maakt en configureert u een Attestation-provider in Microsoft Azure Attestation. Dit is nodig om de beveiligde enclave te bevestigen die uw database gebruikt.

  1. Ga naar de pagina Attestationprovider aanmaken.

  2. Geef op de pagina Attestation-provider maken de volgende invoer op:

    • Abonnement: Kies hetzelfde abonnement waarin u de logische Azure SQL-server hebt gemaakt.
    • Resourcegroep: kies dezelfde resourcegroep waarin u de logische Azure SQL-server hebt gemaakt.
    • Naam: voer myattestprovider in en voeg enkele tekens toe voor uniekheid. We kunnen geen exacte attestation-providernaam opgeven die moet worden gebruikt, omdat namen wereldwijd uniek moeten zijn. Voer dus iets in als myattestprovider12345 en de portal laat u weten of deze beschikbaar is of niet.
    • Locatie: Kies dezelfde locatie als uw logische Azure SQL-server.
    • Certificaatbestand voor beleidsaantekening: laat dit veld leeg, omdat u een niet-ondertekend beleid configureert.
  3. Nadat u de vereiste invoer hebt opgegeven, selecteert u Beoordelen en maken.

    Schermopname van het menu Attestation-provider maken in Azure Portal.

  4. Klik op Creëren.

  5. Zodra de attestation-provider is gemaakt, selecteert u Ga naar de resource.

  6. Kopieer op het tabblad Overzicht voor de Attestation-provider de waarde van de attest-URI-eigenschap naar het klembord en sla deze op in een bestand. Dit is de attestation-URL, die u in latere stappen nodig hebt.

  7. Selecteer Beleid in het resourcemenu aan de linkerkant van het venster of in het onderste deelvenster.

  8. Stel attestatietype in op SGX-IntelSDK.

  9. Selecteer Configureren in het bovenste menu.

    Schermopname van het configureren van attestation-beleid in Azure Portal.

  10. Stel Beleidsformat in op Tekst. Laat beleidsopties ingesteld op Beleid invoeren.

  11. Vervang in het tekstveld Beleid het standaardbeleid door het volgende beleid. Zie Een attestation-provider maken en configurerenvoor meer informatie.

    version= 1.0;
    authorizationrules 
    {
           [ type=="x-ms-sgx-is-debuggable", value==false ]
            && [ type=="x-ms-sgx-product-id", value==4639 ]
            && [ type=="x-ms-sgx-svn", value>= 2 ]
            && [ type=="x-ms-sgx-mrsigner", value=="e31c9e505f37a58de09335075fc8591254313eb20bb1a27e5443cc450b6e33e5"] 
        => permit();
    
           [ type=="x-ms-sgx-is-debuggable", value==false ]
            && [ type=="x-ms-sgx-product-id", value==4639 ]
            && [ type=="x-ms-sgx-svn", value>= 2 ]
            && [ type=="x-ms-sgx-mrsigner", value=="a0f8e7f72092fb6a5d5752ffccd47fb3af7027ffb589b24e921e81f5703f3a9a"]
        => permit();
    };
    
  12. Selecteer Opslaan.

    Schermopname van het bewerken van een attestation-beleid in Azure Portal.

  13. Selecteer Vernieuwen in het bovenste menu om het geconfigureerde beleid weer te geven.

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 met 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 Verbindingseigenschappen . 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 inschakelen (kolomversleuteling) is niet geselecteerd.

      Schermopname van Verbinding maken met server met behulp van SSMS zonder Always Encrypted ingeschakeld.

    5. Selecteer Maak verbinding met.

  2. Maak een nieuwe tabel met de naam Employees.

    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 Employees tabel.

    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. Voer een naam in voor de nieuwe kolomhoofdsleutel: CMK1.
    3. Controleer of Enclaveberekeningen toestaan is geselecteerd. (Deze optie wordt 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. Schermopname van de selectie van enclaveberekeningen toestaan in SSMS bij het maken van een nieuwe kolomhoofdsleutel.
    5. Kies OK.
  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 SSN en Salary kolommen 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 met server de volledig gekwalificeerde naam van uw server op (bijvoorbeeld <server name>.database.windows.net) en voer de gebruikersnaam van de beheerder en het wachtwoord in dat u hebt opgegeven bij het maken van de server.

    3. Selecteer Opties >> en selecteer het tabblad Verbindingseigenschappen . 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. (Deze stap is van toepassing op SSMS 19 of hoger.)

    7. Stel Protocol in op Microsoft Azure Attestation. (Deze stap is van toepassing op SSMS 19 of hoger.)

    8. Geef uw enclave attestation-URL op die u hebt verkregen door de stappen in stap 2 te volgen: Een attestation-provider configureren.

      Schermopname van het dialoogvenster Verbinding maken met server met SSMS always encrypted, met attestation ingeschakeld.

    9. Selecteer Maak verbinding met.

    10. 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 SSN kolommen Salary door de volgende T-SQL-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;
    

    Opmerking

    Let op de ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE instructie 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 wissen die toegang hebben tot de tabel om versleutelingsinformatie over parameters te vernieuwen.

  3. Als u wilt controleren of de SSN kolommen Salary nu zijn versleuteld, opent u een nieuw queryvenster in het SSMS-exemplaar zonder Always Encrypted ingeschakeld voor de databaseverbinding en voert u de volgende instructie uit. Het queryvenster moet versleutelde waarden in de SSN en Salary kolommen retourneren. 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. 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 de volgende 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. Een storing zou moeten optreden.

Handleidingen

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