Dela via


ÄNDRA KOLUMNKRYPTERINGSNYCKEL (Transact-SQL)

Gäller för: SQL Server 2016 (13.x) och senare versioner Azure SQL DatabaseAzure SQL Managed Instance

Ändrar en kolumnkrypteringsnyckel i en databas, lägger till eller släpper ett krypterat värde. En kolumnkrypteringsnyckel kan ha upp till två värden, vilket möjliggör rotation av motsvarande kolumnhuvudnyckel. En kolumnkrypteringsnyckel används vid kryptering av kolumner med Always Encrypted eller Always Encrypted med säkra enklaver. Innan du lägger till ett kolumnkrypteringsnyckelvärde måste du definiera den kolumnhuvudnyckel som användes för att kryptera värdet med hjälp av SQL Server Management Studio eller INSTRUKTIONEN SKAPA HUVUDNYCKEL .

Transact-SQL syntaxkonventioner

Syntax

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
Den kolumnkrypteringsnyckel som du ändrar.

column_master_key_name
Anger namnet på den kolumnhuvudnyckel (CMK) som används för att kryptera kolumnkrypteringsnyckeln (CEK).

algorithm_name
Namnet på krypteringsalgoritmen som används för att kryptera värdet. Algoritmen för systemprovidrar måste vara RSA_OAEP. Det här argumentet är inte giltigt när du släpper ett kolumnkrypteringsnyckelvärde.

varbinary_literal
CEK BLOB krypterad med den angivna huvudkrypteringsnyckeln. Det här argumentet är inte giltigt när du släpper ett kolumnkrypteringsnyckelvärde.

Varning

Skicka aldrig CEK-värden i klartext i den här instruktionen. Om du gör det kan du dra nytta av den här funktionen.

Anmärkningar

Vanligtvis skapas en kolumnkrypteringsnyckel med bara ett krypterat värde. När en kolumnhuvudnyckel måste roteras (den aktuella kolumnhuvudnyckeln måste ersättas med den nya kolumnhuvudnyckeln) kan du lägga till ett nytt värde för kolumnkrypteringsnyckeln, krypterad med den nya kolumnhuvudnyckeln. Med det här arbetsflödet kan du se till att klientprogram kan komma åt data som krypterats med kolumnkrypteringsnyckeln, medan den nya kolumnhuvudnyckeln görs tillgänglig för klientprogram. En Always Encrypted-aktiverad drivrutin i ett klientprogram som inte har åtkomst till den nya huvudnyckeln kan använda kolumnkrypteringsnyckelvärdet krypterat med den gamla kolumnhuvudnyckeln för att få åtkomst till känsliga data. Krypteringsalgoritmerna, som always encrypted stöder, kräver att klartextvärdet har 256 bitar.

Vi rekommenderar att du använder verktyg, till exempel SQL Server Management Studio (SSMS) eller PowerShell för att rotera kolumnhuvudnycklar. Se Rotera Always Encrypted-nycklar med SQL Server Management Studio och Rotera always encrypted-nycklar med PowerShell.

Ett krypterat värde ska genereras med hjälp av en nyckellagringsprovider som kapslar in nyckelarkivet med kolumnhuvudnyckeln.

Kolumnhuvudnycklar roteras av följande skäl:

  • Efterlevnadsregler kan kräva att nycklar roteras regelbundet.
  • En kolumnhuvudnyckel komprometteras och måste roteras av säkerhetsskäl.
  • Aktivera eller inaktivera krypteringsnycklar för delningskolumner med en säker enklav på serversidan. Om din aktuella kolumnhuvudnyckel till exempel inte stöder enklaverberäkningar (har inte definierats med egenskapen ENCLAVE_COMPUTATIONS) och du vill aktivera enklaverberäkningar på kolumner som skyddas med en kolumnkrypteringsnyckel som kolumnhuvudnyckeln krypterar, måste du ersätta kolumnhuvudnyckeln med den nya nyckeln med egenskapen ENCLAVE_COMPUTATIONS. Översikt över nyckelhantering för Always Encrypted och Hantera nycklar för Always Encrypted med säkra enklaver.

