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


SQL Server-összekötő használata SQL Encryption-funkciókkal

A következőkre vonatkozik:SQL Server

Az aszimmetrikus kulccsal végzett, az Azure Key Vault által védett gyakori SQL Server-titkosítási műveletek a következő három területet foglalják magukban.

  • Transzparens adattitkosítás az Azure Key Vault aszimmetrikus kulcsával

  • Biztonsági másolatok titkosítása a Key Vaultból származó aszimmetrikus kulcs használatával

  • Oszlopszintű titkosítás a Key Vaultból származó aszimmetrikus kulcs használatával

Végezze el a témakör I–IV. részét, Az Azure Key Vaulthasználatával végzett bővíthető kulcskezelés beállítási lépéseit, mielőtt végrehajtja a jelen témakör lépéseit.

Jegyzet

A verzió 1.0.0.440 és régebbiek lecserélésre kerültek, és az éles környezetekben már nem támogatottak. Frissítsen az 1.0.1.0-s vagy újabb verzióra a Microsoft letöltőközpont felkeresésével, és használja a SQL Server-összekötő karbantartási & hibaelhárítási lapján található utasításokat az "SQL Server-összekötő frissítése" területen.

Jegyzet

Microsoft Entra ID korábban Azure Active Directory (Azure AD) néven ismert.

Transzparens adattitkosítás az Azure Key Vault aszimmetrikus kulcsával

A témakör I–IV. részének elvégzése után az Azure Key Vault használatával történő bővíthető kulcskezeléshez szükséges telepítési lépések az Azure Key Vault kulccsal titkosítják az adatbázis titkosítási kulcsát a TDE használatával. További információ a kulcsok PowerShell-lel történő elforgatásáról: Transzparens adattitkosítási (TDE) védő elforgatása a PowerShellhasználatával.

Fontos

Az átállás után ne törölje a kulcs korábbi verzióit. A kulcsok átgördítésével bizonyos adatok továbbra is titkosítva lesznek az előző kulcsokkal, például a régebbi adatbázis-biztonsági másolatokkal, a biztonsági másolatokkal és a tranzakciónapló-fájlokkal.

Létre kell hoznia egy hitelesítő adatot és egy bejelentkezést, és létre kell hoznia egy adatbázis-titkosítási kulcsot, amely titkosítja az adatbázisban lévő adatokat és naplókat. Az adatbázis titkosításához CONTROL engedély szükséges az adatbázishoz. Az alábbi ábra a titkosítási kulcs hierarchiáját mutatja be az Azure Key Vault használatakor.

