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


Oktatóanyag: Az Always Encrypted használatának első lépései az SQL Serveren biztonságos enklávé funkcióval és HGS igazolással.

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók Windows rendszeren

Ez az oktatóanyag bemutatja, hogyan kezdheti el az Always Encrypted használatát biztonságos enklávékkal az SQL Serverben a Host Guardian Service (HGS) használatával az enklávéigazoláshoz. A következőt jeleníti meg:

  • Alapszintű környezet létrehozása az Always Encrypted biztonságos enklávékkal való teszteléséhez és kiértékeléséhez az enklávéigazoláshoz konfigurált HGS-lel.
  • Adatok helyben történő titkosítása és gazdag bizalmas lekérdezések kiadása titkosított oszlopokon az SQL Server Management Studio (SSMS) használatával.

Ha szeretné megtudni, hogyan állíthatja be az Always Encryptedt biztonságos enklávékkal igazolás nélkül, tekintse meg az oktatóanyagot: Az Always Encrypted használatának első lépései biztonságos enklávékkal az SQL Serverben.

Előfeltételek

Az Always Encrypted biztonságos enklávékkal való használatának megkezdéséhez legalább két számítógépre van szükség (ezek lehetnek virtuális gépek):

  • Az SQL Servert és az SSMS-t futtató SQL Server-számítógép.
  • A HGS-számítógép a Host Guardian Service futtatásához, amely az enklávé igazoláshoz szükséges.

AZ SQL Server számítógépre vonatkozó követelményei

  • SQL Server 2019 (15.x) vagy újabb.
  • Windows 10, 1809-es vagy újabb verzió – Enterprise edition, Windows 11 vagy újabb – Enterprise edition, Windows Server 2019 vagy újabb – Datacenter edition. A Windows 10/11 és a Windows Server egyéb kiadásai nem támogatják a HGS-vel való igazolást.
  • Cpu-támogatás virtualizálási technológiákhoz:
    • Intel VT-x kiterjesztett oldaltáblákkal.
    • AMD-V gyorsított virtualizációs indexeléssel.
    • Ha az SQL Servert virtuális gépen futtatja:
      • Az Azure-ban használjon 2. generációs virtuálisgép-méretet (ajánlott), vagy használjon 1. generációs virtuálisgép-méretet, ha engedélyezve van a beágyazott virtualizálás. Tekintse meg az egyes virtuálisgép-méretek dokumentációját annak megállapításához, hogy az 1. generációs virtuális gépek mely méretei támogatják a beágyazott virtualizálást.
      • Győződjön meg róla, hogy a Hyper-V 2016 vagy újabb verzióján (az Azure-on kívül) a virtuális gépe egy 2. generációs VM (ajánlott), vagy pedig egy 1. generációs VM, amelyen engedélyezve van a beágyazott virtualizáció. További információ: 1. vagy 2. generációs virtuális gép létrehozása a Hyper-V-ben? és Beágyazott virtualizálás konfigurálása.
      • A VMware vSphere 6.7 vagy újabb verziójában engedélyezze a virtuális gép virtualizáláson alapuló biztonsági támogatását a VMware dokumentációjában leírtak szerint.
      • Más hipervizorok és nyilvános felhők is támogathatják a beágyazott virtualizálási képességeket, amelyek lehetővé teszik az Always Encryptedt a VBS Enklávékkal is. A kompatibilitási és konfigurációs utasításokért tekintse meg a virtualizálási megoldás dokumentációját.
  • Az SQL Server Management Studio (SSMS)legújabb verziója. Másik lehetőségként telepítheti az SSMS-t egy másik gépre.

Figyelmeztetés

Éles környezetben az SSMS vagy más kulcskezelő eszközök futtatása az SQL Server számítógépen csökkentheti az Always Encrypted használatának biztonsági előnyeit. Általában ajánlott az ilyen eszközök futtatása egy másik gépen. További információ: A kulcskezelés biztonsági szempontjai.

A HGS számítógépre vonatkozó követelményei

  • Windows Server 2019 Standard vagy Datacenter kiadás
  • 2 PROCESSZOR
  • 8 GB RAM
  • 100 GB tárhely

Megjegyzés:

