Sdílet prostřednictvím


Kurz: Začínáme používat funkci Always Encrypted s enklávy Intel SGX ve službě Azure SQL Database

Platí pro: Azure SQL Database

V tomto kurzu se naučíte, jak začít používat funkci Always Encrypted se zabezpečenými enklávy ve službě Azure SQL Database. Použijete enklávy Intel Software Guard Extensions (Intel SGX). Zobrazí se vám:

  • Jak vytvořit prostředí pro testování a vyhodnocení funkce Always Encrypted pomocí enkláv Intel SGX.
  • Postup šifrování místních dat a vydávání bohatých důvěrných dotazů na šifrované sloupce pomocí aplikace SQL Server Management Studio (SSMS).

Požadavky

Požadavky PowerShellu

Poznámka:

Požadavky uvedené v této části platí jenom v případě, že se rozhodnete použít PowerShell pro některé kroky v tomto kurzu. Pokud plánujete místo toho používat Azure Portal, můžete tuto část přeskočit.

Vyžaduje se modul Az PowerShell verze 9.3.0 nebo novější. Podrobnosti o tom, jak nainstalovat modul Az PowerShell, najdete v tématu Instalace modulu Azure Az PowerShell. Pokud chcete zjistit verzi modulu Az PowerShell, který je nainstalovaný na vašem počítači, spusťte z PowerShellu následující příkaz.

Get-InstalledModule -Name Az

Krok 1: Vytvoření a konfigurace serveru a databáze řady DC

V tomto kroku vytvoříte nový logický server Azure SQL Database a novou databázi pomocí hardwaru řady DC, který se vyžaduje pro always Encrypted se zabezpečenými enklávy. Další informace najdete v tématu DC-series.

  1. Přejděte na stránku s možností Vybrat nasazení SQL.

  2. Pokud ještě nejste přihlášení k webu Azure Portal, přihlaste se po zobrazení výzvy.

  3. V části Databáze SQL ponechte typ prostředku nastavený na Jednoúčelová databáze a vyberte Vytvořit.

    Snímek obrazovky webu Azure Portal s možností Přidat do nasazení Azure SQL

  4. Na kartě Základy ve formuláři Vytvořit databázi SQL v části Podrobnosti projektu vyberte požadované předplatné Azure.

  5. V části Skupina prostředků vyberte Vytvořit nový, zadejte název skupiny prostředků a vyberte OK.

  6. Jako název databáze zadejte ContosoHR.

  7. V části Server vyberte Vytvořit nový a vyplňte formulář Nový server následujícími hodnotami:

    • Název serveru: Zadejte mysqlserver a přidejte několik znaků pro jedinečnost. Nemůžeme zadat přesný název serveru, který se má použít, protože názvy serverů musí být globálně jedinečné pro všechny servery v Azure, ne jenom jedinečné v rámci předplatného. Zadejte třeba mysqlserver135 a portál vám dá vědět, jestli je dostupný nebo ne.
    • Umístění: Vyberte umístění z rozevíracího seznamu.

      Důležité

      Potřebujete vybrat umístění (oblast Azure), které podporuje hardware řady DC i ověření identity Microsoft Azure. Seznam oblastí podporujících řadu DC-series najdete v tématu Dostupnost řady DC. Tady je regionální dostupnost ověření identity Microsoft Azure.

    • Metoda ověřování: Výběr možnosti Použít ověřování SQL
    • Přihlášení správce serveru: Zadejte přihlašovací jméno správce, například azureuser.
    • Heslo: Zadejte heslo, které splňuje požadavky, a zadejte ho znovu do pole Potvrdit heslo .
    • Vyberte OK.
  8. Ponechte možnost Použít elastický fond SQL nastavený na Ne.

  9. V části Compute + Storage vyberte Konfigurovat databázi a vyberte Změnit konfiguraci.

    Snímek obrazovky s konfigurací hardwaru na webu Azure Portal a umístěním konfigurace databáze

  10. Vyberte konfiguraci hardwaru řady DC a pak vyberte OK.

    Snímek obrazovky webu Azure Portal zobrazující konfiguraci databáze řady DC

  11. Vyberte Použít.

  12. Zpět na kartě Základy ověřte, že je výpočetní prostředky a úložiště nastavené na Úroveň Pro obecné účely, DC, 2 virtuální jádra, 32 GB úložiště.

  13. V případě redundance úložiště zálohování vyberte Místně redundantní úložiště zálohování.

  14. Vyberte Další: Sítě v dolní části stránky.

    Snímek obrazovky webu Azure Portal zobrazující konfiguraci databáze řady DC -series – základy

  15. Na kartě Sítě vyberte pro metodu připojení veřejný koncový bod.

  16. U pravidel brány firewall nastavte možnost Přidat aktuální IP adresu klienta na hodnotu Ano. Ponechte možnost Povolit službám a prostředkům Azure přístup k tomuto serveru na hodnotu Ne.

  17. V případě zásad připojení ponechte zásadu připojení jako výchozí – používá zásady přesměrování pro všechna klientská připojení pocházející z Azure a proxy serveru pro všechna připojení klientů pocházející mimo Azure.

  18. U šifrovaných připojení ponechte minimální verzi protokolu TLS na TLS 1.2.

  19. Vyberte Zkontrolovat a vytvořit v dolní části stránky.

    Snímek obrazovky webu Azure Portal – Vytvoření služby SQL Database, karta Sítě

  20. Na stránce Zkontrolovat a vytvořit vyberte po kontrole možnost Vytvořit.

