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


Az Always Encrypted kulcskezelésének áttekintése

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Felügyelt Példány

Always Encrypted kétféle titkosítási kulcsot használ az adatok védelméhez : az egyik kulcsot az adatok titkosításához, a másikat pedig az adatokat titkosító kulcs titkosításához. Az oszloptitkosítási kulcs titkosítja az adatokat, az oszlop főkulcsa pedig az oszloptitkosítási kulcsot titkosítja. Ez a cikk részletes áttekintést nyújt a titkosítási kulcsok kezeléséről.

Az Always Encrypted kulcsok és kulcskezelés megvitatásakor fontos megérteni a tényleges titkosítási kulcsok és a kulcsok leíró metaadat-objektumok közötti különbséget. A oszloptitkosítási kulcs és oszlop főkulcsának kifejezéseket használjuk a tényleges titkosítási kulcsokra való hivatkozáshoz, oszloptitkosítási kulcs metaadatait és oszloptitkosítási kulcs metaadatait használjuk az adatbázis leírására.

  • oszloptitkosítási kulcsok az adatok titkosításához használt tartalomtitkosítási kulcsok. Ahogy a név is mutatja, oszloptitkosítási kulcsokkal titkosítja az adatbázisoszlopokban lévő adatokat. Egy vagy több oszlopot ugyanazzal az oszloptitkosítási kulccsal titkosíthat, vagy az alkalmazás igényeitől függően több oszloptitkosítási kulcsot is használhat. Az oszloptitkosítási kulcsok maguk titkosítva vannak, és csak az oszloptitkosítási kulcsok titkosított értékei vannak tárolva az adatbázisban (az oszloptitkosítási kulcs metaadatainak részeként). Az oszloptitkosítási kulcs metaadatai a sys.column_encryption_keys (Transact-SQL) és sys.column_encryption_key_values (Transact-SQL) katalógusnézetekben találhatók. Az AES-256 algoritmussal használt oszloptitkosítási kulcsok 256 bitesek.

  • oszlop főkulcsai az oszloptitkosítási kulcsok titkosításához használt kulcsvédő kulcsok. Az oszlop főkulcsait megbízható kulcstárolóban kell tárolni, például a Windows Tanúsítványtárolóban, az Azure Key Vaultban vagy egy hardveres biztonsági modulban. Az adatbázis csak az oszlop főkulcsairól (a kulcstároló és a hely típusáról) tartalmaz metaadatokat. Az oszlop főkulcsának metaadatait a katalógusnézet sys.column_master_keys (Transact-SQL) tárolja.

Fontos megjegyezni, hogy az adatbázisrendszer kulcs metaadatai nem tartalmaznak egyszerű szöveges oszlop főkulcsokat vagy egyszerű szöveges oszloptitkosítási kulcsokat. Az adatbázis csak az oszlop főkulcsainak típusával és helyével, valamint az oszloptitkosítási kulcsok titkosított értékeivel kapcsolatos információkat tartalmaz. Ez azt jelenti, hogy az egyszerű szöveges kulcsok soha nem lesznek elérhetők az adatbázisrendszer számára, így az Always Encrypted használatával védett adatok akkor is biztonságosak, ha az adatbázisrendszer biztonsága sérül. Annak érdekében, hogy az adatbázisrendszer ne férhessen hozzá az egyszerű szöveges kulcsokhoz, mindenképpen futtassa a kulcskezelő eszközöket az adatbázist üzemeltető gépétől eltérő gépen – a részletekért tekintse át az alábbi Kulcskezelési szakasz biztonsági szempontjait.

Mivel az adatbázis csak titkosított adatokat tartalmaz (Always Encrypted védett oszlopokban), és nem fér hozzá az egyszerű szöveges kulcsokhoz, nem tudja visszafejteni az adatokat. Ez azt jelenti, hogy az Always Encrypted oszlopok lekérdezése egyszerűen titkosított értékeket ad vissza, így a védett adatok titkosításához vagy visszafejtéséhez szükséges ügyfélalkalmazások hozzáférhetnek az oszlop főkulcsához és a kapcsolódó oszloptitkosítási kulcsokhoz. További információ: Alkalmazások fejlesztése Always Encryptedhasználatával.

