Transact-SQL utasítások futtatása biztonságos enklávék használatával

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók Windows Azure SQL Database-en

Always Encrypted biztonságos enklávékkal lehetővé teszi, hogy Transact-SQL (T-SQL) utasítások bizonyos bizalmas számításokat végezzenek titkosított adatbázisoszlopokon a kiszolgálóoldali biztonságos enklávéban.

Biztonságos enklávékat használó nyilatkozatok

A T-SQL-utasítás következő típusai biztonságos enklávékat használnak.

DDL-utasítások biztonságos enklávékkal

Az alábbi adatdefiníciós nyelv (DDL) utasítások biztonságos enklávékat igényelnek.

DML-utasítások biztonságos enklávékkal

Az alábbi Adatmanipulációs nyelv (DML) utasítások vagy lekérdezések az enklávé-kompatibilis oszlopokon véletlenszerű titkosítás használatával biztonságos enklávékat igényelnek:

Jegyzet

Az indexeken és a bizalmas DML-lekérdezéseken az enklávékkal végzett műveletek csak véletlenszerű titkosítást használó enklávé-kompatibilis oszlopokon támogatottak. A determinisztikus titkosítás nem támogatott.

Az adatbázis kompatibilitási szintjét az SQL Server 2022 (160) vagy újabb verzióra kell állítani.

Az Azure SQL Database-ben és az SQL Server 2022-ben (16.x) a karakterlánc-oszlopokon végzett bizalmas lekérdezések, amelyek enklávékat használnak (char, nchar), megkövetelik, hogy az oszlop bináris kódpont (_BIN2) vagy UTF-8 rendezést használjon. Az SQL Server 2019-ben (15.x) a_BIN2 rendezés szükséges.

DBCC-parancsok biztonságos enklávékkal

Az indexek integritásának ellenőrzésére vonatkozó DBCC felügyeleti parancsok biztonságos enklávékat is igényelhetnek, ha az adatbázis véletlenszerű titkosítással tartalmaz indexeket az enklávé-kompatibilis oszlopokon. Például a DBCC CHECKDB és a DBCC CHECKTABLE.

A nyilatkozatok biztonságos enklávékkal történő futtatásának előfeltételei

A környezetnek meg kell felelnie az alábbi követelményeknek a biztonságos enklávét használó utasítások végrehajtásának támogatásához.

  • Az SQL Server-példányt vagy az Azure SQL Database-ben található adatbázis-kiszolgálót megfelelően kell konfigurálni az enklávék és az igazolások támogatására, ha vannak/szükségesek. További információ: A biztonságos környezet és igazolás beállítása.

  • Ha egy alkalmazásból vagy eszközből (például SQL Server Management Studióból) csatlakozik az adatbázishoz, győződjön meg arról, hogy:

    • Használjon olyan ügyfélillesztő-verziót vagy eszközverziót, amely biztonságos enklávékkal támogatja az Always Encryptedt.

    • Engedélyezze az Always Encryptedt az adatbázis-kapcsolathoz.

    • Adjon meg egy igazolási protokollt, amely meghatározza, hogy az alkalmazásnak vagy az eszköznek igazolnia kell-e az enklávét az enklávé lekérdezések elküldése előtt, és hogy melyik igazolási szolgáltatást kell használnia. A legtöbb eszköz és illesztőprogram az alábbi igazolási protokollokat támogatja:

      • Microsoft Azure-igazolás – az igazolást a Microsoft Azure-igazolással kényszeríti ki.
      • Host Guardian Service – a biztonságos igazolást a Host Guardian Service használatával biztosítja.
      • Nincs – lehetővé teszi az enklávék igazolás nélküli használatát.

      Az alábbi táblázat az egyes SQL-termékekre és enklávétechnológiákra érvényes igazolási protokollokat határozza meg:

      Termék Enklávé technológia Támogatott igazolási protokollok
      SQL Server 2019 (15.x) és újabb verziók VBS-enklávék Host Guardian Szolgáltatás, Nincs
      Azure SQL Database SGX-enklávék (DC-sorozatú adatbázisokban) Microsoft Azure-igazolás
      Azure SQL Database VBS-enklávék Egyik sem
  • Adjon meg egy olyan igazolási URL-címet, amely érvényes a környezetére, ha igazolást alkalmaz.

