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
- Aktivní předplatné Azure. Pokud žádné nemáte, vytvořte si bezplatný účet. Abyste mohli vytvářet prostředky a konfigurovat zásady ověření identity, musíte být členem role Přispěvatel nebo role Vlastník předplatného.
- Volitelné, ale doporučujeme uložit hlavní klíč sloupce pro Always Encrypted: trezor klíčů ve službě Azure Key Vault. Informace o tom, jak vytvořit trezor klíčů, najdete v tématu Rychlý start: Vytvoření trezoru klíčů pomocí webu Azure Portal.
- Pokud trezor klíčů používá model oprávnění zásad přístupu, ujistěte se, že máte v trezoru
get
klíčů následující oprávnění: , ,list
,create
unwrap key
,wrap key
,verify
.sign
. Další informace najdete v tématu Přiřazení zásad přístupu ke službě Key Vault. - Pokud používáte model oprávnění řízení přístupu na základě role (RBAC) Azure, ujistěte se, že jste členem role kryptografického důstojníka služby Key Vault pro váš trezor klíčů. Viz Poskytnutí přístupu ke klíčům, certifikátům a tajným kódům služby Key Vault pomocí řízení přístupu na základě role v Azure.
- Pokud trezor klíčů používá model oprávnění zásad přístupu, ujistěte se, že máte v trezoru
- Nejnovější verzi aplikace SQL Server Management Studio (SSMS).
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.
Přejděte na stránku s možností Vybrat nasazení SQL.
Pokud ještě nejste přihlášení k webu Azure Portal, přihlaste se po zobrazení výzvy.
V části Databáze SQL ponechte typ prostředku nastavený na Jednoúčelová databáze a vyberte Vytvořit.
Na kartě Základy ve formuláři Vytvořit databázi SQL v části Podrobnosti projektu vyberte požadované předplatné Azure.
V části Skupina prostředků vyberte Vytvořit nový, zadejte název skupiny prostředků a vyberte OK.
Jako název databáze zadejte ContosoHR.
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.
Ponechte možnost Použít elastický fond SQL nastavený na Ne.
V části Compute + Storage vyberte Konfigurovat databázi a vyberte Změnit konfiguraci.
Vyberte konfiguraci hardwaru řady DC a pak vyberte OK.
Vyberte Použít.
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ě.
V případě redundance úložiště zálohování vyberte Místně redundantní úložiště zálohování.
Vyberte Další: Sítě v dolní části stránky.
Na kartě Sítě vyberte pro metodu připojení veřejný koncový bod.
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.
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.
U šifrovaných připojení ponechte minimální verzi protokolu TLS na TLS 1.2.
Vyberte Zkontrolovat a vytvořit v dolní části stránky.
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á.
Přejděte na stránku Vytvořit zprostředkovatele ověření identity.
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.
Po zadání požadovaných vstupů vyberte Zkontrolovat a vytvořit.
Vyberte Vytvořit.
Po vytvoření zprostředkovatele ověření identity vyberte Přejít k prostředku.
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.
V nabídce prostředků na levé straně okna nebo v dolním podokně vyberte Zásadu .
Nastavte typ ověření identity na SGX-IntelSDK.
V horní nabídce vyberte Konfigurovat .
Nastavte formát zásad na text. Nechte možnosti zásad nastavené na Zadat zásadu.
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();
};
Zvolte Uložit.
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.
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.
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.
Vyberte Možnosti >> a vyberte kartu Vlastnosti připojení. Nezapomeňte vybrat databázi ContosoHR (ne výchozí databázi).
master
Vyberte kartu Always Encrypted.
Ujistěte se, že není zaškrtnuté políčko Povolit funkci Always Encrypted (šifrování sloupce).
Vyberte Připojit.
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
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.
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í>.
Zřízení nového hlavního klíče sloupce s podporou enklávy:
- Klikněte pravým tlačítkem myši na Always Encrypted Keys a vyberte Nový hlavní klíč sloupce....
- Zadejte název nového hlavního klíče sloupce: CMK1.
- 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.)
- 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.
- Vyberte OK.
Vytvořte nový šifrovací klíč sloupce s podporou enklávy:
- 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).
- Zadejte název nového šifrovacího klíče sloupce: CEK1.
- V rozevíracím seznamu Hlavní klíč sloupce vyberte hlavní klíč sloupce, který jste vytvořili v předchozích krocích.
- 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.
Otevřete novou instanci SSMS a připojte se k databázi s povolenou funkcí Always Encrypted pro připojení k databázi.
Spusťte novou instanci aplikace SSMS.
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.
Vyberte Možnosti >> a vyberte kartu Vlastnosti připojení. Nezapomeňte vybrat databázi ContosoHR (ne výchozí databázi).
master
Vyberte kartu Always Encrypted.
Zaškrtněte políčko Povolit funkci Always Encrypted (šifrování sloupce).
Vyberte Povolit zabezpečené enklávy. (Tento krok platí pro SSMS 19 nebo novější.)
Nastavte protokol na ověření identity Microsoft Azure. (Tento krok platí pro SSMS 19 nebo novější.)
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.
Vyberte Připojit.
Pokud se zobrazí výzva k povolení parametrizace pro dotazy Always Encrypted, vyberte Povolit.
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ů.
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.
V instanci SSMS s povolenou funkcí Always Encrypted se ujistěte, že je povolená také parametrizace funkce Always Encrypted.
- V hlavní nabídce aplikace SSMS vyberte Nástroje .
- Vyberte Možnosti....
- Přejděte k rozšířenému zpracování>dotazů SQL Serveru.>
- Ujistěte se, že je zaškrtnuté povolení parametrizace pro funkci Always Encrypted .
- Vyberte OK.
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;
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ů:
- Kurz: Vývoj aplikace .NET pomocí funkce Always Encrypted se zabezpečenými enklávy
- Kurz: Vývoj aplikace rozhraní .NET Framework pomocí funkce Always Encrypted se zabezpečenými enklávy
- Kurz: Vytváření a používání indexů ve sloupcích povolených enklávou pomocí randomizovaného šifrování