Diagram a titkosítási kulcs hierarchiáját mutatja be az Azure Key Vault használatakor.

  1. Hozzon létre SQL Server hitelesítő adatokat az adatbázismotorhoz a TDE céljából

    Az adatbázismotor a Microsoft Entra alkalmazás hitelesítő adataival fér hozzá a Key Vaulthoz az adatbázis betöltése során. Javasoljuk, hogy hozzon létre egy másik ügyfél-azonosítót és titkos kulcsot, a(z) 1. lépésszerint, az adatbázismotorhoz, hogy korlátozza a megadott Key Vault jogosultságokat.

    Módosítsa az alábbi Transact-SQL szkriptet a következő módokon:

    • Szerkessze a IDENTITY argumentumot (ContosoDevKeyVault), hogy az az Azure Key Vault-ra mutasson.

      • Ha globális Azure-használ, cserélje le a IDENTITY argumentumot az Azure Key Vault nevére a II. részből.
      • Ha privát Azure-felhőt használ (például az Azure Government, a 21Vianet által üzemeltetett Azure, vagy az Azure Germany), cserélje le a IDENTITY argumentumot a második rész 3. lépésében visszaadott tároló URI-ra. Ne szerepeltesse a "https://" kifejezést a Tároló URI-jában.
    • Cserélje le az SECRET argumentum első részét a Microsoft Entra alkalmazás ügyfélazonosítójára a-ből az 1. lépés szerint. Ebben a példában a ügyfélazonosító is EF5C8E094D2A4A769998D93440D8115D.

      Fontos

      El kell távolítania a kötőjeleket a(z) ügyfélazonosító-ből.

    • Töltse ki a SECRET argumentum második részét az I. rész ügyféltitkával. Ebben a példában az 1. rész ügyféltitkaReplaceWithAADClientSecret.

    • A SECRET argumentum utolsó sztringje betűk és számok hosszú sorozata lesz, kötőjelek nélkül.

    USE master;  
    CREATE CREDENTIAL Azure_EKM_TDE_cred   
        WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany   
        SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplaceWithAADClientSecret'   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;  
    
  2. SQL Server-bejelentkezés létrehozása a TDE adatbázismotorhoz

    Hozzon létre egy SQL Server-bejelentkezést, és adja hozzá az 1. lépésből származó hitelesítő adatokat. Ez a Transact-SQL példa ugyanazt a kulcsot használja, amelyet korábban importált.

    USE master;  
    -- Create a SQL Server login associated with the asymmetric key   
    -- for the Database engine to use when it loads a database   
    -- encrypted by TDE.  
    CREATE LOGIN TDE_Login   
    FROM ASYMMETRIC KEY CONTOSO_KEY;  
    GO   
    
    -- Alter the TDE Login to add the credential for use by the   
    -- Database Engine to access the key vault  
    ALTER LOGIN TDE_Login   
    ADD CREDENTIAL Azure_EKM_TDE_cred ;  
    GO  
    
  3. Hozza létre az Adatbázis-titkosítási kulcsot (DEK)

    A DEK titkosítja az adatbázispéldány adatait és naplófájljait, és az Azure Key Vault aszimmetrikus kulcsával titkosítja. A DEK bármely SQL Server által támogatott algoritmussal vagy kulcshosszsal hozható létre.

    USE ContosoDatabase;  
    GO  
    
    CREATE DATABASE ENCRYPTION KEY   
    WITH ALGORITHM = AES_256   
    ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY;  
    GO  
    
  4. TDE bekapcsolása

    -- Alter the database to enable transparent data encryption.  
    ALTER DATABASE ContosoDatabase   
    SET ENCRYPTION ON;  
    GO  
    

    A Management Studio használatával ellenőrizze, hogy a TDE be van-e kapcsolva az adatbázishoz az Object Explorerrel való csatlakozással. Kattintson a jobb gombbal az adatbázisra, mutasson Feladatokelemre, majd kattintson Adatbázistitkosítás kezeléseparancsra.

    Képernyőkép az Objektumkezelőről, amelyen a Feladatok > Az adatbázistitkosítás kezelése beállítás van kiválasztva.

    Az Adatbázis-titkosítás kezelése párbeszédpanelen ellenőrizze, hogy a TDE be van-e kapcsolva, és hogy milyen aszimmetrikus kulcs titkosítja a DEK-t.

    Képernyőkép az Adatbázis-titkosítás kezelése párbeszédpanelről, amelyen az Adatbázis-titkosítás beállítása beállítás van kiválasztva, és egy sárga szalagcím, amely azt jelzi, hogy a TDE be van kapcsolva.

    Másik lehetőségként a következő Transact-SQL szkriptet is végrehajthatja. A 3 titkosítási állapot egy titkosított adatbázist jelöl.

    USE MASTER  
    SELECT * FROM sys.asymmetric_keys  
    
    -- Check which databases are encrypted using TDE  
    SELECT d.name, dek.encryption_state   
    FROM sys.dm_database_encryption_keys AS dek  
    JOIN sys.databases AS d  
         ON dek.database_id = d.database_id;  
    

    Jegyzet

    A tempdb adatbázis automatikusan titkosítva lesz, amikor bármely adatbázis engedélyezi a TDE-t.

Biztonsági másolatok titkosítása a Key Vaultból származó aszimmetrikus kulcs használatával