T-SQL-utasítások SSMS-enklávékkal történő futtatásának előfeltételei

Telepítse az SQL Server Management Studio (SSMS) legújabb verzióját.

Győződjön meg arról, hogy az utasításokat olyan lekérdezési ablakból futtatja, amely az Always Encrypted és az igazolási paraméterekkel megfelelően konfigurált kapcsolatot használ.

  1. A Csatlakozás a kiszolgálóhoz párbeszédpanelen adja meg a kiszolgáló nevét, válasszon ki egy hitelesítési módszert, és adja meg a hitelesítő adatait.

  2. Válassza Beállítások >>, majd a Kapcsolat tulajdonságai lapot. Adja meg az adatbázis nevét.

  3. Válassza a Always Encrypted lapot.

  4. Válassza a Az Always Encrypted (oszloptitkosítás) engedélyezéselehetőséget.

  5. Válassza a Biztonságos enklávék engedélyezéselehetőséget.

  6. Állítsa protokoll a következőre:

    1. Host Guardian Service, ha SQL Servert használ.
    2. Microsoft Azure Bizonyítványkezelés, ha az Azure SQL-adatbázist Intel SGX-enklávékkal használja.
    3. Nincs ha az Azure SQL Database-t VBS-enklávékkal használja.
  7. Adja meg az enklávé igazolási URL-címét. Nem alkalmazható, ha a protokoll értéke Nincs. Például https://hgs.bastion.local/Attestation vagy https://contososqlattestation.uks.attest.azure.net/attest/SgxEnclave.

    Képernyőkép: Csatlakozás kiszolgálóhoz igazolással az SSMS használatával.

  8. Válassza Csatlakozáslehetőséget.

  9. Ha a rendszer kéri az Always Encrypted-lekérdezések paraméterezésének engedélyezését, válassza a Engedélyezéslehetőséget.

További információ: Always Encrypted engedélyezése és letiltása adatbázis-kapcsolathoz.

Példák

Ez a szakasz példákat tartalmaz az enklávékat használó DML-lekérdezésekre.

A példák az alábbi sémát használják.

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

Az alábbi lekérdezés pontos egyezés keresést végzi a titkosított SSN karakterlánc oszlopon.

DECLARE @SSN AS CHAR (11) = '795-73-9838';

SELECT *
FROM [HR].[Employees]
WHERE [SSN] = @SSN;

Az alábbi lekérdezés a titkosított SSN sztringoszlopon mintázatalapú keresést végez, és azokat az alkalmazottakat keresi, akiknek társadalombiztosítási számának megadott utolsó négy számjegye egyezik.

DECLARE @SSN AS CHAR (11) = '795-73-9838';

SELECT *
FROM [HR].[Employees]
WHERE [SSN] = @SSN;

Tartomány összehasonlítása

Az alábbi lekérdezés tartomány-összehasonlítást végez a titkosított Salary oszlopban, és megkeresi a megadott tartományon belüli fizetéssel rendelkező alkalmazottakat.

DECLARE @MinSalary AS MONEY = 40000;
DECLARE @MaxSalary AS MONEY = 45000;

SELECT *
FROM [HR].[Employees]
WHERE [Salary] > @MinSalary
      AND [Salary] < @MaxSalary;

Csatlakozik

Az alábbi lekérdezés összekapcsolja Employees és Jobs táblákat a titkosított Salary oszlop használatával. A lekérdezés azokat az alkalmazottakat listázza, akiknek a fizetése a munkakörükhöz tartozó fizetéstartományon kívül esik.

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

Rendezés

Az alábbi lekérdezés a titkosított Salary oszlop alapján rendezi az alkalmazotti rekordokat, és 10 alkalmazottat kérdez le a legmagasabb fizetéssel.

Jegyzet

A titkosított oszlopok rendezése az SQL Server 2022 -ben (16.x) és az Azure SQL Database-ben támogatott, az SQL Server 2019-ben (15.x) azonban nem.

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

Következő lépés