Kulcskezelési feladatok

A kulcsok kezelésének folyamata a következő magas szintű feladatokra osztható:

  • kulcskiosztási – A fizikai kulcsok létrehozása megbízható kulcstárolóban (például a Windows Tanúsítványtárolóban, az Azure Key Vaultban vagy egy hardveres biztonsági modulban), oszloptitkosítási kulcsok titkosítása oszlop főkulcsokkal, valamint metaadatok létrehozása mindkét kulcstípushoz az adatbázisban.

  • kulcsváltás – Egy meglévő kulcs rendszeres cseréje új kulccsal. Előfordulhat, hogy el kell forgatnia egy kulcsot, ha a kulcs sérült, vagy ahhoz, hogy megfeleljen a szervezet szabályzatainak vagy megfelelőségi előírásainak, amelyek a titkosítási kulcsokat rendelik el.

Kulcskezelési szerepkörök

Az Always Encrypted kulcsokat kezelő felhasználóknak két különböző szerepköre van; Biztonsági rendszergazdák és adatbázis-rendszergazdák (DBA-k):

  • biztonsági rendszergazda – oszloptitkosítási kulcsokat és oszlop főkulcsokat hoz létre, és kezeli az oszlop főkulcsait tartalmazó kulcstárolókat. Ezeknek a feladatoknak a elvégzéséhez a biztonsági rendszergazdának hozzá kell férnie a kulcsokhoz és a kulcstárolóhoz, de nem kell hozzáférnie az adatbázishoz.
  • DBA – az adatbázis kulcsainak metaadatait kezeli. A kulcskezelési feladatok elvégzéséhez a DBA-nak képesnek kell lennie a kulcs metaadatainak kezelésére az adatbázisban, de nem kell hozzáférnie a kulcsokhoz vagy az oszlop főkulcsait tartalmazó kulcstárolóhoz.

A fenti szerepköröket figyelembe véve két különböző módon hajthat végre kulcskezelési feladatokat az Always Encrypted esetében; szerepkör-elkülönítési, és szerepkör-elkülönítés nélkül. A szervezet igényeitől függően kiválaszthatja a követelményeknek leginkább megfelelő kulcskezelési folyamatot.

Kulcsok kezelése szerepkör-elkülönítéssel

Ha az Always Encrypted-kulcsokat szerepkör-elkülönítéssel kezelik, a szervezet különböző tagjai a biztonsági rendszergazdai és a DBA-szerepköröket vállalják. A szerepkör-elkülönítéssel rendelkező kulcskezelési folyamat biztosítja, hogy a adatbázisgazdák ne férjenek hozzá a tényleges kulcsokat tartalmazó kulcsokhoz vagy kulcstárolókhoz, és a biztonsági rendszergazdáknak nincs hozzáférésük a bizalmas adatokat tartalmazó adatbázishoz. A szerepkör-elkülönítéssel rendelkező kulcsok kezelése akkor ajánlott, ha a cél annak biztosítása, hogy a szervezet adatbázis-szolgáltatói ne férhessenek hozzá a bizalmas adatokhoz.

Megjegyzés: biztonsági rendszergazdák egyszerű szöveges kulcsokat hoznak létre és dolgoznak velük, ezért soha nem végezhetik el feladataikat ugyanazon a számítógépen, amely adatbázisrendszert üzemeltet, illetve olyan számítógépeken, amelyekhez hozzáféréssel rendelkezhetnek a dbA-k vagy bárki más, akik potenciális támadók lehetnek.

Kulcsok kezelése szerepkör-elkülönítés nélkül

