Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Az Always Encrypted és az Always Encrypted biztonságos enklávékkal olyan funkciók, amelyek a bizalmas információk védelmére szolgálnak, beleértve a hitelkártyaszámokat és a nemzeti vagy regionális azonosító számokat (például az egyesült államokbeli társadalombiztosítási számokat), az Azure SQL Database-ben, az Azure SQL Managed Instance-ben és az SQL Server-adatbázisokban. Az ügyfélalkalmazások bizalmas adatait titkosíthatja, így biztosítva, hogy a titkosítási kulcsok soha ne legyenek elérhetők az adatbázismotor számára. Ez a megközelítés elkülönítést biztosít az adatok tulajdonosa és azok között, akik az adatokat kezelik, de nem férhetnek hozzá: helyszíni adatbázis-rendszergazdák, felhőadatbázis-üzemeltetők vagy más magas jogosultságú jogosulatlan felhasználók. Ennek eredményeképpen az Always Encrypted lehetővé teszi az ügyfelek számára, hogy biztonságosan tárolják bizalmas adataikat a felhőben, csökkentve ezzel a rosszindulatú bennfentesek adatlopásának kockázatát.
Az Always Encrypted bizonyos korlátozásokkal rendelkezik, például a titkosított adatokon végzett műveletek nem végezhetők el, beleértve a rendezést és a szűrést is (kivéve a determinisztikus titkosítást használó pontkereséseket). Ez a korlátozás azt jelenti, hogy egyes lekérdezések és alkalmazások nem kompatibilisek az Always Encrypteddel, vagy jelentős módosításokat igényelhetnek az alkalmazáslogikában.
A korlátozások kezelése érdekében az Always Encrypted biztonságos enklávékkal lehetővé teszi az adatbázismotor számára a titkosított adatok feldolgozását egy biztonságos enklávénak nevezett védett memóriaterületen belül. A biztonságos enklávék a mintaegyeztetés, a különböző összehasonlító operátorok és a helyszíni titkosítás támogatásával növelik az Always Encrypted bizalmas számítási képességeit.
Az Always Encrypted biztosítja, hogy a titkosítás zökkenőmentes legyen az alkalmazások számára. Az ügyfélen az Always Encrypted-kompatibilis illesztőprogram titkosítja a bizalmas adatokat, mielőtt elküldené azokat az adatbázismotornak, és automatikusan újraírja a lekérdezéseket az alkalmazás szemantikájának fenntartása érdekében. Emellett automatikusan visszafejti a lekérdezési eredményeket a titkosított adatbázisoszlopokból.
Always Encrypted konfigurálása
Megjegyzés:
Azoknak az alkalmazásoknak, amelyeknek mintaegyeztetést kell végezniük, használjon összehasonlító operátorokat, rendezési és indexelési műveleteket titkosított oszlopokon, implementálja az Always Encryptedt biztonságos enklávékkal.
Ez a szakasz áttekintést nyújt az Always Encrypted beállításáról. A részletekért és az első lépésekért tekintse meg az Always Encrypted használatának első lépéseit ismertető oktatóanyagot.
Az Always Encrypted adatbázisbeli konfigurálásához kövesse az alábbi lépéseket:
Titkosítási kulcsok kiépítése az adatok védelméhez. Az Always Encrypted kétféle kulcsot használ:
- Oszloptitkosítási kulcsok.
- Oszlop főkulcsai.
Az oszloptitkosítási kulcs titkosítja a titkosított oszlopon belüli adatokat. Az oszlop főkulcsa egy kulcsvédő kulcs, amely egy vagy több oszloptitkosítási kulcsot titkosít.
Az oszlop főkulcsait az adatbázisrendszeren kívüli megbízható kulcstárolóban tárolhatja, például az Azure Key Vaultban, a Windows tanúsítványtárolójában vagy egy hardveres biztonsági modulban. A lépés után építse ki az oszloptitkosítási kulcsokat, és titkosítsa az egyes kulcsokat egy oszlop főkulcsával.
Végül mentse a metaadatokat az adatbázis kulcsairól. Az oszlop főkulcsának metaadatai tartalmazzák az oszlop főkulcsának helyét. Az oszloptitkosítási kulcs metaadatai az oszloptitkosítási kulcs titkosított értékét tartalmazzák. Az adatbázismotor nem tárol és nem használ egyszerű szöveges kulcsokat.
Az Always Encrypted-kulcsok kezelésével kapcsolatos további információkért tekintse meg az Always Encrypted kulcskezelésének áttekintését.
A védelem biztosítása érdekében állítson be titkosítást adott adatbázisoszlopokhoz, amelyek bizalmas információkat tartalmaznak. Ehhez a lépéshez szükség lehet új, titkosított oszlopokkal rendelkező táblák létrehozására vagy a meglévő oszlopok és adatok titkosítására. Egy oszlop titkosításának konfigurálásakor adja meg a titkosítási algoritmus részleteit, az adatok védelmét szolgáló oszloptitkosítási kulcsot és a titkosítás típusát. Az Always Encrypted kétféle titkosítást támogat:
A determinisztikus titkosítás mindig ugyanazt a titkosított értéket hozza létre egy adott egyszerű szöveges értékhez. A determinisztikus titkosítással pontkereséseket, egyenlőségi illesztéseket, csoportosítást és indexelést végezhet titkosított oszlopokon. A jogosulatlan felhasználók azonban a titkosított oszlopok mintáinak vizsgálatával találhatnak ki információkat a titkosított értékekről, különösen akkor, ha a lehetséges titkosított értékek egy kis halmaza van, például igaz/hamis vagy észak/délkelet/keleti/nyugati régió.
A véletlenszerű titkosítás olyan módszert használ, amely kiszámíthatatlanul titkosítja az adatokat. Minden azonos egyszerű szöveges bemenet külön titkosított kimenetet eredményez. Ez a módszer javítja a véletlenszerű titkosítás biztonságát.
Ha összehasonlító operátorok használatával, a titkosított oszlopok rendezésével és indexelésével szeretne mintaegyeztetést végezni, fogadja el az Always Encryptedt biztonságos enklávékkal , és alkalmazza a véletlenszerű titkosítást. Az Always Encrypted (biztonságos enklávék nélkül) véletlenszerű titkosítás nem támogatja a titkosított oszlopok keresését, csoportosítását, indexelését vagy összekapcsolását. Ehelyett a keresési vagy csoportosítási célokra szánt oszlopok esetében determinisztikus titkosítást kell használnia. Ez a titkosítási típus lehetővé teszi az olyan műveleteket, mint a pontkeresések, egyenlőségi illesztések, csoportosítás és indexelés titkosított oszlopokon.
Mivel az adatbázisrendszer tervezésénél fogva nem fér hozzá a titkosítási kulcsokhoz, az oszloptitkosításhoz az adatok adatbázison kívüli áthelyezése és titkosítása szükséges. A titkosítási folyamat hosszú időt vehet igénybe, és sebezhető a hálózati megszakításokkal szemben. Emellett, ha később újra kell titkosítania egy oszlopot, például a titkosítási kulcs elforgatásakor vagy a titkosítási típus módosításakor, ugyanezekkel a nehézségekkel szembesül. Az Always Encrypted biztonságos enklávékkal való használata szükségtelenné teszi az adatok adatbázisból való áthelyezését. Mivel az enklávé megbízható, az alkalmazás ügyfélillesztője vagy egy olyan eszköz, mint az SQL Server Management Studio (SSMS) biztonságosan megoszthatja a kulcsokat az enklávéval a titkosítási műveletek során. Az enklávé ezután titkosíthatja vagy újra titkosíthatja az oszlopokat a helyén, ami jelentősen csökkenti a műveletekhez szükséges időt.
Az Always Encrypted titkosítási algoritmusokkal kapcsolatos részletekért lásd: Always Encrypted titkosítás.
Az alábbi lépéseket sql-eszközökkel hajthatja végre:
- Always Encrypted-kulcsok kiépítése az SQL Server Management Studióval
- Always Encrypted konfigurálása a PowerShell használatával
- sqlpackage – amely automatizálja a beállítási folyamatot
Annak érdekében, hogy az Always Encrypted kulcsok és a védett bizalmas adatok soha ne legyenek natív formában felfedve az adatbázis-környezetben, az adatbázismotor nem végezhet kulcsok kiépítését, valamint adattitkosítási vagy visszafejtési műveleteket. Ezért a Transact-SQL (T-SQL) nem támogatja a kulcsok kiépítését és a titkosítási műveleteket. Ugyanezen okból a meglévő adatok titkosítását vagy újratitkosítását (más titkosítási típussal vagy oszloptitkosítási kulccsal) az adatbázison kívül kell végrehajtani (az SQL-eszközök automatizálhatják ezt).
A titkosított oszlopok definíciójának módosítása után hajtsa végre a sp_refresh_parameter_encryption az objektum Always Encrypted metaadatainak frissítéséhez.
Korlátozások
A titkosított oszlopokon lévő lekérdezésekre az alábbi korlátozások vonatkoznak:
Véletlenszerű titkosítással titkosított oszlopokon nem végezhet számításokat. A determinisztikus titkosítás az alábbi műveleteket támogatja, amelyek egyenlőségi összehasonlításokat is magukban foglalnak. Más műveletek nem engedélyezettek:
- = (Equals) (Transact-SQL) a pontkeresésekben.
- IN (Transact-SQL).
- SELECT – GROUP BY- Transact-SQL.
- ELTÉRŐ.
Megjegyzés:
Azoknak az alkalmazásoknak, amelyeknek mintaegyeztetést kell végezniük, használjon összehasonlító operátorokat, rendezési és indexelési műveleteket titkosított oszlopokon, implementálja az Always Encryptedt biztonságos enklávékkal.
Nem használhat olyan lekérdezési utasításokat, amelyek egyszerű szöveges és titkosított adatokat is tartalmazó számításokat aktiválnak. Például:
- Titkosított oszlop és egyszerű szöveges oszlop vagy literál összehasonlítása.
- Adatok másolása egyszerű szöveges oszlopból titkosított oszlopba (vagy fordítva)
UPDATEvagyBULK INSERTSELECT INTOINSERT..SELECT. - Literálok beszúrása titkosított oszlopokba.
Az ilyen utasítások az alábbihoz hasonló operandusütközési hibákat eredményeznek:
Msg 206, Level 16, State 2, Line 89 Operand type clash: char(11) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_1', column_encryption_key_database_name = 'ssn') collation_name = 'Latin1_General_BIN2' is incompatible with charAz alkalmazásoknak lekérdezési paraméterekkel kell megadniuk a titkosított oszlopok értékeit. Ha például titkosított oszlopokba szúr be adatokat, vagy determinisztikus titkosítással szűri őket, használjon lekérdezési paramétereket. A titkosított oszlopoknak megfelelő literális vagy T-SQL-változók átadása nem támogatott. A használt ügyfélillesztővel kapcsolatos további információkért lásd: Alkalmazások fejlesztése Always Encrypted használatával.
Az SSMS-ben elengedhetetlen az Always Encrypted változók paraméterezésének alkalmazása a titkosított oszlopokhoz társított értékeket kezelő lekérdezések végrehajtásához. Ez a követelmény olyan forgatókönyveket is tartalmaz, mint például az adatok titkosított oszlopokba való beszúrása vagy szűrők alkalmazása (olyan esetekben, amikor determinisztikus titkosítást használnak).
A titkosított oszlopokat célzó táblaértékű paraméterek nem támogatottak.
A következő záradékokat használó lekérdezések nem támogatottak:
Az Always Encrypted nem támogatott az alábbi jellemzőkkel rendelkező oszlopok esetében:
- Az alábbi adattípusok egyikét használó oszlopok: xml, időbélyeg, sorverzió, kép, ntext, szöveg, sql_variant, hierarchia,földrajzi hely, geometria, vektor, alias, felhasználó által definiált típusok.
- FILESTREAM-oszlopok .
- Az IDENTITY tulajdonsággal rendelkező oszlopok.
- ROWGUIDCOL tulajdonsággal rendelkező oszlopok.
- Karakterlánc oszlopok (varchar, char és más), amelyek nem bináris kódpont (
_BIN2) osztályozásokkal rendelkeznek. A rendezés nem térhet el az adatbázis alapértelmezett rendezésétől. - A véletlenszerű titkosítás használatakor kulcsokként szolgáló oszlopok a fürtözött és nem fürtözött indexekhez (a determinisztikus titkosítást használó oszlopok indexei támogatottak).
- A teljes szöveges indexek oszlopai (az Always Encrypted nem támogatja aFull-Text Search szolgáltatást).
- Számított oszlopok megadása egy táblában.
- A számított oszlopok által hivatkozott oszlopok, ha a kifejezés nem támogatott műveleteket végez az Always Encrypted esetében.
- Használjon ritka oszlopokat.
- A statisztikák által véletlenszerű titkosítás használatakor hivatkozott oszlopok (a determinisztikus titkosítás támogatott).
- Oszlopok particionálása.
- Alapértelmezett korlátozásokkal rendelkező oszlopok.
- Véletlenszerű titkosítás használatakor egyedi korlátozások által hivatkozott oszlopok (a determinisztikus titkosítás támogatott).
- Elsődleges kulcsoszlopok véletlenszerű titkosítás használatakor (a determinisztikus titkosítás támogatott).
- Véletlenszerű titkosítás vagy determinisztikus titkosítás használatakor külső kulcsra vonatkozó korlátozások oszlopainak hivatkozása során, ha a hivatkozott és hivatkozó oszlopok különböző kulcsokat vagy algoritmusokat használnak.
-
Az ellenőrzési korlátozások által hivatkozott oszlopok.
- A módosítási adatrögzítéssel rögzített vagy nyomon követett oszlopok.
- A változáskövetéssel rendelkező táblák elsődleges kulcsoszlopai.
- Dinamikus adatmaszkolással maszkolt oszlopok.
- Ha egy memóriaoptimalizált táblában lévő oszlopra natívan lefordított modul hivatkozik, a titkosítás nem alkalmazható a tábla egyik oszlopára sem.
- Stretch adatbázistáblák oszlopai. (Az Always Encrypteddel titkosított oszlopokat tartalmazó táblák engedélyezhetők a Stretch esetében.)
Fontos
A Stretch Database elavult az SQL Server 2022 -ben (16.x) és az Azure SQL Database-ben. Ez a funkció az adatbázismotor egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.
- Külső (PolyBase) táblák oszlopai (megjegyzés: a külső táblák és a titkosított oszlopokat tartalmazó táblák használata ugyanabban a lekérdezésben támogatott).
A következő funkciók nem működnek titkosított oszlopokon:
- SQL Server-replikáció (tranzakciós, egyesítési vagy pillanatkép-replikáció). A fizikai replikációs funkciók, beleértve az Always On rendelkezésre állási csoportokat is, támogatottak.
- Elosztott lekérdezések (társított kiszolgálók, OPENROWSET (Transact-SQL), OPENDATASOURCE (Transact-SQL)).
- Adatbázisközi lekérdezések , amelyek különböző adatbázisokból titkosított oszlopokon végeznek illesztéseket.
Always Encrypted Transact-SQL referencia
Az Always Encrypted a következő Transact-SQL utasításokat, rendszerkatalógus-nézeteket, rendszer által tárolt eljárásokat és engedélyeket használja.
Kimutatások
| DDL utasítás | Description |
|---|---|
| OSZLOPFŐKULCS LÉTREHOZÁSA | Oszlop főkulcs metaadat-objektumának létrehozása egy adatbázisban |
| AZ OSZLOP FŐKULCSÁNAK ELVETÉSE | Elvet egy oszlop főkulcsát egy adatbázisból. |
| OSZLOPTITKOSÍTÁSI KULCS LÉTREHOZÁSA | Létrehoz egy oszloptitkosítási kulcs metaadat-objektumát. |
| OSZLOPTITKOSÍTÁSI KULCS MÓDOSÍTÁSA | Módosítja az adatbázis oszloptitkosítási kulcsát, hozzáad vagy elvet egy titkosított értéket. |
| OSZLOPTITKOSÍTÁSI KULCS ELVETÉSE | Egy oszloptitkosítási kulcs eltávolítása az adatbázisból. |
| TÁBLA LÉTREHOZÁSA (TITKOSÍTOTT) | Oszlopok titkosítását adja meg |
Rendszerkatalógus-nézetek és tárolt eljárások
| Rendszerkatalógus-nézetek és tárolt eljárások | Description |
|---|---|
| sys.column_encryption_keys | Az oszloptitkosítási kulcsokkal (CEK-kkal) kapcsolatos információkat adja vissza |
| sys.column_encryption_key_values | Adatokat ad vissza az oszloptitkosítási kulcsok (CEK-k) titkosított értékeiről |
| sys.column_master_keys | Egy sort ad vissza az egyes adatbázis-főkulcsokhoz |
| sp_refresh_parameter_encryption | Frissíti az Always Encrypted metaadatait a megadott nem sémaalapú tárolt eljárás, felhasználó által definiált függvény, nézet, DML-eseményindító, adatbázisszintű DDL-eseményindító vagy kiszolgálószintű DDL-eseményindító paramétereihez |
| sp_describe_parameter_encryption | Elemzi a megadott Transact-SQL utasítást és paramétereit annak meghatározásához, hogy mely paraméterek felelnek meg az Always Encrypted funkcióval védett adatbázisoszlopoknak. |
Az egyes oszlopokhoz tárolt titkosítási metaadatokkal kapcsolatos információkért tekintse meg a sys.columns című témakört.
Adatbázis-engedélyek
Az Always Encrypted négy adatbázis-engedélyt használ.
| Rendszerkatalógus-nézetek és tárolt eljárások | Description |
|---|---|
ALTER ANY COLUMN MASTER KEY |
Az oszlop főkulcs-metaadatainak létrehozásához és törléséhez szükséges. |
ALTER ANY COLUMN ENCRYPTION KEY |
Oszloptitkosítási kulcs metaadatainak létrehozásához és törléséhez szükséges. |
VIEW ANY COLUMN MASTER KEY DEFINITION |
Az oszlop főkulcsának metaadatainak eléréséhez és olvasásához szükséges, amely a titkosított oszlopok lekérdezéséhez szükséges. |
VIEW ANY COLUMN ENCRYPTION KEY DEFINITION |
Az oszloptitkosítási kulcs metaadatainak eléréséhez és olvasásához szükséges, amely a titkosított oszlopok lekérdezéséhez szükséges. |
Az alábbi táblázat összefoglalja a gyakori műveletekhez szükséges engedélyeket.
| Forgatókönyv | ALTER ANY COLUMN MASTER KEY |
ALTER ANY COLUMN ENCRYPTION KEY |
VIEW ANY COLUMN MASTER KEY DEFINITION |
VIEW ANY COLUMN ENCRYPTION KEY DEFINITION |
|---|---|---|---|---|
| Kulcskezelés (kulcs metaadatainak létrehozása, módosítása vagy áttekintése az adatbázisban) | X | X | X | X |
| Titkosított oszlopok lekérdezése | X | X |
Fontos szempontok
A
VIEW ANY COLUMN MASTER KEY DEFINITIONésVIEW ANY COLUMN ENCRYPTION KEY DEFINITIONengedélyekre van szükség a titkosított oszlopok kiválasztásakor. Ezek az engedélyek akkor is védik az oszlopokat, ha a felhasználó nem rendelkezik engedéllyel az oszlop főkulcsaihoz a kulcstárolókban, és nem fér hozzá egyszerű szöveghez.Az SQL Serverben a nyilvános rögzített adatbázis szerepkör alapértelmezés szerint mindkettőt
VIEW ANY COLUMN MASTER KEY DEFINITIONésVIEW ANY COLUMN ENCRYPTION KEY DEFINITIONengedélyeket is biztosít. Az adatbázisgazdák dönthetnek úgy, hogy visszavonják vagy megtagadják ezeket az engedélyeket a nyilvános szerepkörhöz, és adott szerepköröknek vagy felhasználóknak engedélyezik a korlátozottabb vezérlést.SQL Database-ben a nyilvános rögzített adatbázis szerepkör alapértelmezés szerint nem adja meg a
VIEW ANY COLUMN MASTER KEY DEFINITIONésVIEW ANY COLUMN ENCRYPTION KEY DEFINITIONengedélyeket. Ez a módosítás lehetővé teszi, hogy a DacFx régebbi verzióit használó meglévő eszközök megfelelően működjenek. A titkosított oszlopokkal való munkához (még ha nem is fejti vissza őket), az adatbázis-rendszergazdának kifejezetten meg kell adnia azVIEW ANY COLUMN MASTER KEY DEFINITIONésVIEW ANY COLUMN ENCRYPTION KEY DEFINITIONengedélyeket.