Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server 2019 (15.x) a novější – jenom Windows
V tomto kurzu se naučíte, jak začít používat funkci Always Encrypted se zabezpečenými enklávami na SQL Serveru pomocí služby Strážce hostitele (HGS) pro ověření identity enklávy. Zobrazí se vám:
- Vytvoření základního prostředí pro testování a vyhodnocení funkce Always Encrypted se zabezpečenými enklávami s nakonfigurovaným HGS pro ověření identity enklávy
- 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).
Pokud chcete zjistit, jak nastavit funkci Always Encrypted se zabezpečenými enklávy bez ověření identity, přečtěte si kurz: Začínáme používat funkci Always Encrypted se zabezpečenými enklávy na SQL Serveru.
Požadavky
Abyste mohli začít používat funkci Always Encrypted se zabezpečenými enklávy, potřebujete aspoň dva počítače (můžou se jednat o virtuální počítače):
- Počítač s SQL Serverem pro hostování SYSTÉMU SQL Server a SSMS.
- Počítač HGS ke spuštění služby Strážce hostitele, který je potřeba k ověření identity enklávy.
Požadavky na počítač s SQL Serverem
- SQL Server 2019 (15.x) nebo novější
- Windows 10 verze 1809 nebo novější – Edice Enterprise, Windows 11 nebo novější – Edice Enterprise, Windows Server 2019 nebo novější – Datacenter Edition. Ostatní edice Windows 10/11 a Windows Serveru nepodporují ověření identity pomocí HGS.
- Podpora procesoru pro virtualizační technologie:
- Intel VT-x s rozšířenými stránkovacími tabulkami.
- AMD-V s rychlým indexováním virtualizace.
- Pokud na virtuálním počítači používáte SQL Server:
- V Azure použijte velikost virtuálního počítače 2. generace (doporučeno) nebo použijte velikost virtuálního počítače 1. generace s povolenou vnořenou virtualizací. Projděte si dokumentaci k velikosti jednotlivých virtuálních počítačů a zjistěte, které velikosti virtuálních počítačů generace 1 podporují vnořené virtualizace.
- V Hyper-V 2016 nebo novějším (mimo Azure) se ujistěte, že je váš virtuální počítač 2. generace (doporučeno) nebo že se jedná o virtuální počítač 1. generace s povolenou vnořenou virtualizací. Další informace najdete v tématu Vytvoření virtuálního počítače generace 1 nebo 2 v Hyper-V akonfigurace vnořené virtualizace.
- V prostředí VMware vSphere 6.7 nebo novější povolte podporu virtualizačního zabezpečení pro virtuální počítač, jak je popsáno v dokumentaci k VMware.
- Ostatní hypervisory a veřejné cloudy můžou podporovat vnořené virtualizační funkce, které umožňují funkci Always Encrypted s enklávy VBS. V dokumentaci k řešení virtualizace zkontrolujte kompatibilitu a pokyny ke konfiguraci.
- Nejnovější verzi aplikace SQL Server Management Studio (SSMS). Jako alternativu můžete nainstalovat SSMS na jiný počítač.
Výstraha
V produkčních prostředích může spouštění SSMS nebo jiných nástrojů pro správu klíčů na počítači s SQL Serverem snížit výhody zabezpečení používání funkce Always Encrypted. Obecně se doporučuje používat takové nástroje na jiném počítači. Další informace najdete v tématu Důležité informace o zabezpečení správy klíčů.
Požadavky na počítač HGS
- Windows Server 2019 Standard nebo Datacenter Edition
- 2 procesory
- 8 GB PAMĚTI RAM
- 100 GB úložiště
Poznámka:
Počítač HGS by neměl být před spuštěním připojený k doméně.
Krok 1: Konfigurace počítače HGS
V tomto kroku nakonfigurujete počítač HGS tak, aby spustil službu Strážce hostitele podporující ověření klíče hostitele.
Přihlaste se k počítači HGS jako správce (místní správce), otevřete konzolu Windows PowerShellu se zvýšenými oprávněními a přidejte roli služby Strážce hostitele spuštěním následujícího příkazu:
Install-WindowsFeature -Name HostGuardianServiceRole -IncludeManagementTools -RestartPo restartování počítače HGS se znovu přihlaste pomocí účtu správce, otevřete konzolu Windows PowerShellu se zvýšenými oprávněními a spuštěním následujících příkazů nainstalujte službu Strážce hostitele a nakonfigurujte její doménu. Heslo, které zde zadáte, bude platit pouze pro heslo režimu opravy adresářových služeb pro službu Active Directory; nezmění přihlašovací heslo účtu správce. Můžete zadat libovolný název domény, který zvolíte pro -HgsDomainName.
$adminPassword = ConvertTo-SecureString -AsPlainText '<password>' -Force Install-HgsServer -HgsDomainName 'bastion.local' -SafeModeAdministratorPassword $adminPassword -RestartPo opětovném restartování počítače se přihlaste pomocí účtu správce (což je teď také správce domény). Otevřete konzolu Windows PowerShellu se zvýšenými oprávněními a nakonfigurujte ověření klíče hostitele pro vaši instanci HGS.
Initialize-HgsAttestation -HgsServiceName 'hgs' -TrustHostKeyNajděte IP adresu počítače HGS spuštěním následujícího příkazu. Uložte tuto IP adresu pro pozdější kroky.
Get-NetIPAddress
Poznámka:
Pokud chcete na počítač HGS odkazovat podle názvu DNS, můžete nastavit předávání z podnikových serverů DNS na nový řadič domény HGS.
Krok 2: Konfigurujte počítač SQL Server jako strážený hostitel
V tomto kroku nakonfigurujete počítač s SQL Serverem jako strážený hostitel zaregistrovaný v HGS pomocí ověření klíče hostitele.
Výstraha
Ověření klíče hostitele se považuje za slabší režim ověření identity. Pokud je to možné, měli byste pro produkční prostředí použít ověření identity TPM. Další informace najdete v tématu Režimy ověření identity.
Přihlaste se k počítači s SQL Serverem jako správce, otevřete konzolu Windows PowerShellu se zvýšenými oprávněními a získejte název počítače přístupem k proměnné názvu počítače.
$env:computernameNainstalujte funkci Strážený hostitel, která také nainstaluje Hyper-V (pokud ještě není nainstalovaná).
Enable-WindowsOptionalFeature -Online -FeatureName HostGuardian -AllPo zobrazení výzvy k dokončení instalace technologie Hyper-V restartujte počítač s SQL Serverem.
Pokud je váš počítač s SQL Serverem virtuální počítač, fyzický počítač, který nepodporuje zabezpečené spouštění rozhraní UEFI nebo fyzický počítač, který není vybaven službou IOMMU, musíte odebrat požadavek VBS na funkce zabezpečení platformy.
Odeberte požadavek na zabezpečené spouštění a ioMMU spuštěním následujícího příkazu na počítači s SQL Serverem v konzole PowerShellu se zvýšenými oprávněními:
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard -Name RequirePlatformSecurityFeatures -Value 0Restartujte počítač se serverem SQL znovu, aby se VBS spustilo online s nižšími požadavky.
Restart-Computer
Znovu se přihlaste k počítači s SQL Serverem jako správce, otevřete konzolu Windows PowerShellu se zvýšenými oprávněními, vygenerujte jedinečný klíč hostitele a vyexportujte výsledný veřejný klíč do souboru.
Set-HgsClientHostKey Get-HgsClientHostKey -Path $HOME\Desktop\hostkey.cerRučně zkopírujte soubor klíče hostitele vygenerovaný v předchozím kroku do počítače HGS. Následující pokyny předpokládají, že název souboru je
hostkey.cera kopírujete ho na plochu počítače HGS.Na počítači HGS otevřete konzolu Windows PowerShellu se zvýšenými oprávněními a zaregistrujte hostitelský klíč počítače s SQL Serverem v HGS:
Add-HgsAttestationHostKey -Name <your SQL Server computer name> -Path $HOME\Desktop\hostkey.cerNa počítači s SQL Serverem spusťte v konzole Windows PowerShellu se zvýšenými oprávněními následující příkaz, který řekne počítači s SQL Serverem, kde se má testovat. Ujistěte se, že v obou umístěních adres zadáte IP adresu nebo název DNS vašeho počítače HGS.
# use http, and not https Set-HgsClientConfiguration -AttestationServerUrl http://<IP address or DNS name>/Attestation -KeyProtectionServerUrl http://<IP address or DNS name>/KeyProtection/
Výsledek výše uvedeného příkazu by měl ukázat, že AttestationStatus = Prošlo.
Pokud se zobrazí HostUnreachable chyba, znamená to, že počítač s SQL Serverem nemůže komunikovat s HGS. Ujistěte se, že počítač HGS můžete otestovat příkazem ping.
Chyba UnauthorizedHost značí, že veřejný klíč nebyl zaregistrovaný na serveru HGS. Pokud chcete chybu vyřešit, opakujte kroky 5 a 6.
Pokud všechny ostatní selže, spusťte Remove-HgsClientHostKey a zopakujte kroky 4 až 7.
Krok 3: Povolení funkce Always Encrypted se zabezpečenými enklávy na SQL Serveru
V tomto kroku povolíte funkci Always Encrypted pomocí enkláv ve vaší instanci SQL Serveru.
Pomocí aplikace SSMS se připojte k instanci SQL Serveru jako správce systému bez povolení funkce Always Encrypted pro připojení k databázi.
Spusťte SSMS.
V dialogovém okně Připojit k serveru zadejte název serveru, vyberte metodu ověřování a zadejte své přihlašovací údaje.
Vyberte Možnosti >> a vyberte kartu Always Encrypted .
Ujistěte se, že políčko Povolit funkci Always Encrypted (šifrování sloupce) není zaškrtnuté.
Vyberte Připojit.
Otevřete nové okno dotazu a spuštěním následujícího příkazu nastavte typ zabezpečené enklávy na zabezpečení na základě virtualizace (VBS).
EXEC sys.sp_configure 'column encryption enclave type', 1; RECONFIGURE;Restartujte instanci SQL Serveru, aby se projevila předchozí změna. Instanci v nástroji SSMS můžete restartovat tak, že na ni kliknete pravým tlačítkem v Průzkumníku objektů a vyberete Restartovat. Po restartování instance se k ní znovu připojte.
Ověřte, že je nyní načtena zabezpečená enkláva spuštěním následujícího dotazu:
SELECT [name], [value], [value_in_use] FROM sys.configurations WHERE [name] = 'column encryption enclave type';Dotaz by měl vrátit následující výsledek:
název value hodnota v užívání Typ enklávy pro šifrování sloupce 1 1
Krok 4: Vytvoření ukázkové databáze
V tomto kroku vytvoříte databázi s některými ukázkovými daty, která později zašifrujete.
Pomocí instance SSMS z předchozího kroku spusťte následující příkaz v okně dotazu a vytvořte novou databázi s názvem ContosoHR.
CREATE DATABASE [ContosoHR];Vytvořte novou tabulku s názvem Zaměstnanci.
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];Do tabulky Employees (Zaměstnanci) přidejte několik záznamů o zaměstnancích .
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);
Krok 5: Zřízení klíčů s podporou enklávy
V tomto kroku vytvoříte hlavní klíč sloupce a šifrovací klíč sloupce, které umožňují výpočty v enklávě.
Pomocí instance SSMS z předchozího kroku rozbalte v Průzkumníku objektů svou databázi a přejděte na Zabezpečení>Klíče Always Encrypted.
Zřízení nového hlavního sloupcového klíče s podporou enklávy:
Klikněte pravým tlačítkem myši na Always Encrypted Keys a vyberte Nový hlavní klíč sloupce....
Vyberte název hlavního klíče sloupce: CMK1.
Ujistěte se, že jste vybrali úložiště certifikátů Windows (aktuální uživatel nebo místní počítač) nebo Azure Key Vault.
Vyberte Povolit enklávové výpočty.
Pokud jste vybrali Azure Key Vault, přihlaste se k Azure a vyberte svůj trezor klíčů. Další informace o tom, jak vytvořit trezor klíčů pro funkci Always Encrypted, najdete v tématu Správa trezorů klíčů z webu Azure Portal.
Pokud už certifikát nebo klíč klíč Azure key value existuje, vyberte ho nebo vyberte tlačítko Generovat certifikát a vytvořte nový.
Vyberte OK.
Vytvořte nový šifrovací klíč sloupce s podporou enklávy:
- Klikněte pravým tlačítkem myši na Vždy šifrované klíče a vyberte 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 6: 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 instanci SQL Serveru pro připojení k databázi s povolenou funkcí Always Encrypted.
Spusťte novou instanci aplikace SSMS.
V dialogovém okně Připojit k serveru zadejte název serveru, vyberte metodu ověřování a zadejte své přihlašovací údaje.
Vyberte Možnosti >> a 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 Hostitelská ochranná služba. (Tento krok platí pro SSMS 19 nebo novější.)
Zadejte adresu URL ověření identity enklávy (například http:// hgs.bastion.local/Attestation).
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 dotazů.
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;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, a aktualizovat tak 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 7: Provádění sofistikovaných dotazů na šifrované sloupce
Teď můžete provádět složité dotazy na šifrované sloupce. 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 na Spuštění dotazů>SQL Server>Pokročilé.
- Ujistěte se, že je zaškrtnuté povolení parametrizace pro funkci Always Encrypted .
- Vyberte OK.
Otevřete nové okno dotazu, vložte ho a spusťte následující dotaz. 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, a všimněte si selhání, ke kterému dochází.
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í