A titkosított biztonsági mentések az SQL Server 2014-től (12.x) kezdve támogatottak. A következő példa létrehoz és visszaállít egy biztonsági másolatot, amely egy adat titkosítási kulcsot tartalmaz, amelyet a kulcstartóban lévő aszimmetrikus kulcs véd.
Az adatbázismotor a Microsoft Entra alkalmazás hitelesítő adataival fér hozzá a Key Vaulthoz az adatbázis betöltése során. Javasoljuk, hogy hozzon létre egy másik ügyfél-azonosítót és titkos kulcsot, a(z) 1. lépésszerint, az adatbázismotorhoz, hogy korlátozza a megadott Key Vault jogosultságokat.

  1. Sql Server-hitelesítő adatok létrehozása az adatbázismotorhoz a biztonsági mentés titkosításához

    Módosítsa az alábbi Transact-SQL szkriptet a következő módokon:

    • Szerkessze a IDENTITY argumentumot (ContosoDevKeyVault), hogy az az Azure Key Vault-ra mutasson.

      • Ha globális Azure-használ, cserélje le a IDENTITY argumentumot az Azure Key Vault nevére a II. részből.
      • Ha magánfelhőt használ az Azure rendszerében (például Azure Government, a Microsoft Azure, amelyet a 21Vianet üzemeltet, vagy az Azure Germany esetében), akkor a IDENTITY argumentumot helyettesítse a II. rész 3. lépésében visszaadott Tároló URI-val. Ne szerepeltesse a "https://" kifejezést a Tároló URI-jában.
    • Cserélje le az SECRET argumentum első részét a Microsoft Entra alkalmazás ügyfélazonosítójára a-ből az 1. lépés szerint. Ebben a példában a ügyfélazonosító is EF5C8E094D2A4A769998D93440D8115D.

      Fontos

      El kell távolítania a kötőjeleket a(z) ügyfélazonosító-ből.

    • Töltse ki a SECRET argumentum második részét az I. rész Titkos ügyfélkódjával. Ebben a példában az I. rész titkos ügyfélkódjaReplace-With-AAD-Client-Secret. A SECRET argumentum utolsó sztringje betűk és számok hosszú sorozata lesz, kötőjelek nélkül.

      USE master;  
      
      CREATE CREDENTIAL Azure_EKM_Backup_cred   
          WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany   
          SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret'   
      FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;    
      
  2. Egy SQL Server-bejelentkezés létrehozása az adatbázismotor biztonsági mentések titkosításához

    Hozzon létre egy SQL Server-bejelentkezést, amelyet az adatbázismotor használ a titkosítási biztonsági mentésekhez, és adja hozzá az 1. lépésből származó hitelesítő adatokat. Ez a Transact-SQL példa ugyanazt a kulcsot használja, amelyet korábban importált.

    Fontos

    A biztonsági mentés titkosításához nem használhatja ugyanazt az aszimmetrikus kulcsot, ha már használta ezt a kulcsot a TDE-hez (a fenti példa) vagy az oszlopszintű titkosításhoz (a következő példában).

    Ez a példa a kulcstartóban tárolt CONTOSO_KEY_BACKUP aszimmetrikus kulcsot használja, amely a főadatbázishoz korábban importálható vagy hozható létre a IV. rész 5. lépésében.

    USE master;  
    
    -- Create a SQL Server login associated with the asymmetric key   
    -- for the Database engine to use when it is encrypting the backup.  
    CREATE LOGIN Backup_Login   
    FROM ASYMMETRIC KEY CONTOSO_KEY_BACKUP;  
    GO   
    
    -- Alter the Encrypted Backup Login to add the credential for use by   
    -- the Database Engine to access the key vault  
    ALTER LOGIN Backup_Login   
    ADD CREDENTIAL Azure_EKM_Backup_cred ;  
    GO  
    
  3. Az adatbázis biztonsági mentése

    Készítsen biztonsági másolatot a titkosítást meghatározó adatbázisról a kulcstartóban tárolt aszimmetrikus kulccsal.

    Az alábbi példában vegye figyelembe, hogy ha az adatbázist már TDE-vel titkosították, és az aszimmetrikus kulcs CONTOSO_KEY_BACKUP eltér a TDE aszimmetrikus kulcsától, a biztonsági mentést a TDE aszimmetrikus kulccsal és CONTOSO_KEY_BACKUPis titkosítja. A cél SQL Server-példánynak mindkét kulcsra szüksége lesz a biztonsági mentés visszafejtéséhez.

    USE master;  
    
    BACKUP DATABASE [DATABASE_TO_BACKUP]  
    TO DISK = N'[PATH TO BACKUP FILE]'   
    WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD,   
    ENCRYPTION(ALGORITHM = AES_256,   
    SERVER ASYMMETRIC KEY = [CONTOSO_KEY_BACKUP]);  
    GO  
    
  4. Adatbázis- visszaállítása

    A TDE-vel titkosított adatbázis biztonsági mentésének visszaállításához a cél SQL Server-példánynak először rendelkeznie kell a titkosításhoz használt aszimmetrikus Key Vault-kulcs másolatával. Ez így valósulna meg:

    • Ha a TDE-hez használt eredeti aszimmetrikus kulcs már nincs a Key Vaultban, állítsa vissza a Key Vault kulcsának biztonsági mentését, vagy importálja újra a kulcsot egy helyi HSM-ből. Fontos: Ahhoz, hogy a kulcs ujjlenyomata egyezzen az adatbázis biztonsági mentésében rögzített ujjlenyomattal, a kulcsot el kell nevezni a Key Vault-kulcs nevének, mint korábban.

    • Alkalmazza az 1. és a 2. lépést a cél SQL Server-példányra.

    • Miután a cél SQL Server-példány hozzáfér a biztonsági mentés titkosításához használt aszimmetrikus kulcs(ok)hoz, állítsa vissza az adatbázist a kiszolgálón.

    Minta visszaállítási kód:

    RESTORE DATABASE [DATABASE_TO_BACKUP]  
    FROM DISK = N'[PATH TO BACKUP FILE]'   
        WITH FILE = 1, NOUNLOAD, REPLACE;  
    GO  
    

    A biztonsági mentési lehetőségekről további információt BIZTONSÁGI MENTÉS (Transact-SQL)című témakörben talál.