A HGS-számítógépet nem szabad tartományhoz csatlakoztatni a kezdés előtt.

1. lépés: A HGS-számítógép konfigurálása

Ebben a lépésben konfigurálja a HGS számítógépet a Host Guardian szerviz gazdagépkulcs-igazolás támogatására.

  1. Jelentkezzen be a HGS-számítógépre rendszergazdaként (helyi rendszergazdaként), nyisson meg egy emelt szintű Windows PowerShell-konzolt, és adja hozzá a Gazdagépőr szolgáltatás szerepkört az alábbi parancs futtatásával:

    Install-WindowsFeature -Name HostGuardianServiceRole -IncludeManagementTools -Restart
    
  2. A HGS-számítógép újraindítása után jelentkezzen be ismét a rendszergazdai fiókjával, nyisson meg egy emelt szintű Windows PowerShell-konzolt, és futtassa az alábbi parancsokat a Gazdagépőr szolgáltatás telepítéséhez és a tartomány konfigurálásához. Az itt megadott jelszó csak az Active Directory címtárszolgáltatások javítási módjának jelszavára vonatkozik; nem módosítja a rendszergazdai fiók bejelentkezési jelszavát. Megadhat bármilyen tartománynevet a -HgsDomainName névhez.

    $adminPassword = ConvertTo-SecureString -AsPlainText '<password>' -Force
    Install-HgsServer -HgsDomainName 'bastion.local' -SafeModeAdministratorPassword $adminPassword -Restart
    
  3. Miután a számítógép újraindult, jelentkezzen be a rendszergazdai fiókjával (amely most már tartományadminisztrátor is). Nyisson meg egy emelt szintű Windows PowerShell-konzolt, és konfigurálja a gazdagépkulcs-igazolást a HGS-példányhoz.

    Initialize-HgsAttestation -HgsServiceName 'hgs' -TrustHostKey  
    
  4. Az alábbi parancs futtatásával keresse meg a HGS-számítógép IP-címét. Mentse ezt az IP-címet a későbbi lépésekhez.

    Get-NetIPAddress  
    

Megjegyzés:

Ha egy DNS névvel szeretné hivatkozni a HGS számítógépre, beállíthat egy átirányítást a vállalati DNS-kiszolgálókról az új HGS tartományvezérlőre.

2. lépés: Az SQL Server-számítógép védett gazdagépként való konfigurálása

Ebben a lépésben a HGS-ben regisztrált védett gazdagépként konfigurálja az SQL Server-számítógépet a gazdagépkulcs-igazolás használatával.

Figyelmeztetés

A gazdagépkulcs-igazolás gyengébb igazolási módnak minősül. Ha lehetséges, TPM-attesztációt kellene használnia éles környezetekhez. További információ: Igazolási módok.

  1. Jelentkezzen be rendszergazdaként az SQL Server-számítógépre, nyisson meg egy emelt szintű Windows PowerShell-konzolt, és kérje le a számítógép nevét a számítógépnév változó eléréséhez.

    $env:computername 
    
  2. Telepítse a Védett gazdagép funkciót, amely telepíti a Hyper-V-t is, ha még nincs telepítve.

    Enable-WindowsOptionalFeature -Online -FeatureName HostGuardian -All
    
  3. Indítsa újra az SQL Server-számítógépet, amikor a rendszer a Hyper-V telepítésének befejezésére kéri.

  4. Ha az SQL Server-számítógép egy virtuális gép, egy olyan fizikai gép, amely nem támogatja az UEFI biztonságos rendszerindítást, vagy egy fizikai gép, amely nem rendelkezik IOMMU-val, el kell távolítania a platformbiztonsági funkciókhoz szükséges VBS-követelményeket.

    1. Távolítsa el a biztonságos rendszerindításra és az IOMMU-ra vonatkozó követelményt, ha a következő parancsot futtatja az SQL Server-számítógépen egy emelt szintű PowerShell-konzolon:

      Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard -Name RequirePlatformSecurityFeatures -Value 0
      
    2. Indítsa újra az SQL Server-számítógépet, hogy a VBS online állapotba lépjen az alacsonyabb követelményekkel.

      Restart-Computer
      
  5. Jelentkezzen be ismét rendszergazdaként az SQL Server-számítógépre, nyisson meg egy emelt szintű Windows PowerShell-konzolt, hozzon létre egy egyedi gazdagépkulcsot, és exportálja az eredményül kapott nyilvános kulcsot egy fájlba.

    Set-HgsClientHostKey 
    Get-HgsClientHostKey -Path $HOME\Desktop\hostkey.cer
    
  6. Másolja manuálisan az előző lépésben létrehozott gazdagépkulcs fájlt a HGS gépre. Az alábbi utasítások feltételezik, hogy a fájl neve hostkey.cer, és hogy a HGS számítógép Asztalára másolja.

  7. A HGS-számítógépen nyisson meg egy emelt szintű Windows PowerShell-konzolt, és regisztrálja az SQL Server-számítógép gazdagépkulcsát a HGS-ben:

    Add-HgsAttestationHostKey -Name <your SQL Server computer name> -Path $HOME\Desktop\hostkey.cer
    
  8. Az SQL Server-számítógépen futtassa a következő parancsot egy emelt szintű Windows PowerShell-konzolon, hogy megmondja az SQL Server-számítógépnek, hogy hol kell igazolnia. Győződjön meg arról, hogy mindkét címhelyen megadja a HGS-számítógép IP-címét vagy DNS-nevét.

    # use http, and not https
    Set-HgsClientConfiguration -AttestationServerUrl http://<IP address or DNS name>/Attestation -KeyProtectionServerUrl http://<IP address or DNS name>/KeyProtection/  
    

