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. U 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.
- In-place gegevens versleutelen en uitgebreide vertrouwelijke query's uitvoeren op versleutelde kolommen met behulp van SQL Server Management Studio (SSMS).
Vereisten
- Een actief Azure-abonnement. Als u nog geen account hebt, kunt u een gratis account maken. U moet lid zijn van de rol Inzender of de rol Eigenaar voor het abonnement om resources te kunnen maken en een attestation-beleid te kunnen configureren.
- Optioneel, maar aanbevolen voor het opslaan van uw kolomhoofdsleutel voor Always Encrypted: een sleutelkluis in Azure Key Vault. Zie quickstart: Een sleutelkluis maken met behulp van Azure Portal voor meer informatie over het maken van een sleutelkluis.
- Als uw sleutelkluis gebruikmaakt van het machtigingsmodel voor toegangsbeleid, moet u ervoor zorgen dat u de volgende sleutelmachtigingen hebt in de sleutelkluis:
get
, ,create
list
,unwrap key
,wrap key
, , .verify
sign
Zie Toegangsbeleid voor Key Vault toewijzen voor meer informatie. - Als u het RBAC-machtigingsmodel (op rollen gebaseerd toegangsbeheer) van Azure gebruikt, moet u ervoor zorgen dat u lid bent van de rol Crypto Officer van Key Vault voor uw sleutelkluis. Zie Toegang bieden tot Key Vault-sleutels, -certificaten en -geheimen met een op rollen gebaseerd toegangsbeheer van Azure.
- Als uw sleutelkluis gebruikmaakt van het machtigingsmodel voor toegangsbeleid, moet u ervoor zorgen dat u de volgende sleutelmachtigingen hebt in de sleutelkluis:
- De nieuwste versie van SQL Server Management Studio (SSMS).
PowerShell-vereisten
Notitie
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-serie voor meer informatie.
Blader naar de optiepagina SQL-implementatie selecteren.
Als u nog niet bent aangemeld bij Azure Portal, meldt u zich aan wanneer u hierom wordt gevraagd.
Laat onder SQL-databases de optie Resourcetype ingesteld op Eén database en selecteer Maken.
Selecteer op het tabblad Basisinformatie van het formulier SQL-database maken, onder Projectgegevens, het gewenste Azure-abonnement.
Selecteer Nieuwe maken voor de resourcegroep, voer een naam in voor uw resourcegroep en selecteer OK.
Voer contosoHR in voor databasenaam.
Selecteer voor Server de optie Nieuwe maken en vul 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 geven die moet worden gebruikt omdat servernamen globaal uniek moeten zijn voor alle servers in Azure en niet alleen uniek moeten zijn 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. Dit is 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.
- Selecteer OK.
Laat de instelling voor Wilt u een elastische SQL-pool gebruiken? ongewijzigd op Nee.
Selecteer onder Compute en opslag de optie Database configureren en selecteer Configuratie wijzigen.
Selecteer de hardwareconfiguratie van de DC-serie en selecteer VERVOLGENS OK.
Selecteer Toepassen.
Controleer op het tabblad Basisbeginselen of Compute + opslag is ingesteld op Algemeen gebruik, DC, 2 vCores, 32 GB-opslag.
Voor redundantie van back-upopslag selecteert u Lokaal redundante back-upopslag.
Selecteer Volgende: Netwerken onder aan de pagina.
Selecteer op het tabblad Netwerken voor Verbindingsmethode de optie Openbaar eindpunt.
Stel voor Firewallregels de optie Huidig IP-adres van client toevoegen in op Ja. Laat de instelling voor Toestaan dat Azure-services en -resources toegang tot deze server krijgen ongewijzigd op Nee.
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
Voor versleutelde verbindingen laat u de minimale TLS-versie op TLS 1.2 staan.
Selecteer Controleren en maken onderaan de pagina.
Selecteer op de pagina Controleren en maken na het controleren de optie 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.
Blader naar de pagina Attestation-provider maken.
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.
Nadat u de vereiste invoer hebt opgegeven, selecteert u Beoordelen en maken.
Selecteer Maken.
Zodra de attestation-provider is gemaakt, selecteert u Ga naar de resource.
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.
Selecteer Beleid in het resourcemenu aan de linkerkant van het venster of in het onderste deelvenster.
Stel attestation-type in op SGX-IntelSDK.
Selecteer Configureren in het bovenste menu.
Stel de beleidsindeling in op Tekst. Laat beleidsopties ingesteld op Beleid invoeren.
Vervang in het tekstveld Beleid het standaardbeleid door het onderstaande beleid. Zie Een Attestation-provider maken en configureren voor meer informatie over het onderstaande beleid.
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();
};
Selecteer Opslaan.
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.
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.
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.
Selecteer Opties >> en selecteer het tabblad Verbindingseigenschappen . Zorg ervoor dat u de ContosoHR-database selecteert (niet de standaarddatabase
master
).Selecteer het tabblad Always Encrypted .
Zorg ervoor dat het selectievakje Always Encrypted (kolomversleuteling) inschakelen niet is ingeschakeld.
Selecteer Verbinding maken.
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
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.
Vouw met behulp van het SSMS-exemplaar uit de vorige stap in Objectverkenner uw database uit en navigeer naar Always Encrypted-sleutels voor beveiliging>.
Richt een nieuwe kolomhoofdsleutel met enclave in:
- Klik met de rechtermuisknop op Always Encrypted-sleutels en selecteer Nieuwe kolomhoofdsleutel....
- Voer een naam in voor de nieuwe kolomhoofdsleutel: CMK1.
- 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.)
- 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.
- Selecteer OK.
Maak een nieuwe enclave-versleutelingssleutel voor kolommen:
- Klik met de rechtermuisknop op Always Encrypted-sleutels en selecteer Nieuwe kolomversleutelingssleutel.
- Voer een naam in voor de nieuwe kolomversleutelingssleutel: CEK1.
- Selecteer in de vervolgkeuzelijst Kolomhoofdsleutel de kolomhoofdsleutel die u in de vorige stappen hebt gemaakt.
- 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.
Open een nieuw SSMS-exemplaar en maak verbinding met uw database met Always Encrypted ingeschakeld voor de databaseverbinding.
Start een nieuw exemplaar van SSMS.
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.
Selecteer Opties >> en selecteer het tabblad Verbindingseigenschappen . Zorg ervoor dat u de ContosoHR-database selecteert (niet de standaarddatabase
master
).Selecteer het tabblad Always Encrypted .
Schakel het selectievakje Always Encrypted inschakelen (kolomversleuteling) in.
Selecteer Beveiligde enclaves inschakelen. (Deze stap is van toepassing op SSMS 19 of hoger.)
Stel Protocol in op Microsoft Azure Attestation. (Deze stap is van toepassing op SSMS 19 of hoger.)
Geef uw enclave attestation-URL op die u hebt verkregen door de stappen in stap 2 te volgen: Een attestation-provider configureren. Zie de onderstaande schermopname.
Selecteer Verbinding maken.
Als u wordt gevraagd parameterisatie in te schakelen voor Always Encrypted-query's, selecteert u Inschakelen.
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
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 wissen die toegang hebben tot de tabel om versleutelingsinformatie over parameters te vernieuwen.
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.
Zorg ervoor dat parameterisatie voor Always Encrypted ook is ingeschakeld in het SSMS-exemplaar waarvoor Always Encrypted is ingeschakeld.
- Selecteer Extra in het hoofdmenu van SSMS.
- Selecteer Opties....
- Navigeer naar Sql Server>Advanced voor queryuitvoering.>
- Zorg ervoor dat Parameterisatie voor Always Encrypted is ingeschakeld.
- Selecteer OK.
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;
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:
- Zelfstudie: Een .NET-toepassing ontwikkelen met Always Encrypted met beveiligde enclaves
- Zelfstudie: Een .NET Framework-toepassing ontwikkelen met Always Encrypted met beveiligde enclaves
- Zelfstudie: Indexen maken en gebruiken voor enclavekolommen met behulp van gerandomiseerde versleuteling