Använd sys.columns (Transact-SQL), sys.column_encryption_keys (Transact-SQL) och sys.column_encryption_key_values (Transact-SQL) för att visa information om kolumnkrypteringsnycklar.

Permissions

Kräver ändra valfri kolumnkrypteringsnyckelbehörighet för databasen.

Examples

A. Lägga till ett kolumnkrypteringsnyckelvärde

I följande exempel ändras en kolumnkrypteringsnyckel med namnet MyCEK.

ALTER COLUMN ENCRYPTION KEY MyCEK  
ADD VALUE  
(  
    COLUMN_MASTER_KEY = MyCMK2,   
    ALGORITHM = 'RSA_OAEP',   
    ENCRYPTED_VALUE = 0x016E000001630075007200720065006E00740075007300650072002F006D0079002F0064006500650063006200660034006100340031003000380034006200350033003200360066003200630062006200350030003600380065003900620061003000320030003600610037003800310066001DDA6134C3B73A90D349C8905782DD819B428162CF5B051639BA46EC69A7C8C8F81591A92C395711493B25DCBCCC57836E5B9F17A0713E840721D098F3F8E023ABCDFE2F6D8CC4339FC8F88630ED9EBADA5CA8EEAFA84164C1095B12AE161EABC1DF778C07F07D413AF1ED900F578FC00894BEE705EAC60F4A5090BBE09885D2EFE1C915F7B4C581D9CE3FDAB78ACF4829F85752E9FC985DEB8773889EE4A1945BD554724803A6F5DC0A2CD5EFE001ABED8D61E8449E4FAA9E4DD392DA8D292ECC6EB149E843E395CDE0F98D04940A28C4B05F747149B34A0BAEC04FFF3E304C84AF1FF81225E615B5F94E334378A0A888EF88F4E79F66CB377E3C21964AACB5049C08435FE84EEEF39D20A665C17E04898914A85B3DE23D56575EBC682D154F4F15C37723E04974DB370180A9A579BC84F6BC9B5E7C223E5CBEE721E57EE07EFDCC0A3257BBEBF9ADFFB00DBF7EF682EC1C4C47451438F90B4CF8DA709940F72CFDC91C6EB4E37B4ED7E2385B1FF71B28A1D2669FBEB18EA89F9D391D2FDDEA0ED362E6A591AC64EF4AE31CA8766C259ECB77D01A7F5C36B8418F91C1BEADDD4491C80F0016B66421B4B788C55127135DA2FA625FB7FD195FB40D90A6C67328602ECAF3EC4F5894BFD84A99EB4753BE0D22E0D4DE6A0ADFEDC80EB1B556749B4A8AD00E73B329C95827AB91C0256347E85E3C5FD6726D0E1FE82C925D3DF4A9  
);  
GO  
  

B. Ta bort ett kolumnkrypteringsnyckelvärde

I följande exempel ändras en kolumnkrypteringsnyckel som anropas MyCEK genom att ett värde släpps.

ALTER COLUMN ENCRYPTION KEY MyCEK  
DROP VALUE  
(  
    COLUMN_MASTER_KEY = MyCMK  
);  
GO  

Se även

SKAPA KOLUMNKRYPTERINGSNYCKEL (Transact-SQL)
SLÄPP KOLUMNKRYPTERINGSNYCKEL (Transact-SQL)
SKAPA KOLUMNHUVUDNYCKEL (Transact-SQL)
Always Encrypted (databasmotor)
sys.column_encryption_keys (Transact-SQL)
sys.column_encryption_key_values (Transact-SQL)
sys.columns (Transact-SQL)
Alltid krypterad
Översikt över nyckelhantering för Always Encrypted
Hantera nycklar för Always Encrypted med säkra enklaver