Dela via


Kör Transact-SQL-instruktioner i säkra enklaver

gäller för: SQL Server 2019 (15.x) och senare – Windows endast Azure SQL Database

Always Encrypted med säkra enklaver tillåter vissa Transact-SQL (T-SQL)-uttryck att göra konfidentiella beräkningar på krypterade databaskolumner på serversidan i en säker enklav.

Uttalanden som använder säkra enklaver

Följande typer av T-SQL-uttryck använder säkra enklaver.

DDL-instruktioner med hjälp av säkra enklaver

Följande typer av DDL-instruktioner (Data Definition Language) kräver säkra enklaver.

DML-instruktioner med säkra enklaver

Följande datamanipuleringsspråk (DML) instruktioner eller frågor mot enklavaktiverade kolumner med slumpmässig kryptering kräver säkra enklaver:

Anteckning

Åtgärder för index och konfidentiella DML-frågor med enklaver stöds endast på enklaveraktiverade kolumner som använder randomiserad kryptering. Deterministisk kryptering stöds inte.

Den kompatibilitetsnivån för databasen ska anges till SQL Server 2022 (160) eller senare.

I Azure SQL Database och i SQL Server 2022 (16.x) kräver konfidentiella frågor med enklaver i en teckensträngskolumn (char, nchar) att kolumnen använder en binärkodpunktssortering (_BIN2) eller en UTF-8-sortering. I SQL Server 2019 (15.x) krävs a_BIN2 sortering.

DBCC-kommandon som använder säkra enklaver

DBCC (Transact-SQL) administrativa kommandon som omfattar kontroll av indexens integritet kan också kräva säkra enklaver om databasen innehåller index på enklaveraktiverade kolumner med hjälp av randomiserad kryptering. Till exempel DBCC CHECKDB (Transact-SQL) och DBCC CHECKTABLE (Transact-SQL).

Förutsättningar för att köra uttryck med säkra enklaver

Din miljö måste uppfylla följande krav för att stödja körningsinstruktioner som använder en säker enklav.

  • SQL Server-instansen eller databasservern i Azure SQL Database måste vara korrekt konfigurerad för att stödja enklaver och attestering, om tillämpligt/nödvändigt. Mer information finns i Konfigurera den säkra enklaven och attesteringen.

  • När du ansluter till databasen från ett program eller ett verktyg (till exempel SQL Server Management Studio) måste du:

    • Använd en klientdrivrutinsversion eller en verktygsversion som stöder Always Encrypted med säkra enklaver.

    • Aktivera Always Encrypted för databasanslutningen.

    • Ange ett attesteringsprotokoll som avgör om ditt program eller verktyg måste intyga enklaven innan du skickar enklaverfrågor och vilken attesteringstjänst som ska användas. De flesta verktyg och drivrutiner stöder följande attesteringsprotokoll:

      • Microsoft Azure Attestation – framtvingar attestering med hjälp av Microsoft Azure Attestation.
      • Tjänsten Värdskydd – framtvingar attestering med hjälp av Tjänsten Värdskydd.
      • Ingen – tillåter användning av enklaver utan attestering.

      Tabellen nedan anger attesteringsprotokoll som är giltiga för vissa SQL-produkter och enklaver:

      Produkt Enklavteknik Attesteringsprotokoll som stöds
      SQL Server 2019 (15.x) och senare VBS-enklaver Värdskyddstjänst, ingen
      Azure SQL Database SGX-enklaver (i DC-seriens databaser) Microsoft Azure-attestering
      Azure SQL Database VBS-enklaver Ingen
  • Ange en attesterings-URL som är giltig för din miljö om du använder attestering.

Förutsättningar för att köra T-SQL-instruktioner med enklaver i SSMS

Ladda ned den senaste versionen av SQL Server Management Studio (SSMS).

