Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op: SQL Server 2019 (15.x) en latere versies in Windows
Azure SQL Database
Always Encrypted met de functie van beveiligde enclaves stelt sommige Transact-SQL (T-SQL)-instructies in staat om vertrouwelijke berekeningen uit te voeren op versleutelde databasekolommen in een beveiligde enclave aan de serverkant.
Verklaringen met behulp van beveiligde enclaves
De volgende typen T-SQL-instructie maken gebruik van beveiligde enclaves.
DDL-instructies met beveiligde enclaves
Voor de volgende typen DDL--instructies (Data Definition Language) zijn beveiligde enclaves vereist.
- ALTER TABLE column_definition instructies die cryptografische bewerkingen ter plaatse activeren met behulp van enclave-ingeschakelde sleutels. Zie Kolomversleuteling in-place configureren met Always Encrypted met beveiligde enclavesvoor meer informatie.
- CREATE INDEX en ALTER INDEX-instructies die indexen maken of wijzigen op kolommen met enclave-ondersteuning met behulp van gerandomiseerde encryptie. Zie Indexen maken en gebruiken voor kolommen met Always Encrypted met beveiligde enclavesvoor meer informatie.
DML-instructies met behulp van beveiligde enclaves
De volgende DML (Data Manipulation Language) instructies of queries tegen enclave-ingeschakelde kolommen die gebruikmaken van gerandomiseerde versleuteling vereisen beveiligde enclaves.
- Query's die gebruikmaken van een of meer van de volgende Transact-SQL operators die worden ondersteund in beveiligde enclaves:
- vergelijkingsoperators
- BETWEEN
- IN
- LIKE
- DISTINCT
- Joins - SQL Server 2019 (15.x) ondersteunt alleen geneste luskoppelingen. SQL Server 2022 (16.x) en Azure SQL Database ondersteunt geneste lus, hash- en samenvoegingskoppelingen
- SELECT - ORDER BY clase. Ondersteund in SQL Server 2022 (16.x) en Azure SQL Database. Niet ondersteund in SQL Server 2019 (15.x)
- SELECT - GROUP BY clase. Ondersteund in SQL Server 2022 (16.x) en Azure SQL Database. Niet ondersteund in SQL Server 2019 (15.x)
- Query's die rijen invoegen, bijwerken of verwijderen, waardoor op zijn beurt het invoegen en/of verwijderen van een indexsleutel naar/van een index in een enclavekolom wordt geactiveerd. Zie Indexen maken en gebruiken voor kolommen met Always Encrypted met beveiligde enclaves voor meer informatie
Notitie
Bewerkingen voor indexen en vertrouwelijke DML-query's met behulp van enclaves worden alleen ondersteund in enclavekolommen die gebruikmaken van gerandomiseerde versleuteling. Deterministische versleuteling wordt niet ondersteund.
Het compatibiliteitsniveau van de database moet worden ingesteld op SQL Server 2022 (160) of hoger.
In Azure SQL Database en in SQL Server 2022 (16.x) vereisen vertrouwelijke query's met enclaves op een tekenreekskolom (char, nchar) dat de kolom een binaire sortering (_BIN2) of een UTF-8-sorteringgebruikt. In SQL Server 2019 (15.x) is een a_BIN2-collatie vereist.
DBCC-opdrachten met beveiligde enclaves
DBCC-beheeropdrachten die betrekking hebben op het controleren van de integriteit van indexen, vereisen mogelijk ook beveiligde enclaves als de database indexen bevat op enclavekolommen met behulp van gerandomiseerde versleuteling. BIJVOORBEELD DBCC CHECKDB en DBCC CHECKTABLE.
Vereisten voor het uitvoeren van SQL-queries met behulp van beveiligde enclaves
Uw omgeving moet voldoen aan de volgende vereisten ter ondersteuning van het uitvoeren van instructies die gebruikmaken van een beveiligde enclave.
Uw SQL Server-exemplaar of uw databaseserver in Azure SQL Database moet correct zijn geconfigureerd om enclaves en attestation te ondersteunen, indien van toepassing/vereist. Voor meer informatie, zie De beveiligde enclave en attestatie instellen.
Wanneer u verbinding maakt met uw database vanuit een toepassing of een hulpprogramma (zoals SQL Server Management Studio), moet u het volgende doen:
Gebruik een versie van het clientstuurprogramma of een hulpprogrammaversie die Always Encrypted ondersteunt met beveiligde enclaves.
- Zie Toepassingen ontwikkelen met Always Encrypted met beveiligde enclaves voor informatie over clientstuurprogramma's die Always Encrypted ondersteunen met beveiligde enclaves.
- Zie de volgende secties voor informatie over hulpprogramma's die Always Encrypted ondersteunen met beveiligde enclaves.
Schakel Always Encrypted in voor de databaseverbinding.
Geef een attestation-protocol op, waarmee wordt bepaald of uw toepassing of hulpprogramma de enclave moet attesteren voordat u enclavequery's verzendt en welke attestation-service deze moet gebruiken. De meeste hulpprogramma's en stuurprogramma's ondersteunen de volgende attestation-protocollen:
- Microsoft Azure Attestation: dwingt attestation af met behulp van Microsoft Azure Attestation.
- Host Guardian-service: dwingt attestation af met behulp van de Host Guardian-service.
- Geen: staat het gebruik van enclaves zonder attestatie toe.
In de onderstaande tabel worden attestation-protocollen opgegeven die geldig zijn voor bepaalde SQL-producten en enclavetechnologieën:
Product Enclave-technologie Ondersteunde attestation-protocollen SQL Server 2019 (15.x) en hoger VBS-enclaves Host Guardian-service, geen Azure SQL Database SGX-enclaves (in DC-seriedatabases) Microsoft Azure Attestatie Azure SQL Database VBS-enclaves Geen
Geef een attestation-URL op die geldig is voor uw omgeving als u attestation gebruikt.
- Als u SQL Server en Host Guardian Service (HGS) gebruikt, raadpleegt u De HGS-attestation-URL bepalen en delen.
- Als u Azure SQL Database gebruikt met Intel SGX-enclaves en Microsoft Azure Attestation, raadpleegt u De attestation-URL voor uw attestation-beleid bepalen.
Vereisten voor het uitvoeren van T-SQL-instructies met behulp van enclaves in SSMS
Installeer de nieuwste versie van SQL Server Management Studio (SSMS).
Zorg ervoor dat u uw instructies uitvoert vanuit een queryvenster dat gebruikmaakt van een verbinding met always encrypted- en attestation-parameters die correct zijn geconfigureerd.
Geef in het dialoogvenster Verbinding maken met server de servernaam op, selecteer een verificatiemethode en geef uw referenties op.
Selecteer opties >> en selecteer het tabblad verbindingseigenschappen. Geef de databasenaam op.
Selecteer het tabblad Always Encrypted.
Selecteer Always Encrypted (kolomversleuteling) inschakelen.
Selecteer Beveiligde enclaves inschakelen.
Stel Protocol in op:
- Host Guardian-service als u SQL Server gebruikt.
- Microsoft Azure Attestation als u Azure SQL Database gebruikt met Intel SGX-enclaves.
- Geen als u Azure SQL Database met VBS-enclaves gebruikt.
Geef uw enclave-attestation-URL op. Niet van toepassing wanneer het protocol is ingesteld op Geen. Bijvoorbeeld
https://hgs.bastion.local/Attestationofhttps://contososqlattestation.uks.attest.azure.net/attest/SgxEnclave.
Selecteer Verbind.
Als u wordt gevraagd om de parameterisatie in te schakelen voor Always Encrypted-query's, selecteert u inschakelen.
Zie Always Encrypted in- en uitschakelen voor een databaseverbindingvoor meer informatie.
Voorbeelden
Deze sectie bevat voorbeelden van DML-query's met behulp van enclaves.
In de voorbeelden wordt het onderstaande schema gebruikt.
CREATE SCHEMA [HR];
GO
CREATE TABLE [HR].[Jobs](
[JobID] [int] IDENTITY(1,1) PRIMARY KEY,
[JobTitle] [nvarchar](50) NOT NULL,
[MinSalary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[MaxSalary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
);
GO
CREATE TABLE [HR].[Employees](
[EmployeeID] [int] IDENTITY(1,1) PRIMARY KEY,
[SSN] [char](11) ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[FirstName] [nvarchar](50) NOT NULL,
[LastName] [nvarchar](50) NOT NULL,
[Salary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[JobID] [int] NULL,
FOREIGN KEY (JobID) REFERENCES [HR].[Jobs] (JobID)
);
Exacte zoekactie
De onderstaande query voert een exacte overeenkomstzoekopdracht uit op de versleutelde SSN tekenreeks-kolom.
DECLARE @SSN AS CHAR (11) = '795-73-9838';
SELECT *
FROM [HR].[Employees]
WHERE [SSN] = @SSN;
Patroonopezoeking
De onderstaande query voert een patroonmatchzoekopdracht uit op de versleutelde stringkolom SSN, waarbij wordt gezocht naar werknemers met de opgegeven laatste vier cijfers van een burgerservicenummer.
DECLARE @SSN AS CHAR (11) = '795-73-9838';
SELECT *
FROM [HR].[Employees]
WHERE [SSN] = @SSN;
Bereikvergelijking
Met de onderstaande query wordt een bereikvergelijking uitgevoerd op de versleutelde Salary kolom, waarbij wordt gezocht naar werknemers met salarissen binnen het opgegeven bereik.
DECLARE @MinSalary AS MONEY = 40000;
DECLARE @MaxSalary AS MONEY = 45000;
SELECT *
FROM [HR].[Employees]
WHERE [Salary] > @MinSalary
AND [Salary] < @MaxSalary;
Verbinden
De onderstaande query voert een join uit tussen Employees en Jobs tabellen met behulp van de versleutelde Salary kolom. De query haalt werknemers op met salarissen buiten een salarisbereik voor de functie van een werknemer.
SELECT *
FROM [HR].[Employees] AS e
INNER JOIN [HR].[Jobs] AS j
ON e.[JobID] = j.[JobID]
AND e.[Salary] > j.[MaxSalary]
OR e.[Salary] < j.[MinSalary];
Sorteren
Met de onderstaande query worden werknemersrecords gesorteerd op basis van de versleutelde kolom Salary, waarbij 10 werknemers met de hoogste salarissen worden opgehaald.
Notitie
Versleutelde kolommen sorteren wordt ondersteund in SQL Server 2022 (16.x) en Azure SQL Database, maar niet in SQL Server 2019 (15.x).
SELECT TOP (10) *
FROM [HR].[Employees]
ORDER BY [Salary] DESC;
Volgende stap
Verwante inhoud
- veelvoorkomende problemen met Always Encrypted oplossen met beveiligde enclaves
- Aan de slag met Always Encrypted met beveiligde enclaves
- Kolomversleuteling ter plaatse configureren met Always Encrypted met beveiligde enclaves
- Indexen maken en gebruiken voor kolommen met Always Encrypted met beveiligde enclaves