Ha az Always Encrypted kulcsokat szerepkör-elkülönítés nélkül kezelik, egyetlen személy mind a biztonsági rendszergazdai, mind a DBA-szerepköröket felvállalhatja, ami azt jelenti, hogy a személynek képesnek kell lennie a kulcsok/kulcstárolók és a kulcs metaadatainak elérésére és kezelésére. A szerepkör-elkülönítés nélküli kulcsok kezelése ajánlott a DevOps-modellt használó szervezetek számára, vagy ha az adatbázis a felhőben van tárolva, és az elsődleges cél a felhőgazdák (de nem a helyszíni adatbázis-üzemeltetők) hozzáférésének korlátozása a bizalmas adatokhoz.

Eszközök az Always Encrypted-kulcsok kezeléséhez

Az Always Encrypted kulcsok SQL Server Management Studio (SSMS) és PowerShell-használatával kezelhetők:

A kulcskezelés biztonsági szempontjai

Az Always Encrypted elsődleges célja annak biztosítása, hogy az adatbázisban tárolt bizalmas adatok biztonságosak legyenek, még akkor is, ha az adatbázisrendszer vagy annak üzemeltetési környezete sérül. Példák olyan biztonsági támadásokra, amelyeknél az Always Encrypted segíthet megelőzni a bizalmas adatszivárgásokat:

  • Rosszindulatú, magas jogosultságú adatbázis-felhasználó, például DBA, bizalmas adatoszlopokat kérdez le.
  • Egy SQL Server-példányt futtató számítógép megbízhatatlan rendszergazdája, aki az SQL Server-folyamat memóriáját olvassa be vagy az SQL Server folyamatképfájljait vizsgálja.
  • Rosszindulatú adatközpont-operátor, amely lekérdez egy ügyféladatbázist, megvizsgálja az SQL Server memóriaképfájljait, vagy megvizsgálja az ügyféladatokat a felhőben tároló számítógép memóriáját.
  • Az adatbázist futtató számítógépen futó kártevők.

Annak érdekében, hogy az Always Encrypted hatékony legyen az ilyen típusú támadások megelőzésében, a kulcskezelési folyamatnak biztosítania kell, hogy az oszlop főkulcsai és oszloptitkosítási kulcsai, valamint az oszlop főkulcsait tartalmazó kulcstároló hitelesítő adatai soha ne legyenek felfedve a potenciális támadók számára. Az alábbiakban néhány útmutatást kell követnie:

  • Soha ne hozzon létre oszlop-főkulcsokat vagy oszloptitkosítási kulcsokat az adatbázist üzemeltető számítógépen. Ehelyett hozzon létre kulcsokat egy külön számítógépen, amely vagy kulcskezelésre van dedikált, vagy egy olyan gépet üzemeltető alkalmazás, amelynek egyébként is hozzá kell férnie a kulcsokhoz. Ez azt jelenti, hogy soha nem szabad olyan eszközöket futtatnia, amelyekkel az adatbázist futtató számítógépen kulcsokat hozhat létre mert ha egy támadó hozzáfér az Always Encrypted kulcsok kiépítéséhez vagy karbantartásához használt számítógéphez, a támadó akkor is beszerezheti a kulcsokat, ha a kulcsok csak rövid ideig jelennek meg az eszköz memóriájában.
  • Annak érdekében, hogy a kulcskezelési folyamat ne tárja fel véletlenül az oszlop főkulcsait vagy az oszloptitkosítási kulcsokat, kritikus fontosságú a potenciális támadók és biztonsági fenyegetések azonosítása a kulcskezelési folyamat definiálása és megvalósítása előtt. Ha például az a cél, hogy a adatbázis-kezelők ne férjenek hozzá a bizalmas adatokhoz, akkor a kulcsok létrehozásáért nem lehet felelős a DBA. A DBA azonban kezelni a kulcs metaadatait az adatbázisban, mivel a metaadatok nem tartalmazzák az egyszerű szöveges kulcsokat.

Következő lépések