A fenti parancs eredményének azt kell mutatnia, hogy attestationStatus = Passed.

Ha hibaüzenetet HostUnreachable kap, az azt jelenti, hogy az SQL Server-számítógép nem tud kommunikálni a HGS-vel. Győződjön meg arról, hogy pingelheti a HGS-számítógépet.

Egy UnauthorizedHost hiba azt jelzi, hogy a nyilvános kulcs nincs regisztrálva a HGS-kiszolgálón. Ismételje meg az 5. és a 6. lépést a hiba megoldásához.

Ha minden más nem sikerül, futtassa Remove-HgsClientHostKey, és ismételje meg a 4–7. lépéseket.

3. lépés: Az Always Encrypted engedélyezése biztonságos enklávékkal az SQL Serveren

Ebben a lépésben engedélyezni fogja az Always Encrypted funkcióját enklávékkal az Ön SQL Server-példányában.

  1. Az SSMS használatával csatlakozzon az SQL Server-példányhoz a sysadminként anélkül hogy az adatbázis-kapcsolathoz engedélyezve lenne az Always Encrypted.

    1. Indítsa el az SSMS-eket.

    2. 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.

    3. Válassza a Beállítások lehetőséget >> , és válassza az Always Encrypted (Mindig titkosított ) lapot.

    4. Győződjön meg arról, hogy az Always Encrypted (oszloptitkosítás) engedélyezése jelölőnégyzetet ne jelölje be.

      Képernyőkép az Always Encrypted SSMS kapcsolati lehetőségéről.

    5. Válassza a Csatlakozás lehetőséget.

  2. Nyisson meg egy új lekérdezési ablakot, és hajtsa végre az alábbi utasítást a biztonságos enklávé típus virtualizáláson alapuló biztonságra (VBS) való beállításához.

    EXEC sys.sp_configure 'column encryption enclave type', 1;
    RECONFIGURE;
    
  3. Indítsa újra az SQL Server-példányt az előző módosítás érvénybe lépéséhez. A példányt az SSMS-ben úgy indíthatja újra, hogy a jobb gombbal rá kattint az Object Explorerben, majd az Újraindítás lehetőséget választja. Ha a példány újraindul, csatlakozzon újra hozzá.

  4. A következő lekérdezés futtatásával győződjön meg arról, hogy a biztonságos enklávé be van töltve:

    SELECT [name], [value], [value_in_use] FROM sys.configurations
    WHERE [name] = 'column encryption enclave type';
    

    A lekérdezésnek a következő eredményt kell visszaadnia:

    név value használati érték
    oszloptitkosítási enklávé típusa 1 1

4. lépés: Mintaadatbázis létrehozása

Ebben a lépésben létrehoz egy adatbázist néhány mintaadattal, amelyet később titkosít.

  1. Az előző lépés SSMS-példányával hajtsa végre az alábbi utasítást egy lekérdezési ablakban egy új, ContosoHR nevű adatbázis létrehozásához.

    CREATE DATABASE [ContosoHR];
    
  2. Hozzon létre egy új, Alkalmazottak nevű táblát.

    USE [ContosoHR];
    GO
    
    CREATE SCHEMA [HR];
    GO
    
    CREATE TABLE [HR].[Employees]
    (
        [EmployeeID] [int] IDENTITY(1,1) NOT NULL,
        [SSN] [char](11) NOT NULL,
        [FirstName] [nvarchar](50) NOT NULL,
        [LastName] [nvarchar](50) NOT NULL,
        [Salary] [money] NOT NULL
    ) ON [PRIMARY];
    
  3. Adjon hozzá néhány alkalmazotti rekordot az Alkalmazottak táblához.

    USE [ContosoHR];
    GO
    
    INSERT INTO [HR].[Employees]
            ([SSN]
            ,[FirstName]
            ,[LastName]
            ,[Salary])
        VALUES
            ('795-73-9838'
            , N'Catherine'
            , N'Abel'
            , $31692);
    
    INSERT INTO [HR].[Employees]
            ([SSN]
            ,[FirstName]
            ,[LastName]
            ,[Salary])
        VALUES
            ('990-00-6818'
            , N'Kim'
            , N'Abercrombie'
            , $55415);
    

5. lépés: Enklávé-kompatibilis kulcsok kiépítése

Ebben a lépésben létre fog hozni egy oszlop főkulcsát és egy oszloptitkosítási kulcsot, amely lehetővé teszi az enklávészámítást.

  1. Az előző lépésben használt SSMS-példány segítségével, a Object Explorerterületen nyissa meg az adatbázisát, majd navigáljon a Biztonsági>Always Encrypted Keysrészhez.

  2. Új enklávé-kompatibilis oszlop főkulcsának kiépítése:

    1. Kattintson a jobb gombbal a Mindig titkosított kulcsok elemre, és válassza az Új oszlopmester kulcs...lehetőséget.

    2. Válassza ki az oszlop főkulcsának nevét: CMK1.

    3. Győződjön meg arról, hogy a Windows Tanúsítványtárolót (jelenlegi felhasználó vagy helyi gép) vagy az Azure Key Vaultot választja.

    4. Válassza az Enklávészámítás engedélyezése lehetőséget.

    5. Ha az Azure Key Vaultot választotta, jelentkezzen be az Azure-ba, és válassza ki a kulcstartót. Az Always Encrypted kulcstartójának létrehozásáról további információt a Kulcstartók kezelése az Azure Portalon című témakörben talál.

    6. Ha már létezik, válassza ki a tanúsítványt vagy az Azure Key Value-kulcsot, vagy a Tanúsítvány létrehozása gombra kattintva hozzon létre egy újat.

    7. Kattintson az OK gombra.

      Képernyőkép az SSMS-ben az enklávészámítások kiválasztásának engedélyezéséről egy új oszlop főkulcsának létrehozásakor.

  3. Hozzon létre egy új enklávé-kompatibilis oszloptitkosítási kulcsot:

    1. Kattintson jobb gombbal a Mindig titkosított kulcsokra, majd válassza az Új oszlop titkosítási kulcslehetőséget.
    2. Adja meg az új oszloptitkosítási kulcs nevét: CEK1.
    3. Az Oszlop főkulcs legördülő listájában válassza ki az előző lépésekben létrehozott oszlopmintakulcsot.
    4. Kattintson az OK gombra.

6. lépés: Egyes oszlopok titkosítása helyben

