ALTER COLUMN ENCRYPTION KEY (Transact-SQL)

Berlaku untuk: SQL Server 2016 (13.x) dan database Azure SQL yang lebih baru Azure SQL Managed Instance

Mengubah kunci enkripsi kolom dalam database, menambahkan atau menghilangkan nilai terenkripsi. Kunci enkripsi kolom dapat memiliki hingga dua nilai, yang memungkinkan rotasi kunci master kolom yang sesuai. Kunci enkripsi kolom digunakan saat mengenkripsi kolom menggunakan Always Encrypted atau Always Encrypted dengan enklave aman. Sebelum menambahkan nilai kunci enkripsi kolom, Anda harus menentukan kunci master kolom yang digunakan untuk mengenkripsi nilai dengan menggunakan SQL Server Management Studio atau pernyataan CREATE MASTER KEY.

Konvensi sintaks Transact-SQL

Sintaks

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

Argumen

key_name
Kunci enkripsi kolom yang Anda ubah.

column_master_key_name
Menentukan nama kunci master kolom (CMK) yang digunakan untuk mengenkripsi kunci enkripsi kolom (CEK).

algorithm_name
Nama algoritma enkripsi yang digunakan untuk mengenkripsi nilai. Algoritma untuk penyedia sistem harus RSA_OAEP. Argumen ini tidak valid saat menjatuhkan nilai kunci enkripsi kolom.

varbinary_literal
BLOB CEK dienkripsi dengan kunci enkripsi master yang ditentukan. Argumen ini tidak valid saat menjatuhkan nilai kunci enkripsi kolom.

Peringatan

Jangan pernah meneruskan nilai CEK teks biasa dalam pernyataan ini. Melakukannya akan terdiri dari manfaat fitur ini.

Keterangan

Biasanya, kunci enkripsi kolom dibuat hanya dengan satu nilai terenkripsi. Ketika kunci master kolom perlu diputar (kunci master kolom saat ini perlu diganti dengan kunci master kolom baru), Anda dapat menambahkan nilai baru kunci enkripsi kolom, dienkripsi dengan kunci master kolom baru. Alur kerja ini memungkinkan Anda memastikan aplikasi klien dapat mengakses data yang dienkripsi dengan kunci enkripsi kolom, sementara kunci master kolom baru tersedia untuk aplikasi klien. Driver Always Encrypted diaktifkan dalam aplikasi klien yang tidak memiliki akses ke kunci master baru, akan dapat menggunakan nilai kunci enkripsi kolom yang dienkripsi dengan kunci master kolom lama untuk mengakses data sensitif. Algoritma enkripsi, Always Encrypted mendukung, mengharuskan nilai teks biasa memiliki 256 bit.

Disarankan agar Anda menggunakan alat, seperti SQL Server Management Studio (SSMS) atau PowerShell untuk memutar kunci master kolom. Lihat Memutar kunci Always Encrypted menggunakan SQL Server Management Studio dan Memutar kunci Always Encrypted menggunakan PowerShell.

Nilai terenkripsi harus dihasilkan menggunakan penyedia penyimpanan kunci yang merangkum penyimpanan kunci yang memegang kunci master kolom.

Kunci master kolom diputar karena alasan berikut:

  • Peraturan kepatuhan mungkin memerlukan kunci diputar secara berkala.
  • Kunci master kolom disusupi, dan perlu diputar karena alasan keamanan.
  • Untuk mengaktifkan atau menonaktifkan berbagi kunci enkripsi kolom dengan enklave aman di sisi server. Misalnya, jika kunci master kolom Anda saat ini tidak mendukung komputasi enklave (belum ditentukan dengan properti ENCLAVE_COMPUTATIONS) dan Anda ingin mengaktifkan komputasi enklave pada kolom yang dilindungi dengan kunci enkripsi kolom yang dienkripsi kunci master kolom Anda, Anda perlu mengganti kunci master kolom dengan kunci baru dengan properti ENCLAVE_COMPUTATIONS. Gambaran umum manajemen kunci untuk Always Encrypted dan Mengelola kunci untuk Always Encrypted dengan enklave aman.

Gunakan sys.columns (Transact-SQL), sys.column_encryption_keys (Transact-SQL) dan sys.column_encryption_key_values (Transact-SQL) untuk melihat informasi tentang kunci enkripsi kolom.

Izin

Memerlukan izin UBAH KUNCI ENKRIPSI KOLOM APA PUN pada database.

Contoh

A. Menambahkan nilai kunci enkripsi kolom

Contoh berikut mengubah kunci enkripsi kolom yang disebut MyCEK.

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

B. Menghilangkan nilai kunci enkripsi kolom

Contoh berikut mengubah kunci enkripsi kolom yang disebut MyCEK dengan menghilangkan nilai.

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

Lihat juga

BUAT KUNCI ENKRIPSI KOLOM (Transact-SQL)
HILANGKAN KUNCI ENKRIPSI KOLOM (Transact-SQL)
BUAT KUNCI MASTER KOLOM (Transact-SQL)
Always Encrypted (Mesin Database)
sys.column_encryption_keys (Transact-SQL)
sys.column_encryption_key_values (Transact-SQL)
sys.columns (Transact-SQL)
Always Encrypted
Ringkasan Manajemen Kunci untuk Always Encrypted
Mengelola kunci untuk Always Encrypted dengan enklave aman