Delen via


Transact-SQL-instructies uitvoeren met behulp van beveiligde enclaves

Van toepassing op: SQL Server 2019 (15.x) en hoger - Alleen 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.

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.

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 (Transact-SQL) administratieve opdrachten die betrekking hebben op het controleren van de integriteit van de indexen, kunnen ook beveiligde enclaves vereisen als de database indexen bevat op enclavekolommen die gebruikmaken van gerandomiseerde versleuteling. Bijvoorbeeld DBCC CHECKDB (Transact-SQL) en DBCC CHECKTABLE (Transact-SQL).

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.

    • 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 Attestation
      Azure SQL Database VBS-enclaves Geen
  • Geef een attestation-URL op die geldig is voor uw omgeving als u attestation gebruikt.

Vereisten voor het uitvoeren van T-SQL-instructies met behulp van enclaves in SSMS

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

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.

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

  2. Selecteer opties >> en selecteer het tabblad verbindingseigenschappen. Geef de databasenaam op.

  3. Selecteer het tabblad Always Encrypted.

  4. Selecteer Always Encrypted (kolomversleuteling) inschakelen.

  5. Selecteer Beveiligde enclaves inschakelen.

  6. Stel Protocol in op:

    1. Host Guardian-service als u SQL Server gebruikt.
    2. Microsoft Azure Attestation als u Azure SQL Database gebruikt met Intel SGX-enclaves.
    3. Geen als u Azure SQL Database met VBS-enclaves gebruikt.
  7. Geef uw enclave-attestation-URL op. Niet van toepassing wanneer het protocol is ingesteld op Geen. Bijvoorbeeld https://hgs.bastion.local/Attestation of https://contososqlattestation.uks.attest.azure.net/attest/SgxEnclave.

    Verbinding maken met server met attestation met behulp van SSMS-

  8. Selecteer Verbind.

  9. 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.

Vereisten voor het uitvoeren van T-SQL-instructies met behulp van enclaves in Azure Data Studio

De minimaal aanbevolen versie 1.23 of hoger wordt aanbevolen. Zorg ervoor dat u uw instructies uitvoert vanuit een queryvenster dat gebruikmaakt van een verbinding waarvoor Always Encrypted is ingeschakeld en zowel het juiste attestation-protocol als de geconfigureerde attestation-URL.

  1. Kies in het dialoogvenster Verbinding de optie Geavanceerd....

  2. Als u Always Encrypted wilt inschakelen voor de verbinding, stelt u het veld Always Encrypted in op ingeschakelde.

  3. Als u beveiligde enclaves wilt inschakelen, stelt u het veld Beveiligde enclaves in op Ingeschakeld.

  4. Geef het attestation-protocol en de attestation-URL op.

    • Als u SQL Server gebruikt, stel dan Attestatieprotocol in op Host Guardian Service en voer de attestatie-URL van uw Host Guardian Service in het veld Enclave Attestatie-URL in.
    • Als u een DC-seriedatabase met Intel SGX in Azure SQL Database gebruikt, stelt u Attestation Protocol in op Azure Attestation- en voert u de attestation-URL in, waarbij u verwijst naar uw beleid in Microsoft Azure Attestation in het Enclave Attestation-URL veld.
    • Als u een database gebruikt waarvoor VBS-enclaves zijn ingeschakeld in Azure SQL Database, stelt u Attestation Protocol- in op Geen-.

    Verbinding maken met server met attestation met behulp van Azure Data Studio

  5. Selecteer OK- om geavanceerde eigenschappente sluiten.

Zie Always Encrypted in- en uitschakelen voor een databaseverbindingvoor meer informatie.

Als u van plan bent om geparameteriseerde DML-query's uit te voeren, moet u ook parameterisatie inschakelen voor Always Encrypted-.

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)
);
GO

De onderstaande query voert een exacte overeenkomstzoekopdracht uit op de versleutelde SSN tekenreeks-kolom.

DECLARE @SSN char(11) = '795-73-9838';
SELECT * FROM [HR].[Employees] WHERE [SSN] = @SSN;
GO

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 char(11) = '795-73-9838';
SELECT * FROM [HR].[Employees] WHERE [SSN] = @SSN;
GO

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 money = 40000;
DECLARE @MaxSalary money = 45000;
SELECT * FROM [HR].[Employees] WHERE [Salary] > @MinSalary AND [Salary] < @MaxSalary;
GO

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] e
JOIN [HR].[Jobs] j
ON e.[JobID] = j.[JobID] AND e.[Salary] > j.[MaxSalary] OR e.[Salary] < j.[MinSalary];
GO

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;
GO

Volgende stappen

Zie ook