ALTER COLUMN ENCRYPTION KEY (Transact-SQL)

Si applica a: SQL Server 2016 (13.x) e versioni successive Azure SQL DatabaseIstanza gestita di SQL di Azure

Modifica una chiave di crittografia della colonna in un database, aggiungendo o eliminando un valore crittografato. A una chiave di crittografia della colonna possono essere associati fino a due valori, in modo da consentire la rotazione della chiave master della colonna corrispondente. Questo tipo di chiave consente di crittografare le colonne usando Always Encrypted o Always Encrypted con enclavi sicuri. Prima di aggiungere un valore per la chiave di crittografia della colonna, è necessario definire la chiave master della colonna usata per crittografare il valore tramite SQL Server Management Studio o l'istruzione CREATE MASTER KEY.

Convenzioni di sintassi Transact-SQL

Sintassi

ALTER COLUMN ENCRYPTION KEY key_name   
    [ ADD | DROP ] VALUE   
    (  
        COLUMN_MASTER_KEY = column_master_key_name   
        [, ALGORITHM = 'algorithm_name' , ENCRYPTED_VALUE =  varbinary_literal ]   
    ) [;]  

Argomenti

key_name
Chiave di crittografia della colonna che si sta modificando.

column_master_key_name
Specifica il nome della chiave master della colonna usata per crittografare la chiave di crittografia della colonna.

algorithm_name
Nome dell'algoritmo di crittografia usato per crittografare il valore. L'algoritmo per i provider di sistema deve essere RSA_OAEP. Questo argomento non è valido quando si elimina un valore della chiave di crittografia della colonna.

varbinary_literal
BLOB della chiave di crittografia della colonna crittografato con la chiave di crittografia master specificata. Questo argomento non è valido quando si elimina un valore della chiave di crittografia della colonna.

Avviso

Non passare mai i valori della chiave di crittografia della colonna in testo non crittografato in questa istruzione, altrimenti sarà compromesso il vantaggio di questa funzionalità.

Commenti

In genere, una chiave di crittografia della colonna viene creata con un solo valore crittografato. Quando una chiave master della colonna deve essere ruotata, vale a dire la chiave master della colonna corrente deve essere sostituita dalla nuova chiave master della colonna, è possibile aggiungere un nuovo valore della chiave di crittografia della colonna, crittografato con la nuova chiave master della colonna. Questo flusso di lavoro consente di garantire alle applicazioni client l'accesso ai dati crittografati con la chiave di crittografia della colonna, mentre la nuova chiave master della colonna sarà resa disponibile alle applicazioni client. Un driver abilitato per Always Encrypted in un'applicazione client che non ha accesso alla nuova chiave master potrà usare il valore della chiave di crittografia della colonna crittografato con la vecchia chiave master della colonna per accedere ai dati sensibili. Per gli algoritmi di crittografia supportati da Always Encrypted è necessario che il valore del testo non crittografato sia di 256 bit.

Per ruotare le chiavi master della colonna, si consiglia di usare strumenti quali SQL Server Management Studio (SSMS) o PowerShell. Vedere Ruotare le chiavi Always Encrypted con SQL Server Management Studio e Ruotare le chiavi Always Encrypted con PowerShell.

È necessario generare un valore crittografato tramite un provider dell'archivio chiavi in cui è incapsulato l'archivio chiavi contenente la chiave master della colonna.

Le chiavi master della colonna vengono ruotate per i motivi seguenti:

  • La conformità alle normative può richiedere che le chiavi vengano ruotate periodicamente.
  • Una chiave master della colonna è compromessa e deve essere ruotata per motivi di sicurezza.
  • Per abilitare o disabilitare la condivisione delle chiavi di crittografia di colonna con un'enclave protetto sul lato server. Ad esempio, se la chiave master della colonna corrente non supporta i calcoli dell'enclave (ovvero non è stata definita con la proprietà ENCLAVE_COMPUTATIONS) e si vuole abilitare i calcoli dell'enclave nelle colonne protette con una chiave di crittografia della colonna crittografata dalla chiave master della colonna, è necessario sostituire la chiave master della colonna con la nuova chiave con la proprietà ENCLAVE_COMPUTATIONS. Panoramica della gestione delle chiavi per Always Encrypted e Gestire le chiavi per Always Encrypted con enclave sicuri.

Usare sys.columns (Transact-SQL), sys.column_encryption_keys (Transact-SQL) e sys.column_encryption_key_values (Transact-SQL) per visualizzare le informazioni sulle chiavi di crittografia della colonna.

Autorizzazioni

È necessaria l'autorizzazione ALTER ANY COLUMN ENCRYPTION KEY per il database.

Esempi

R. Aggiunta di un valore della chiave di crittografia della colonna

Nell'esempio seguente viene modificata una chiave di crittografia della colonna denominata MyCEK.

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

B. Eliminazione di un valore della chiave di crittografia della colonna

Nell'esempio seguente viene modificata una chiave di crittografia della colonna denominata MyCEK eliminando un valore.

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

Vedere anche

CREATE COLUMN ENCRYPTION KEY (Transact-SQL)
DROP COLUMN ENCRYPTION KEY (Transact-SQL)
CREATE COLUMN MASTER KEY (Transact-SQL)
Always Encrypted (Motore di database)
sys.column_encryption_keys (Transact-SQL)
sys.column_encryption_key_values (Transact-SQL)
sys.columns (Transact-SQL)
Always Encrypted
Panoramica della gestione delle chiavi per Always Encrypted
Gestire le chiavi per Always Encrypted con enclave sicuri