Indexek létrehozása és használata oszlopokon az Always Encrypted és a 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

Ez a cikk azt ismerteti, hogyan hozhat létre és használhat indexeket az enklávéval kompatibilis oszloptitkosítási kulcsokkal titkosított oszlopokon az Always Encrypted és a biztonságos enklávék használatával.

Az Always Encrypted biztonságos enklávékkal támogatja a következőket:

  • Klaszteres és nem klászteres indexek determinisztikus titkosítással és enklávé-kompatibilis kulcsokkal titkosított oszlopokon.
    • Az ilyen indexek titkosítási szöveg alapján vannak rendezve. Az ilyen indexekre nem vonatkoznak különös szempontok. Kezelheti és használhatja őket ugyanúgy, mint a determinisztikus titkosítással titkosított oszlopok indexeit, valamint a nem enklávékompatibilis kulcsokat (mint az Always Encrypted esetében).
  • Nem klaszteres indexek véletlenszerű titkosítással titkosított és enklávé-kompatibilis kulcsokat használó oszlopokon.

Megjegyzés:

A cikk hátralevő része a véletlenszerű titkosítással és enklávéval engedélyezett kulcsokkal titkosított oszlopok nem halmazba rendezett indexeit ismerteti.

Mivel egy véletlenszerű titkosítást és enklávé-kompatibilis oszloptitkosítási kulcsot használó oszlop indexe egyszerű szöveg alapján rendezett titkosított (titkosítási) adatokat tartalmaz, az SQL Server Engine-nek az enklávét kell használnia minden olyan művelethez, amely egy index létrehozását, frissítését vagy keresését foglalja magában, beleértve a következőket:

  • Index létrehozása vagy újraépítése.
  • Sor beszúrása, frissítése vagy törlése egy táblában (indexelt/titkosított oszlopot tartalmazó), amely elindítja az indexkulcs beszúrását és/vagy eltávolítását az indexbe vagy az indexből.
  • Olyan parancsok futtatása DBCC , amelyek magukban foglalják az indexek integritásának ellenőrzését, például DBCC CHECKDB (Transact-SQL) vagy DBCC CHECKTABLE (Transact-SQL).
  • Adatbázis-helyreállítás (például az SQL Server meghiúsulása és újraindítása után), ha az SQL Servernek vissza kell vonnia az index módosításait (további részletek alább).

A fenti műveletekhez az enklávénak rendelkeznie kell az indexelt oszlop oszloptitkosítási kulcsával. A kulcsra az indexkulcsok visszafejtéséhez van szükség. Az enklávé általában kétféleképpen szerezhet be oszloptitkosítási kulcsot:

  • Közvetlenül az ügyfélalkalmazásból.
  • Az oszloptitkosítási kulcsok gyorsítótárából.

Indexelési műveletek meghívása közvetlenül az ügyfél által biztosított oszloptitkosítási kulcsokkal

Ahhoz, hogy az indexelési műveletek működésre legyenek hívva, az alkalmazásnak (beleértve az eszközt, például az SQL Server Management Studiót (SSMS) is) egy olyan lekérdezést kell kiadnia, amely egy indexen aktivál egy műveletet:

  • Csatlakozzon az adatbázishoz úgy, hogy az Always Encrypted és az enklávé számítások is engedélyezve vannak az adatbázis-kapcsolathoz.
  • Az alkalmazásnak hozzá kell férnie az oszlop főkulcsához, amely védi az indexelt oszlop oszloptitkosítási kulcsát.

Miután az SQL Server Engine elemzi az alkalmazás lekérdezését, és megállapítja, hogy frissítenie kell egy indexet egy titkosított oszlopon a lekérdezés végrehajtásához, utasítja az ügyfélillesztőt, hogy engedje fel a szükséges oszloptitkosítási kulcsot az enklávéhoz egy biztonságos csatornán keresztül. Ez pontosan ugyanaz a mechanizmus, amely az enklávénak oszloptitkosítási kulcsokat biztosít az indexeket nem használó egyéb lekérdezések feldolgozásához. Például a helyszíni titkosítás vagy a mintaegyeztetés és a tartomány-összehasonlítás használatával végzett lekérdezések.

Ez a módszer hasznos annak biztosításához, hogy a titkosított oszlopokon lévő indexek transzparensek legyenek azon alkalmazások számára, amelyek már csatlakoztak az adatbázishoz az "Always Encrypted" és enklávészámítások engedélyezésével. Az alkalmazáskapcsolat az enklávét használhatja a lekérdezések feldolgozásához. Miután létrehozott egy indexet egy oszlopon, az alkalmazáson belüli illesztőprogram transzparensen biztosítja az oszloptitkosítási kulcsokat az enklávénak az indexelési műveletekhez. Az indexek létrehozása növelheti azon lekérdezések számát, amelyek megkövetelik, hogy az alkalmazás elküldje az oszloptitkosítási kulcsokat az enklávénak.