Krok 2: Konfigurace zprostředkovatele ověření identity

V tomto kroku vytvoříte a nakonfigurujete zprostředkovatele ověření identity v Microsoft Azure Attestation. To je potřeba k testování zabezpečené enklávy, které vaše databáze používá.

  1. Přejděte na stránku Vytvořit zprostředkovatele ověření identity.

  2. Na stránce Vytvořit zprostředkovatele ověření identity zadejte následující vstupy:

    • Předplatné: Zvolte stejné předplatné, ve které jste vytvořili logický server Azure SQL.
    • Skupina prostředků: Zvolte stejnou skupinu prostředků, ve které jste vytvořili logický server Azure SQL.
    • Název: Zadejte myattestprovider a přidejte několik znaků pro jedinečnost. Nemůžeme zadat přesný název zprostředkovatele ověření identity, který se má použít, protože názvy musí být globálně jedinečné. Zadejte například myattestprovider12345 a portál vám dá vědět, jestli je dostupný nebo ne.
    • Umístění: Zvolte stejné umístění jako logický server Azure SQL.
    • Soubor certifikátů podepisující zásady zásad: Nechte toto pole prázdné, protože nakonfigurujete nepodepsané zásady.
  3. Po zadání požadovaných vstupů vyberte Zkontrolovat a vytvořit.

    Snímek obrazovky s nabídkou zprostředkovatele ověření identity na webu Azure Portal

  4. Vyberte Vytvořit.

  5. Po vytvoření zprostředkovatele ověření identity vyberte Přejít k prostředku.

  6. Na kartě Přehled zprostředkovatele ověření identity zkopírujte hodnotu vlastnosti Attest URI do schránky a uložte ji do souboru. Toto je adresa URL ověření identity, kterou budete potřebovat v dalších krocích.

    Snímek obrazovky s adresou URL ověření identity na webu Azure Portal

  7. V nabídce prostředků na levé straně okna nebo v dolním podokně vyberte Zásadu .

  8. Nastavte typ ověření identity na SGX-IntelSDK.

  9. V horní nabídce vyberte Konfigurovat .

    Snímek obrazovky s konfigurací zásad ověření identity na webu Azure Portal

  10. Nastavte formát zásad na text. Nechte možnosti zásad nastavené na Zadat zásadu.

  11. V textovém poli Zásady nahraďte výchozí zásadu následující zásadou. Informace o následujících zásadách najdete v tématu Vytvoření a konfigurace zprostředkovatele ověření identity.

version= 1.0;
authorizationrules 
{
       [ type=="x-ms-sgx-is-debuggable", value==false ]
        && [ type=="x-ms-sgx-product-id", value==4639 ]
        && [ type=="x-ms-sgx-svn", value>= 2 ]
        && [ type=="x-ms-sgx-mrsigner", value=="e31c9e505f37a58de09335075fc8591254313eb20bb1a27e5443cc450b6e33e5"] 
    => permit();
};

  1. Zvolte Uložit.

    Snímek obrazovky s úpravou zásad ověření identity na webu Azure Portal

  2. Výběrem možnosti Aktualizovat v horní nabídce zobrazíte nakonfigurované zásady.

Krok 3: Naplnění databáze

V tomto kroku vytvoříte tabulku a naplníte ji některými daty, která později zašifrujete a dotazujete.

  1. Otevřete SSMS a připojte se k databázi ContosoHR na logickém serveru Azure SQL, který jste vytvořili bez povolené funkce Always Encrypted v připojení k databázi.

    1. V dialogovém okně Připojit k serveru zadejte plně kvalifikovaný název serveru (například myserver135.database.windows.net) a zadejte uživatelské jméno správce a heslo, které jste zadali při vytváření serveru.

    2. Vyberte Možnosti >> a vyberte kartu Vlastnosti připojení. Nezapomeňte vybrat databázi ContosoHR (ne výchozí databázi). master

    3. Vyberte kartu Always Encrypted.

    4. Ujistěte se, že není zaškrtnuté políčko Povolit funkci Always Encrypted (šifrování sloupce).

      Snímek obrazovky připojení k serveru pomocí SSMS bez povolené funkce Always Encrypted

    5. Vyberte Připojit.

  2. Vytvořte novou tabulku s názvem Zaměstnanci.

    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];
    GO
    
  3. Do tabulky Employees (Zaměstnanci) přidejte několik záznamů o zaměstnancích .

    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);
    

Krok 4: Zřízení klíčů s podporou enklávy

V tomto kroku vytvoříte hlavní klíč sloupce a šifrovací klíč sloupce, který umožňuje výpočty enklávy.

  1. Pomocí instance SSMS z předchozího kroku rozbalte v Průzkumník objektů databázi a přejděte na klíče Always Encrypted zabezpečení>.

  2. Zřízení nového hlavního klíče sloupce s podporou enklávy:

    1. Klikněte pravým tlačítkem myši na Always Encrypted Keys a vyberte Nový hlavní klíč sloupce....
    2. Zadejte název nového hlavního klíče sloupce: CMK1.
    3. Ověřte, že je vybrána možnost Povolit výpočty enklávy. (Ve výchozím nastavení je vybraná, pokud je pro databázi povolená zabezpečená enkláva. Měla by být povolená, protože vaše databáze používá konfiguraci hardwaru řady DC.)
    4. Vyberte službu Azure Key Vault (doporučeno) nebo Úložiště certifikátů Windows (aktuální uživatel nebo místní počítač).
      • Pokud vyberete Azure Key Vault, přihlaste se k Azure, vyberte předplatné Azure obsahující trezor klíčů, který chcete použít, a vyberte svůj trezor klíčů. Vyberte Vygenerovat klíč a vytvořte nový klíč.
      • Pokud vyberete Úložiště certifikátů systému Windows, vyberte tlačítko Generovat certifikát a vytvořte nový certifikát. Snímek obrazovky s výběrem výpočtů povolit enklávu v SSMS při vytváření nového hlavního klíče sloupce
    5. Vyberte OK.
  3. Vytvořte nový šifrovací klíč sloupce s podporou enklávy:

    1. Klikněte pravým tlačítkem myši na always Encrypted Keys (Vždy Encrypted Keys ) a vyberte New Column Encryption Key (Nový šifrovací klíč sloupce).
    2. Zadejte název nového šifrovacího klíče sloupce: CEK1.
    3. V rozevíracím seznamu Hlavní klíč sloupce vyberte hlavní klíč sloupce, který jste vytvořili v předchozích krocích.
    4. Vyberte OK.

Krok 5: Zašifrování některých sloupců

V tomto kroku zašifrujete data uložená ve sloupcích SSN a Plat uvnitř enklávy na straně serveru a pak otestujete dotaz SELECT na data.

  1. Otevřete novou instanci SSMS a připojte se k databázi s povolenou funkcí Always Encrypted pro připojení k databázi.

    1. Spusťte novou instanci aplikace SSMS.

    2. V dialogovém okně Připojit k serveru zadejte plně kvalifikovaný název serveru (například myserver135.database.windows.net) a zadejte uživatelské jméno správce a heslo, které jste zadali při vytváření serveru.

    3. Vyberte Možnosti >> a vyberte kartu Vlastnosti připojení. Nezapomeňte vybrat databázi ContosoHR (ne výchozí databázi). master

    4. Vyberte kartu Always Encrypted.

    5. Zaškrtněte políčko Povolit funkci Always Encrypted (šifrování sloupce).

    6. Vyberte Povolit zabezpečené enklávy. (Tento krok platí pro SSMS 19 nebo novější.)

    7. Nastavte protokol na ověření identity Microsoft Azure. (Tento krok platí pro SSMS 19 nebo novější.)

    8. Zadejte adresu URL ověření identity enklávy, kterou jste získali podle kroků v kroku 2: Konfigurace zprostředkovatele ověření identity. Podívejte se na následující snímek obrazovky.

      Snímek obrazovky s kartou Always Encrypted dialogového okna Připojení k serveru SSMS s povolenou ověřením identity

    9. Vyberte Připojit.

    10. Pokud se zobrazí výzva k povolení parametrizace pro dotazy Always Encrypted, vyberte Povolit.

  2. Pomocí stejné instance SSMS (s povolenou funkcí Always Encrypted) otevřete nové okno dotazu a zašifrujte sloupce SSN a Plat spuštěním následujících příkazů.

    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;
    

    Poznámka:

    Všimněte si příkazu ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE, který vymaže mezipaměť plánu dotazu pro databázi ve výše uvedeném skriptu. Po změně tabulky je potřeba vymazat plány pro všechny dávky a uložené procedury, které přistupují k tabulce, aby se aktualizovaly informace o šifrování parametrů.

  3. Pokud chcete ověřit, že sloupce SSN a Plat jsou teď šifrované, otevřete v instanci SSMS nové okno dotazu bez povolení funkce Always Encrypted pro připojení k databázi a spusťte následující příkaz. Okno dotazu by mělo vracet šifrované hodnoty ve sloupcích SSN a Plat . Pokud spustíte stejný dotaz pomocí instance SSMS s povolenou funkcí Always Encrypted, měli byste vidět dešifrovaná data.

    SELECT * FROM [HR].[Employees];
    

Krok 6: Spuštění bohatých dotazů na šifrované sloupce

Pro šifrované sloupce můžete spouštět bohaté dotazy. Některé zpracování dotazů se provede uvnitř enklávy na straně serveru.

  1. V instanci SSMS s povolenou funkcí Always Encrypted se ujistěte, že je povolená také parametrizace funkce Always Encrypted.

    1. V hlavní nabídce aplikace SSMS vyberte Nástroje .
    2. Vyberte Možnosti....
    3. Přejděte k rozšířenému zpracování>dotazů SQL Serveru.>
    4. Ujistěte se, že je zaškrtnuté povolení parametrizace pro funkci Always Encrypted .
    5. Vyberte OK.
  2. Otevřete nové okno dotazu, vložte následující dotaz a spusťte ho. Dotaz by měl vrátit hodnoty prostého textu a řádky, které splňují zadaná kritéria hledání.

    DECLARE @SSNPattern [char](11) = '%6818';
    DECLARE @MinSalary [money] = $1000;
    SELECT * FROM [HR].[Employees]
    WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
    
  3. Opakujte stejný dotaz v instanci SSMS, která nemá povolenou funkci Always Encrypted. Mělo by dojít k selhání.

Další kroky

Po dokončení tohoto kurzu můžete přejít na jeden z následujících kurzů:

Viz také