Oszlopszintű titkosítás a Key Vaultból származó aszimmetrikus kulcs használatával

Az alábbi példa egy szimmetrikus kulcsot hoz létre, amelyet az aszimmetrikus kulcs véd a kulcstárban. Ezután a szimmetrikus kulcs az adatbázisban lévő adatok titkosítására szolgál.

Fontos

Nem használhatja ugyanazt az aszimmetrikus kulcsot az oszlopszintű titkosításhoz, ha már használta ezt a kulcsot a biztonsági mentés titkosításához.

Ez a példa a kulcstartóban tárolt CONTOSO_KEY_COLUMNS aszimmetrikus kulcsot használja, amely korábban importálható vagy létrehozható, a Bővíthető kulcskezeléshez az Azure Key Vaulthasználatával történő beállítási lépéseinek 3. lépésében leírtak szerint. Az aszimmetrikus kulcs ContosoDatabase adatbázisban való használatához újra végre kell hajtania a CREATE ASYMMETRIC KEY utasítást, hogy a ContosoDatabase adatbázis hivatkozással rendelkezzen a kulcsra.

USE [ContosoDatabase];  
GO  
  
-- Create a reference to the key in the key vault  
CREATE ASYMMETRIC KEY CONTOSO_KEY_COLUMNS   
FROM PROVIDER [AzureKeyVault_EKM_Prov]  
WITH PROVIDER_KEY_NAME = 'ContosoDevRSAKey2',  
CREATION_DISPOSITION = OPEN_EXISTING;  
  
-- Create the data encryption key.  
-- The data encryption key can be created using any SQL Server   
-- supported algorithm or key length.  
-- The DEK will be protected by the asymmetric key in the key vault  
  
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY  
    WITH ALGORITHM=AES_256  
    ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;  
  
DECLARE @DATA VARBINARY(MAX);  
  
--Open the symmetric key for use in this session  
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY   
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;  
  
--Encrypt syntax  
SELECT @DATA = ENCRYPTBYKEY  
    (  
    KEY_GUID('DATA_ENCRYPTION_KEY'),   
    CONVERT(VARBINARY,'Plain text data to encrypt')  
    );  
  
-- Decrypt syntax  
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));  
  
--Close the symmetric key  
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;  

Lásd még:

A bővíthető kulcskezelés beállítási lépései az Azure Key Vault használatával
Bővíthető kulcskezelés az Azure Key Vault
EKM-szolgáltató által engedélyezett kiszolgálókonfigurációs beállítás
SQL Server csatlakozó karbantartás & hibaelhárítás