Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2019 (15.x) i nowsze - tylko dla systemu Windows
Azure SQL Database
W tym artykule opisano sposób wykonywania operacji kryptograficznych bezpośrednio na kolumnach przy użyciu funkcji Always Encrypted z bezpiecznymi enklawami przy pomocy instrukcji ALTER TABLE /ALTER COLUMN
. Aby uzyskać podstawowe informacje dotyczące szyfrowania danych lokalnie i ogólnych wymagań wstępnych, zobacz Jak skonfigurować szyfrowanie kolumn lokalnie przy użyciu funkcji Always Encrypted z bezpiecznymi enklawami.
Za pomocą instrukcji ALTER TABLE
lub ALTER COLUMN
można ustawić docelową konfigurację szyfrowania dla kolumny. Po wykonaniu instrukcji bezpieczna enklawa po stronie serwera będzie szyfrować, ponownie szyfrować lub odszyfrowywać dane przechowywane w kolumnie, w zależności od bieżącej i docelowej konfiguracji szyfrowania określonej w definicji kolumny w instrukcji .
- Jeśli kolumna nie jest obecnie zaszyfrowana, zostanie zaszyfrowana, jeśli określisz klauzulę
ENCRYPTED WITH
w definicji kolumny. - Jeśli kolumna jest obecnie zaszyfrowana, zostanie ona odszyfrowana (przekonwertowana na kolumnę w postaci zwykłego tekstu), jeśli nie określisz klauzuli
ENCRYPTED WITH
w definicji kolumny. - Jeśli kolumna jest obecnie zaszyfrowana, zostanie ona ponownie zaszyfrowana, jeśli określisz klauzulę
ENCRYPTED WITH
, a określony typ szyfrowania kolumny lub klucz szyfrowania kolumny różnią się od aktualnie używanego typu szyfrowania lub klucza szyfrowania kolumny.
Notatka
Nie można łączyć operacji kryptograficznych z innymi zmianami w jednej instrukcji ALTER TABLE
/ALTER COLUMN
, z wyjątkiem zmiany kolumny na NULL
lub NOT NULL
lub zmiany sortowania. Na przykład nie można zaszyfrować kolumny AND zmienić typu danych kolumny w jednej instrukcji ALTER TABLE
/ALTER COLUMN
Transact-SQL. Użyj dwóch oddzielnych instrukcji.
Każde zapytanie korzystające z bezpiecznej enklawy po stronie serwera, w tym instrukcję ALTER TABLE
/ALTER COLUMN
, która wyzwala szyfrowanie na miejscu, należy wysyłać za pośrednictwem połączenia z włączonymi Always Encrypted i obliczeniami enklawy.
W pozostałej części tego artykułu opisano sposób wyzwalania szyfrowania w miejscu przy użyciu instrukcji ALTER TABLE
/ALTER COLUMN
z programu SQL Server Management Studio. Alternatywnie, z narzędzia Azure Data Studio lub aplikacji możesz wydać ALTER TABLE
/ALTER COLUMN
.
Notatka
Obecnie polecenie cmdlet Invoke-Sqlcmd w module SqlServer PowerShell i sqlcmdnie obsługują używania ALTER TABLE
/ALTER COLUMN
dla operacji kryptograficznych w miejscu.
Wykonaj szyfrowanie w miejscu za pomocą Transact-SQL w SSMS
Wymagania wstępne
- Wymagania wstępne opisane w Konfigurowanie szyfrowania kolumn w miejscu przy użyciu Always Encrypted z wykorzystaniem bezpiecznych enklaw.
- Pobierz najnowszą wersję ogólnodostępną programu SQL Server Management Studio (SSMS).
Kroki
Otwórz okno zapytania z włączonym mechanizmem "Always Encrypted" oraz obliczeniami enklawy w połączeniu do bazy danych. Aby uzyskać szczegółowe informacje, zobacz Włączanie i wyłączanie funkcji Always Encrypted dla połączenia z bazą danych.
W oknie zapytania wydaj instrukcję
ALTER TABLE
/ALTER COLUMN
, określając docelową konfigurację szyfrowania dla kolumny, którą chcesz zaszyfrować, odszyfrować lub ponownie zaszyfrować. Jeśli szyfrujesz lub ponownie szyfrujesz kolumnę, użyj klauzuliENCRYPTED WITH
. Jeśli kolumna jest kolumną ciągu (na przykładchar
,varchar
,nchar
,nvarchar
), może być również konieczne zmianę sortowania na sortowanie BIN2.Notatka
Jeśli klucz główny kolumny jest przechowywany w usłudze Azure Key Vault, możliwe jest, że zostanie wyświetlony monit o zalogowanie się na platformie Azure.
Wyczyść pamięć podręczną planu dla wszystkich pakietów i procedur składowanych, które uzyskują dostęp do tabeli, w celu odświeżenia informacji o szyfrowaniu parametrów.
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
Notatka
Jeśli nie usuniesz planu dla zapytania, którego dotyczy to zapytanie z pamięci podręcznej, pierwsze wykonanie zapytania po zaszyfrowaniu może zakończyć się niepowodzeniem.
Użyj
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE
lubDBCC FREEPROCCACHE
, aby dokładnie wyczyścić pamięć podręczną planu, ponieważ może to spowodować tymczasowe obniżenie wydajności zapytań. Aby zminimalizować negatywny wpływ czyszczenia pamięci podręcznej, można selektywnie usunąć plany tylko dla zapytań, które podlegają wpływowi.Wywołaj sp_refresh_parameter_encryption, aby zaktualizować metadane parametrów każdego modułu (procedura składowana, funkcja, widok, wyzwalacz), które są przechowywane w sys.parameters i mogły zostać unieważnione wskutek szyfrowania kolumn.
Przykłady
Szyfrowanie kolumny w miejscu
W poniższym przykładzie przyjęto założenie:
-
CEK1
jest kluczem szyfrowania kolumn z możliwością wykorzystania enklawy. - Kolumna
SSN
jest tekstem nieszyfrowanym i obecnie używa domyślnego porządku sortowania bazy danych, takiego jak Latin1, porządku innego niż BIN2 (na przykładLatin1_General_CI_AI_KS_WS
).
Instrukcja szyfruje kolumnę SSN
przy użyciu szyfrowania deterministycznego i klucza szyfrowania kolumny z włączoną obsługą enklawy. Zastępuje również domyślne sortowanie bazy danych odpowiadającym sortowaniem BIN2 (na tej samej stronie kodowej).
Operacja jest wykonywana w trybie online (ONLINE = ON
). Zwróć również uwagę na wywołanie ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE
, które odtwarza plany zapytań i jest pod wpływem zmiany schematu tabeli.
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
Ponownie zaszyfruj kolumnę w miejscu, aby zmienić typ szyfrowania
W poniższym przykładzie przyjęto założenie:
- Kolumna
SSN
jest szyfrowana przy użyciu szyfrowania deterministycznego i klucza szyfrowania kolumn z obsługą enklawyCEK1
. - Obecna kolejność ustawiona na poziomie kolumny to
Latin1_General_BIN2
.
Poniższa instrukcja ponownie szyfruje kolumnę przy użyciu szyfrowania losowego i tego samego klucza (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
Ponownie zaszyfruj kolumnę w miejscu, aby obrócić klucz szyfrowania kolumny
W poniższym przykładzie przyjęto założenie:
- Kolumna
SSN
jest szyfrowana przy użyciu szyfrowania losowego i klucza szyfrowania kolumn obsługującego enklawęCEK1
. -
CEK2
jest kluczem szyfrowania kolumn obsługującym enklawy (różni się odCEK1
). - Obecny porządek sortowania na poziomie kolumny to
Latin1_General_BIN2
.
Poniższa instrukcja ponownie szyfruje kolumnę przy użyciu 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
Odszyfrowywanie kolumny w miejscu
W poniższym przykładzie przyjęto założenie:
- Kolumna
SSN
jest szyfrowana przy użyciu klucza szyfrowania kolumn obsługującego enklawę. - Obecna forma sortowania ustawiona na poziomie kolumny to
Latin1_General_BIN2
.
Poniższa instrukcja odszyfrowuje kolumnę i zachowuje sortowanie bez zmian. Alternatywnie możesz zmienić sortowanie. Na przykład zmień sortowanie na sortowanie inne niż BIN2 w tej samej instrukcji.
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
Następne kroki
- Uruchamianie instrukcji Transact-SQL przy użyciu bezpiecznych enklaw
- Tworzenie i używanie indeksów na kolumnach przy użyciu Always Encrypted z bezpiecznymi enklawami
- Tworzenie aplikacji przy użyciu funkcji Always Encrypted z bezpiecznymi enklawami
Zobacz też
- Rozwiązywanie typowych problemów dla funkcji Always Encrypted z bezpiecznymi enklawami
- Konfigurowanie szyfrowania kolumn w miejscu przy użyciu funkcji Always Encrypted z bezpiecznymi enklawami
- włącz funkcję Always Encrypted z bezpiecznymi enklawami dla istniejących zaszyfrowanych kolumn
- Samouczek : Wprowadzenie do korzystania z funkcji Always Encrypted z bezpiecznymi enklawami