Kontrollera att du kör dina instruktioner från ett frågefönster som använder en anslutning som har Always Encrypted och attestationsparametrar korrekt konfigurerade.

  1. I dialogrutan Anslut till server anger du servernamnet, väljer en autentiseringsmetod och anger dina autentiseringsuppgifter.

  2. Välj Alternativ >> och välj fliken Anslutningsegenskaper. Ange databasnamnet.

  3. Välj fliken Always Encrypted.

  4. Välj Aktivera Always Encrypted (kolumnkryptering).

  5. Välj Aktivera säkra enklaver.

  6. Ange Protocol till:

    1. Host Guardian Service om du använder SQL Server.
    2. Microsoft Azure Attestation om du använder Azure SQL Database med Intel SGX-enklaver.
    3. Ingen om du använder Azure SQL Database med VBS-enklaver.
  7. Ange url för enklavattestering. Inte tillämpligt när protokollet är inställt på Ingen. Till exempel https://hgs.bastion.local/Attestation eller https://contososqlattestation.uks.attest.azure.net/attest/SgxEnclave.

    Anslut till servern med attestering med SSMS-

  8. Välj Anslut.

  9. Om du uppmanas att aktivera parameterisering för Always Encrypted-frågor väljer du Aktivera.

Mer information finns i Aktivera och inaktivera Always Encrypted för en databasanslutning.

Förutsättningar för att köra T-SQL-instruktioner med enklaver i Azure Data Studio

Den lägsta rekommenderade versionen 1,23 eller senare rekommenderas. Kontrollera att du kör dina instruktioner från ett frågefönster som använder en anslutning som har Always Encrypted aktiverat och både rätt attesteringsprotokoll och attesterings-URL:en konfigurerad.

  1. I dialogrutan Anslutning väljer du Avancerat....

  2. Om du vill aktivera Always Encrypted för anslutningen anger du fältet Always Encrypted till Aktiverad.

  3. Om du vill aktivera säkra enklaver anger du fältet Säkra enklaver till Aktiverad.

  4. Ange attesteringsprotokollet och attesterings-URL:en.

    • Om du använder SQL Server, ange Attestationsprotokoll till Host Guardian Service och ange URL:en för värdskyddstjänstens attestering i fältet för Enclave Attestation URL.
    • Om du använder en DC-seriedatabas med Intel SGX i Azure SQL Database anger du Attestation Protocol till Azure Attestation och anger attesterings-URL:en och refererar till din princip i Microsoft Azure Attestation i fältet Enclave Attestation URL.if you're using a DC-series database with Intel SGX in Azure SQL Database, set Attestation Protocol to Azure Attestation and enter the attestation URL, referencing your policy in Microsoft Azure Attestation in the Enclave Attestation URL field.
    • Om du använder en databas med VBS-enklaver aktiverade i Azure SQL Database anger du Attestation Protocol till None.

    Anslut till servern med attestering via Azure Data Studio

  5. Välj OK för att stänga Avancerade egenskaper.

Mer information finns i Aktivera och inaktivera Always Encrypted för en databasanslutning.

Om du planerar att köra parametriserade DML-frågor måste du även aktivera parameterisering för Always Encrypted.

Exempel

Det här avsnittet innehåller exempel på DML-frågor med enklaver.

I exemplen används schemat nedan.

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

Frågan nedan utför en exakt matchningssökning på den krypterade SSN strängkolumnen.

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

Frågan nedan utför en mönstermatchningssökning på den krypterade SSN strängkolumnen och söker efter anställda med den angivna sista siffran för ett personnummer.

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

Intervalljämförelse

Frågan nedan utför en intervalljämförelse på kolumnen krypterad Salary och söker efter anställda med löner inom det angivna intervallet.

DECLARE @MinSalary money = 40000;
DECLARE @MaxSalary money = 45000;
SELECT * FROM [HR].[Employees] WHERE [Salary] > @MinSalary AND [Salary] < @MaxSalary;
GO

Ansluter sig

Frågan nedan utför en koppling mellan Employees och Jobs tabeller med hjälp av den krypterade kolumnen Salary. Frågan hämtar anställda med löner utanför ett löneintervall för medarbetarens jobb.

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

Sortering

Nedanstående fråga sorterar medarbetarnas poster baserat på kolumnen krypterad Salary och hämtar 10 anställda med högst lön.

Notera

Sortering av krypterade kolumner stöds i SQL Server 2022 (16.x) och Azure SQL Database, men inte i SQL Server 2019 (15.x).

SELECT TOP(10) * FROM [HR].[Employees]
ORDER BY [Salary] DESC;
GO

Nästa steg

Se även