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ší – pouze
Windows Azure SQL Database
Tento článek popisuje, jak provádět kryptografické operace přímo na sloupcích pomocí technologie Always Encrypted se zabezpečenými enklávami pomocí příkazu ALTER TABLE/ALTER COLUMN. Základní informace o místním šifrování a obecných požadavcích najdete v tématu Konfigurace místního šifrování pomocí funkce Always Encrypted se zabezpečenými enklávy.
ALTER TABLE Pomocí příkazu nebo příkazu ALTER COLUMN můžete nastavit cílovou konfiguraci šifrování pro sloupec. Když příkaz spustíte, zabezpečená enkláva na straně serveru zašifruje, znovu zašifruje nebo dešifruje data uložená ve sloupci v závislosti na aktuální a cílové konfiguraci šifrování zadané v definici sloupce v příkazu.
- Pokud sloupec není aktuálně šifrovaný, bude zašifrován, pokud zadáte
ENCRYPTED WITHklauzuli v definici sloupce. - Pokud je sloupec aktuálně zašifrovaný, bude dešifrován (převeden na sloupec prostého textu), pokud klauzuli nezadáte
ENCRYPTED WITHv definici sloupce. - Pokud je sloupec aktuálně šifrovaný, bude znovu zašifrován, pokud zadáte
ENCRYPTED WITHklauzuli a zadaný typ šifrování sloupce nebo šifrovací klíč sloupce se liší od aktuálně používaného typu šifrování nebo šifrovacího klíče sloupce.
Poznámka:
Kryptografické operace nelze kombinovat s jinými změnami v jednom ALTER TABLE/ALTER COLUMN příkazu, s výjimkou změny sloupce na NULL nebo NOT NULLnebo změny kolace. Nemůžete například zašifrovat sloupec A změnit datový typ sloupce v jednom ALTER TABLE/ALTER COLUMN příkazu Transact-SQL. Použijte dva samostatné příkazy.
Jako každý dotaz, který používá zabezpečenou enklávu na straně serveru, musí být ALTER TABLE/ALTER COLUMN příkaz, který spouští šifrování na místě, odeslán přes připojení s povolenou funkcí Always Encrypted a výpočty enklávy.
Zbývající část tohoto článku popisuje, jak aktivovat místní šifrování pomocí ALTER TABLE/ALTER COLUMN příkazu z aplikace SQL Server Management Studio. Alternativně můžete zadat ALTER TABLE/ALTER COLUMN z Azure Data Studio nebo vašeho aplikace.
Poznámka:
V současné době rutina Invoke-Sqlcmd v modulu SqlServer PowerShell a sqlcmd nepodporuje použití ALTER TABLE/ALTER COLUMN pro místní kryptografické operace.
Místní šifrování pomocí Transact-SQL v SSMS
Pre-requisites
- Požadavky popsané v tématu Konfigurace šifrování sloupců na místě pomocí funkce Always Encrypted se zabezpečenými enklávy
- Nainstalujte nejnovější verzi aplikace SQL Server Management Studio (SSMS).
Postup
Otevřete okno dotazu s povoleným Always Encrypted a výpočty v rámci enklávy v rámci připojení k databázi. Podrobnosti najdete v tématu Povolení a zakázání funkce Always Encrypted pro připojení k databázi.
V okně dotazu zadejte
ALTER TABLE/ALTER COLUMNkonfiguraci cílového šifrování sloupce, který chcete zašifrovat, dešifrovat nebo znovu zašifrovat. Pokud sloupec šifrujete nebo znovu šifrujete, použijte klauzuliENCRYPTED WITH. Pokud je váš sloupec řetězcovým sloupcem (napříkladchar,varchar,nchar,nvarchar), může být také nutné změnit jeho kolaci na BIN2.Poznámka:
Pokud je hlavní klíč sloupce uložený ve službě Azure Key Vault, může se zobrazit výzva k přihlášení k Azure.
Vymažte mezipaměť plánu pro všechny dávky a uložené procedury, které přistupují k tabulce, a aktualizujte informace o šifrování parametrů.
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;Poznámka:
Pokud plán ovlivněného dotazu z mezipaměti neodeberete, může první spuštění dotazu po šifrování selhat.
K vymazání mezipaměti plánu používejte
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHEneboDBCC FREEPROCCACHEpečlivě, protože to může vést k dočasnému snížení výkonu dotazů. Pokud chcete minimalizovat negativní dopad vymazání mezipaměti, můžete vybrat a odstranit plány pouze pro dotčené dotazy.Voláním sp_refresh_parameter_encryption aktualizujte metadata pro parametry každého modulu (uložená procedura, funkce, zobrazení, trigger), které jsou trvalé v sys.parameters a mohly být zneplatněné šifrováním sloupců.
Examples
Šifrování sloupce na místě
Následující příklad předpokládá:
-
CEK1je šifrovací klíč sloupce s podporou enklávy. - Sloupec
SSNje prostý text a aktuálně používá výchozí kolaci databáze, například Latin1, ne BIN2 kolaci (napříkladLatin1_General_CI_AI_KS_WS).
Příkaz šifruje SSN sloupec pomocí deterministického šifrování a šifrovacího klíče sloupce s povolením enklávy na místě. Přepíše také výchozí kolaci databáze odpovídající (na stejné kódové stránce) kolací BIN2.
Operace se provádí online (ONLINE = ON). Všimněte si také volání ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE, které znovu vytváří plány dotazů, které jsou ovlivněny změnou schématu tabulky.
ALTER TABLE [dbo].[Employees]
ALTER COLUMN [SSN] [char](11) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
WITH
(ONLINE = ON);
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
Opětovným šifrováním místního sloupce za účelem změny typu šifrování
Následující příklad předpokládá:
- Sloupec
SSNje šifrován pomocí deterministického šifrování a šifrovacího klíče sloupce s podporou enklávy,CEK1. - Aktuální řazení, které je nastaveno na úrovni sloupce, je
Latin1_General_BIN2.
Následující příkaz znovu zašifruje sloupec pomocí randomizovaného šifrování a stejného klíče (CEK1).
ALTER TABLE [dbo].[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;
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
Opětovným šifrováním sloupce na místě můžete otočit šifrovací klíč sloupce.
Následující příklad předpokládá:
- Sloupec
SSNje šifrovaný pomocí randomizovaného šifrování a šifrovacího klíče sloupce s podporou enklávy.CEK1 -
CEK2je šifrovací klíč sloupce s podporou enklávy (liší se odCEK1). - Aktuální kolace nastavená na úrovni sloupce je
Latin1_General_BIN2.
Následující příkaz znovu zašifruje sloupec pomocí CEK2.
ALTER TABLE [dbo].[Employees]
ALTER COLUMN [SSN] [char](11) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK2]
, ENCRYPTION_TYPE = Randomized
, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL;
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
Dešifruj sloupec na místě
Následující příklad předpokládá:
- Sloupec
SSNje šifrovaný pomocí klíče pro šifrování sloupce, který podporuje enklávy. - Aktuální kolace nastavená na úrovni sloupce je
Latin1_General_BIN2.
Následující příkaz dešifruje sloupec a zachová kolaci beze změny. Případně můžete změnit kolaci. Například ve stejném příkazu změňte kolaci na jinou než BIN2.
ALTER TABLE [dbo].[Employees]
ALTER COLUMN [SSN] [char](11) COLLATE Latin1_General_BIN2
WITH (ONLINE = ON);
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
Další kroky
- Spouštění příkazů Transact-SQL pomocí zabezpečených enkláv
- Vytváření a používání indexů u sloupců pomocí funkce Always Encrypted se zabezpečenými enklávy
- Vývoj aplikací s využitím funkce Always Encrypted se zabezpečenými enklávy
Viz také
- Vyřešte běžné problémy s funkcí Always Encrypted a zabezpečenými enklávami
- Konfigurace místního šifrování sloupců pomocí funkce Always Encrypted se zabezpečenými enklávy
- Povolení funkce Always Encrypted se zabezpečenými enklávy pro existující šifrované sloupce
- Kurz: Začínáme používat funkci Always Encrypted se zabezpečenými enklávy