Ebben a lépésben titkosítja az SSN és a Fizetés oszlopban tárolt adatokat a kiszolgálóoldali enklávéban, majd tesztel egy SELECT lekérdezést az adatokon.

  1. Nyisson meg egy új SSMS-példányt, és csatlakozzon az SQL Server-példányhoz úgy, hogy az Always Encrypted engedélyezve van az adatbázis-kapcsolathoz.

    1. Indítsa el az SSMS új példányát.

    2. 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.

    3. Válassza a Beállítások lehetőséget >> , és válassza az Always Encrypted (Mindig titkosított ) lapot.

    4. Jelölje be az Always Encrypted (oszloptitkosítás) engedélyezése jelölőnégyzetet.

    5. Válassza a Biztonságos enklávék engedélyezéselehetőséget. (Ez a lépés az SSMS 19 vagy újabb verziójára vonatkozik.)

    6. Állítsa be a protokollt a Részhálózat védelmi szolgáltatásra. (Ez a lépés az SSMS 19 vagy újabb verziójára vonatkozik.)

    7. Adja meg az enklávé igazolási URL-címét (például http:// hgs.bastion.local/Attestation).

      Képernyőkép az Always Encrypted kiszolgálóhoz való csatlakozás lapról az igazolással az SSMS használatával.

    8. Válassza a Csatlakozás lehető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.

  2. Ha ugyanazt az SSMS-példányt használja (az Always Encrypted engedélyezve van), nyisson meg egy új lekérdezési ablakot, és az alábbi lekérdezések futtatásával titkosítsa az SSN és a Fizetés oszlopokat.

    USE [ContosoHR];
    GO
    
    ALTER TABLE [HR].[Employees]
    ALTER COLUMN [SSN] [char] (11) COLLATE Latin1_General_BIN2
    ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
    WITH
    (ONLINE = ON);
    
    ALTER TABLE [HR].[Employees]
    ALTER COLUMN [Salary] [money]
    ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
    WITH
    (ONLINE = ON);
    
    ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
    

    Megjegyzés:

    Vegye figyelembe, hogy az ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE utasítás az adatbázis lekérdezésterv-gyorsítótárának törlésére szolgál a fenti szkriptben. A tábla módosítása után az összes feladatra és tárolt eljárásra vonatkozó tervet (amelyek hozzáférnek a táblához) törölni kell, hogy a paraméterek titkosítási információit frissítse.

  3. Az SSN és a Salary oszlopok titkosításának ellenőrzéséhez nyisson meg egy új lekérdezési ablakot az SSMS-példányban anélkül , hogy az Always Encrypted engedélyezve lett az adatbázis-kapcsolathoz, és hajtsa végre az alábbi utasítást. A lekérdezési ablaknak titkosított értékeket kell visszaadnia az SSN és a Fizetés oszlopban. Ha ugyanazt a lekérdezést az Always Encrypted funkcióval rendelkező SSMS-példány használatával hajtja végre, akkor a visszafejtett adatokat kell látnia.

    SELECT * FROM [HR].[Employees];
    

7. lépés: Gazdag lekérdezések futtatása titkosított oszlopokon

Most már gazdag lekérdezéseket futtathat a titkosított oszlopokon. A lekérdezések feldolgozása a kiszolgálóoldali enklávéban történik.

  1. Az SSMS-példányban Always Encrypted engedélyezve van, győződjön meg arról, hogy az Always Encrypted paraméterezése is engedélyezve van.

    1. Válassza a Eszközök lehetőséget az SSMS főmenüjéből.
    2. Válassza a lehetőségeket....
    3. Navigáljon a lekérdezés-végrehajtás>SQL Server>Speciálispontra.
    4. Győződjön meg arról, hogy Az Always Encrypted paraméterezésének engedélyezése jelölőnégyzet be van jelölve.
    5. Kattintson az OK gombra.
  2. Nyisson meg egy új lekérdezési ablakot, illessze be és hajtsa végre az alábbi lekérdezést. A lekérdezésnek egyszerű szöveges értékeket és a megadott keresési feltételeknek megfelelő sorokat kell visszaadnia.

    DECLARE @SSNPattern [char](11) = '%6818';
    DECLARE @MinSalary [money] = $1000;
    SELECT * FROM [HR].[Employees]
    WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
    
  3. Próbálja meg újra ugyanazt a lekérdezést az SSMS-példányban, amely nem rendelkezik always encrypted engedélyezve, és jegyezze fel a felmerülő hibát.

Következő lépések

Az oktatóanyag elvégzése után az alábbi oktatóanyagok egyikére léphet:

Lásd még