A módszer használatához kövesse az utasítások biztonságos enklávéval való futtatására vonatkozó általános útmutatást – Transact-SQL utasítások futtatása biztonságos enklávékkal.

A módszer használatáról részletes útmutatást a következő oktatóanyagban talál: Indexek létrehozása és használata enklávéval kompatibilis oszlopokon véletlenszerű titkosítás használatával.

Indexelési műveletek meghívása gyorsítótárazott oszloptitkosítási kulcsokkal

Ha egy ügyfélalkalmazás egy oszloptitkosítási kulcsot küld az enklávénak bármely olyan lekérdezés feldolgozásához, amely enklávészámítást igényel, az enklávé elhelyezi a kulcsot egy belső gyorsítótárban. Ez a gyorsítótár az enklávéban található, és kívülről elérhetetlen.

Ha ugyanaz vagy egy másik ügyfélalkalmazás, amelyet ugyanaz vagy egy másik felhasználó használ, úgy indít el egy műveletet egy indexen, hogy közvetlenül nem biztosítja a szükséges oszloptitkosítást, akkor az enklávé a gyorsítótárban keresi meg az oszloptitkosítási kulcsot. Ennek eredményeképpen az indexen végzett művelet sikeres, bár az ügyfélalkalmazás nem adta meg a kulcsot.

Ahhoz, hogy az indexelési műveletek működjenek, az alkalmazásnak úgy kell csatlakoznia az adatbázishoz, hogy az Always Encrypted nincs engedélyezve a kapcsolathoz, és a szükséges oszloptitkosítási kulcsnak elérhetőnek kell lennie a gyorsítótárban az enklávéban.

Ez a műveletmeghívó módszer csak olyan lekérdezéseknél támogatott, amelyek nem igényelnek oszloptitkosítási kulcsokat más műveletekhez, és nem kapcsolódnak indexekhez. Például egy olyan alkalmazásnak, amely egy titkosított oszlopot tartalmazó táblába utasítással INSERT szúr be egy sort, a kapcsolati sztringben engedélyezett Always Encrypted funkcióval kell csatlakoznia az adatbázishoz, és hozzáféréssel kell rendelkeznie a kulcsokhoz, függetlenül attól, hogy a titkosított oszlop indexel vagy sem.

Ez a módszer a következő esetekben hasznos:

  • Győződjön meg arról, hogy az enklávé-kompatibilis oszlopok indexei véletlenszerű titkosítással transzparensek az olyan alkalmazások és felhasználók számára, amelyek nem rendelkeznek hozzáféréssel a kulcsokhoz és az adatokhoz egyszerű szövegben.

  • Biztosítja, hogy egy index titkosított oszlopon való létrehozása ne fékozza a meglévő lekérdezéseket. Ha egy alkalmazás titkosított oszlopokat tartalmazó táblán ad le lekérdezést anélkül, hogy hozzá kellene férnie a kulcsokhoz, az alkalmazás továbbra is futhat anélkül, hogy hozzáférése lenne a kulcsokhoz, miután egy DBA létrehoz egy indexet. Vegyük például azt az alkalmazást, amely az alábbi lekérdezést futtatja az Alkalmazottak táblában, amely titkosított oszlopokat tartalmaz. A DBA nem hozott létre indexet egyetlen titkosított oszlopon sem.

    DELETE FROM [dbo].[Employees] WHERE [EmployeeID] = 1;
    GO
    

    Ha az alkalmazás az Always Encrypted és az enklávé számítások engedélyezése nélkül küldi el a lekérdezést egy kapcsolaton keresztül, a lekérdezés sikeres lesz. A lekérdezés nem indít el számításokat titkosított oszlopokon. Miután egy DBA létrehoz egy indexet a titkosított oszlopokon, a lekérdezés elindítja az indexkulcsok eltávolítását az indexekből. Ebben a helyzetben az enklávénak szüksége van az oszloptitkosítási kulcsra. Az alkalmazás azonban továbbra is futtathatja ezt a lekérdezést ugyanazon a kapcsolaton keresztül, feltéve, hogy egy adattulajdonos az oszloptitkosítási kulcsokat az enklávénak biztosította.

  • Az indexek kezelésekor a szerepkörök elkülönítése érdekében, mivel lehetővé teszi a adatbázis-kezelők számára, hogy titkosított oszlopok indexeit létrehozzák és módosítják anélkül, hogy bizalmas adatokhoz férnek hozzá.

Jótanács

sp_enclave_send_keys (Transact-SQL) lehetővé teszi az indexekhez használt összes enklávé-kompatibilis oszloptitkosítási kulcs egyszerű küldését az enklávéba, és feltöltheti a kulcsgyorsítótárat.

A módszer használatáról részletes útmutatást a következő oktatóanyagban talál: Indexek létrehozása és használata enklávéval kompatibilis oszlopokon véletlenszerű titkosítás használatával.

Következő lépések

Lásd még: