Megosztás a következőn keresztül:


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

DBCC (Transact-SQL) olyan felügyeleti parancsokat, amelyek az indexek integritásának ellenőrzését foglalják magukban, 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 DBCC CHECKDB (Transact-SQL) és DBCC CHECKTABLE (Transact-SQL).

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.

    Csatlakozás a kiszolgálóhoz az SSMS hitelesítésével

  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.

A T-SQL-utasítások enklávékkal való futtatásának előfeltételei az Azure Data Studióban

A minimálisan javasolt verzió az 1.23-as vagy annál újabb. Győződjön meg arról, hogy az utasításokat olyan lekérdezési ablakban futtatja, amely always encrypted-kompatibilis kapcsolatot használ, valamint a megfelelő igazolási protokollt és az igazolási URL-címet is konfigurálta.

  1. A Kapcsolat párbeszédpanelen válassza a Speciális...lehetőséget.

  2. Ha engedélyezni szeretné az Always Encryptedt a kapcsolathoz, állítsa az Always Encrypted mezőt Engedélyezettértékre.

  3. A biztonságos enklávék engedélyezéséhez állítsa be a Biztonságos enklávék mezőt Engedélyezett.

  4. Adja meg az igazolási protokollt és az igazolási URL-címet.

    • Ha SQL Servert használ, állítsa be a Igazolási protokollt a Gazdagépőr szolgáltatásra, és adja meg a Gazdagépőr szolgáltatás igazolási URL-címét az Enklávé igazolási URL-cím mezőben.
    • Ha dc-sorozatú adatbázist használ az Intel SGX-sel az Azure SQL Database-ben, állítsa Igazolási protokoll az Azure-igazolási , majd adja meg az igazolási URL-címet, hivatkozva a szabályzatra a Microsoft Azure-igazolásban az Enklávé igazolási URL-cím mezőben.
    • Ha az Azure SQL Database-ben engedélyezett VBS-enklávékkal rendelkező adatbázist használ, állítsa az igazolási protokolltNincsértékre.

    Csatlakozás a kiszolgálóhoz hitelesítéssel az Azure Data Studio használatával

  5. Válassza az OK gombot a Speciális tulajdonságoklezárásához.

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

Ha paraméteres DML-lekérdezéseket szeretne futtatni, engedélyeznie kell Paraméterezést is az Always Encryptedesetében.

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

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

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

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

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

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

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

Következő lépések

Lásd még: