Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
usługi Azure SQL Database
Azure SQL Managed Instance
Zmienia klucz szyfrowania kolumny w bazie danych, dodając lub upuszczając zaszyfrowaną wartość. Klucz szyfrowania kolumny może mieć maksymalnie dwie wartości, co umożliwia rotację odpowiedniego klucza głównego kolumny. Klucz szyfrowania kolumny jest używany podczas szyfrowania kolumn przy użyciu funkcji Always Encrypted lub Always Encrypted z bezpiecznymi enklawami. Przed dodaniem wartości klucza szyfrowania kolumny należy zdefiniować klucz główny kolumny, który został użyty do zaszyfrowania wartości przy użyciu programu SQL Server Management Studio lub instrukcji CREATE MASTER KEY .
Transact-SQL konwencje składni
Składnia
ALTER COLUMN ENCRYPTION KEY key_name
[ ADD | DROP ] VALUE
(
COLUMN_MASTER_KEY = column_master_key_name
[, ALGORITHM = 'algorithm_name' , ENCRYPTED_VALUE = varbinary_literal ]
) [;]
Arguments
key_name
Zmieniany klucz szyfrowania kolumny.
column_master_key_name
Określa nazwę klucza głównego kolumny (CMK) używanego do szyfrowania klucza szyfrowania kolumny (CEK).
algorithm_name
Nazwa algorytmu szyfrowania używanego do szyfrowania wartości. Algorytm dla dostawców systemu musi być RSA_OAEP. Ten argument jest nieprawidłowy podczas porzucania wartości klucza szyfrowania kolumny.
varbinary_literal
Obiekt BLOB CEK zaszyfrowany przy użyciu określonego głównego klucza szyfrowania. Ten argument jest nieprawidłowy podczas porzucania wartości klucza szyfrowania kolumny.
Ostrzeżenie
Nigdy nie przekazuj wartości CEK w postaci zwykłego tekstu w tej instrukcji. Takie działanie będzie stanowić korzyść tej funkcji.
Uwagi
Zazwyczaj klucz szyfrowania kolumny jest tworzony przy użyciu tylko jednej zaszyfrowanej wartości. Gdy klucz główny kolumny musi zostać obrócony (bieżący klucz główny kolumny musi zostać zastąpiony nowym kluczem głównym kolumny), można dodać nową wartość klucza szyfrowania kolumny zaszyfrowaną przy użyciu nowego klucza głównego kolumny. Ten przepływ pracy umożliwia zapewnienie aplikacjom klienckim dostępu do danych zaszyfrowanych przy użyciu klucza szyfrowania kolumny, podczas gdy nowy klucz główny kolumny jest udostępniany aplikacjom klienckim. Sterownik z włączoną funkcją Always Encrypted w aplikacji klienckiej, który nie ma dostępu do nowego klucza głównego, będzie mógł używać wartości klucza szyfrowania kolumny zaszyfrowanej przy użyciu starego klucza głównego kolumny w celu uzyskania dostępu do poufnych danych. Algorytmy szyfrowania obsługiwane przez funkcję Always Encrypted wymagają, aby wartość zwykłego tekstu miała 256 bitów.
Zaleca się używanie narzędzi, takich jak PROGRAM SQL Server Management Studio (SSMS) lub program PowerShell w celu rotacji kluczy głównych kolumn. Zobacz Obróć klucze Always Encrypted przy użyciu programu SQL Server Management Studio i Obróć klucze Always Encrypted przy użyciu programu PowerShell.
Zaszyfrowana wartość powinna być generowana przy użyciu dostawcy magazynu kluczy, który hermetyzuje magazyn kluczy przechowujący klucz główny kolumny.
Klucze główne kolumn są obracane z następujących powodów:
- Przepisy dotyczące zgodności mogą wymagać okresowego obracania kluczy.
- Bezpieczeństwo klucza głównego kolumny wymaga rotacji ze względów bezpieczeństwa.
- Aby włączyć lub wyłączyć udostępnianie kluczy szyfrowania kolumn z bezpieczną enklawą po stronie serwera. Jeśli na przykład bieżący klucz główny kolumny nie obsługuje obliczeń enklawy (nie zdefiniowano z właściwością ENCLAVE_COMPUTATIONS) i chcesz włączyć obliczenia enklaw na kolumnach chronionych za pomocą klucza szyfrowania kolumny szyfrowane przez klucz główny kolumny, musisz zastąpić klucz główny kolumny nową właściwością ENCLAVE_COMPUTATIONS. Omówienie zarządzania kluczami dla kluczy Always Encrypted i Zarządzanie kluczami dla funkcji Always Encrypted z bezpiecznymi enklawami.
Użyj sys.columns (Transact-SQL), sys.column_encryption_keys (Transact-SQL) i sys.column_encryption_key_values (Transact-SQL), aby wyświetlić informacje o kluczach szyfrowania kolumn.
Permissions
Wymaga uprawnienia ALTER ANY COLUMN ENCRYPTION KEY w bazie danych.
Przykłady
A. Dodawanie wartości klucza szyfrowania kolumny
Poniższy przykład zmienia klucz szyfrowania kolumny o nazwie MyCEK.
ALTER COLUMN ENCRYPTION KEY MyCEK
ADD VALUE
(
COLUMN_MASTER_KEY = MyCMK2,
ALGORITHM = 'RSA_OAEP',
ENCRYPTED_VALUE = 0x016E000001630075007200720065006E00740075007300650072002F006D0079002F0064006500650063006200660034006100340031003000380034006200350033003200360066003200630062006200350030003600380065003900620061003000320030003600610037003800310066001DDA6134C3B73A90D349C8905782DD819B428162CF5B051639BA46EC69A7C8C8F81591A92C395711493B25DCBCCC57836E5B9F17A0713E840721D098F3F8E023ABCDFE2F6D8CC4339FC8F88630ED9EBADA5CA8EEAFA84164C1095B12AE161EABC1DF778C07F07D413AF1ED900F578FC00894BEE705EAC60F4A5090BBE09885D2EFE1C915F7B4C581D9CE3FDAB78ACF4829F85752E9FC985DEB8773889EE4A1945BD554724803A6F5DC0A2CD5EFE001ABED8D61E8449E4FAA9E4DD392DA8D292ECC6EB149E843E395CDE0F98D04940A28C4B05F747149B34A0BAEC04FFF3E304C84AF1FF81225E615B5F94E334378A0A888EF88F4E79F66CB377E3C21964AACB5049C08435FE84EEEF39D20A665C17E04898914A85B3DE23D56575EBC682D154F4F15C37723E04974DB370180A9A579BC84F6BC9B5E7C223E5CBEE721E57EE07EFDCC0A3257BBEBF9ADFFB00DBF7EF682EC1C4C47451438F90B4CF8DA709940F72CFDC91C6EB4E37B4ED7E2385B1FF71B28A1D2669FBEB18EA89F9D391D2FDDEA0ED362E6A591AC64EF4AE31CA8766C259ECB77D01A7F5C36B8418F91C1BEADDD4491C80F0016B66421B4B788C55127135DA2FA625FB7FD195FB40D90A6C67328602ECAF3EC4F5894BFD84A99EB4753BE0D22E0D4DE6A0ADFEDC80EB1B556749B4A8AD00E73B329C95827AB91C0256347E85E3C5FD6726D0E1FE82C925D3DF4A9
);
GO
B. Usuwanie wartości klucza szyfrowania kolumny
Poniższy przykład zmienia klucz szyfrowania kolumny o nazwie MyCEK , upuszczając wartość.
ALTER COLUMN ENCRYPTION KEY MyCEK
DROP VALUE
(
COLUMN_MASTER_KEY = MyCMK
);
GO
Zobacz też
CREATE COLUMN ENCRYPTION KEY (Transact-SQL)
DROP COLUMN ENCRYPTION KEY (Transact-SQL)
CREATE COLUMN MASTER KEY (Transact-SQL)
Always Encrypted (aparat bazy danych)
sys.column_encryption_keys (Transact-SQL)
sys.column_encryption_key_values (Transact-SQL)
sys.columns (Transact-SQL)
Zawsze szyfrowane
Omówienie zarządzania kluczami dla funkcji Always Encrypted
Zarządzanie kluczami dla funkcji Always Encrypted przy użyciu bezpiecznych enklaw