Siapkan SQL Server TDE Extensible Key Management dengan menggunakan Azure Key Vault

Berlaku untuk:SQL Server

Dalam artikel ini, Anda menginstal dan mengonfigurasi Koneksi or SQL Server untuk Azure Key Vault.

Catatan

ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).

Extensible Key Management menggunakan Azure Key Vault (AKV) tersedia untuk SQL Server di lingkungan Linux, dimulai dengan Pembaruan Kumulatif SQL Server 2022 (16.x) 12. Ikuti instruksi yang sama, tetapi lewati langkah 3 dan 4.

Prasyarat

Sebelum Anda mulai menggunakan Azure Key Vault dengan instans SQL Server, pastikan Anda telah memenuhi prasyarat berikut:

Langkah 1: Menyiapkan perwakilan layanan Microsoft Entra

Untuk memberikan izin akses instans SQL Server ke brankas kunci Azure, Anda memerlukan akun perwakilan layanan di ID Microsoft Entra.

  1. Masuk ke portal Azure, dan lakukan salah satu hal berikut ini:

    • Pilih tombol ID Microsoft Entra.

      Cuplikan layar panel layanan Azure.

    • Pilih Layanan lainnya lalu, di panel Semua layanan , ketik ID Microsoft Entra.

  2. Daftarkan aplikasi dengan ID Microsoft Entra dengan melakukan hal berikut. Untuk instruksi langkah demi langkah terperinci, lihat bagian Dapatkan identitas untuk aplikasi dari posting blog Azure Key Vault, Azure Key Vault - Langkah demi Langkah.

    1. Pada bagian Kelola sumber daya ID Microsoft Entra Anda, pilih Pendaftaran aplikasi.

      Cuplikan layar halaman Gambaran Umum ID Microsoft Entra di portal Azure.

    2. Pada halaman Pendaftaran aplikasi , pilih Pendaftaran baru.

      Cuplikan layar panel Pendaftaran aplikasi di portal Azure.

    3. Pada panel Daftarkan aplikasi, masukkan nama yang menghadap pengguna untuk aplikasi, lalu pilih Daftar.

      Cuplikan layar panel Daftarkan aplikasi.

    4. Di panel kiri, pilih Sertifikat & rahasia > Rahasia klien >Baru.

      Cuplikan layar panel Sertifikat & rahasia untuk Aplikasi di portal Azure.

    5. Di bawah Tambahkan rahasia klien, masukkan deskripsi dan kedaluwarsa yang sesuai, lalu pilih Tambahkan. Anda tidak dapat memilih periode kedaluwarsa yang lebih besar dari 24 bulan. Untuk informasi selengkapnya, lihat Menambahkan rahasia klien.

      Cuplikan layar bagian Tambahkan rahasia klien untuk Aplikasi di portal Azure.

    6. Pada panel Sertifikat & rahasia, di bawah Nilai, pilih tombol Salin di samping nilai rahasia klien yang akan digunakan untuk membuat kunci asimetris di SQL Server.

      Cuplikan layar nilai rahasia dalam portal Azure.

    7. Di panel kiri, pilih Gambaran Umum lalu, dalam kotak ID Aplikasi (klien), salin nilai yang akan digunakan untuk membuat kunci asimetris di SQL Server.

      Cuplikan layar nilai ID Aplikasi (klien) pada panel Gambaran Umum.

Langkah 2: Membuat brankas kunci

Pilih metode yang ingin Anda gunakan untuk membuat brankas kunci.

Membuat brankas kunci dengan menggunakan portal Microsoft Azure

Anda dapat menggunakan portal Azure untuk membuat brankas kunci lalu menambahkan perwakilan Microsoft Entra ke dalamnya.

  1. Buat grup sumber daya.

    Semua sumber daya Azure yang Anda buat melalui portal Azure harus terkandung dalam grup sumber daya, yang Anda buat untuk menampung brankas kunci Anda. Nama sumber daya dalam contoh ini adalah DocsSampleRG. Pilih grup sumber daya dan nama brankas kunci Anda sendiri, karena semua nama brankas kunci harus unik secara global.

    Pada panel Buat grup sumber daya, di bawah Detail proyek, masukkan nilai, lalu pilih Tinjau + buat.

    Cuplikan layar panel Buat grup sumber daya di portal Azure.

  2. Di portal Azure, cari atau pilih layanan Brankas kunci untuk membuat brankas kunci. Pilih Buat.

    Pada panel Buat brankas kunci, pilih tab Dasar , masukkan nilai yang sesuai untuk tab . Sebaiknya aktifkan perlindungan penghapusan menyeluruh.

    Cuplikan layar panel Buat brankas kunci di portal Azure.

  3. Pada tab Konfigurasi akses , Anda memiliki opsi untuk memilih kontrol akses berbasis peran Azure atau kebijakan akses Vault. Kami membahas kedua opsi, tetapi opsi kontrol akses berbasis peran Azure disarankan. Untuk informasi selengkapnya, lihat Gambaran umum model akses.

    Cuplikan layar panel Buat brankas kunci dan tab Konfigurasi akses di portal Azure.

  4. Pilih Tinjau + buat dan buat brankas kunci.

Kontrol akses berbasis peran Azure

Metode yang disarankan adalah menggunakan kontrol akses berbasis peran Azure (RBAC) untuk menetapkan izin ke brankas kunci. Metode ini memungkinkan Anda menetapkan izin kepada pengguna, grup, dan aplikasi pada tingkat yang lebih terperinci. Anda dapat menetapkan izin ke brankas kunci di bidang manajemen (penetapan peran Azure), dan di bidang data (kebijakan akses brankas kunci). Jika Anda hanya dapat menggunakan kebijakan akses, Anda dapat melewati bagian ini dan masuk ke bagian Kebijakan akses vault. Untuk informasi selengkapnya tentang izin RBAC Azure Key Vault, lihat Peran bawaan Azure untuk operasi sarana data Key Vault.

  1. Buka sumber daya brankas kunci yang Anda buat, dan pilih pengaturan Kontrol akses (IAM).

  2. Pilih Tambahkan Tambahkan>penetapan peran.

    Cuplikan layar tombol Tambahkan penetapan peran pada panel Kontrol akses (IAM) di portal Azure.

  3. Aplikasi EKM memerlukan peran Pengguna Enkripsi Layanan Kripto Key Vault untuk melakukan operasi pembungkusan dan pembungkusan. Cari Pengguna Enkripsi Layanan Kripto Key Vault dan pilih perannya. Pilih Selanjutnya.

    Cuplikan layar memilih penetapan peran di portal Azure.

  4. Di tab Anggota , pilih opsi Pilih anggota , lalu cari aplikasi Microsoft Entra yang Anda buat di Langkah 1. Pilih aplikasi lalu tombol Pilih .

    Cuplikan layar panel Pilih anggota untuk menambahkan penetapan peran di portal Azure.

  5. Pilih Tinjau + tetapkan dua kali untuk menyelesaikan penetapan peran.

  6. Pengguna yang membuat kunci memerlukan peran Administrator Key Vault. Cari Administrator Key Vault dan pilih perannya. Pilih Selanjutnya.

  7. Sama seperti langkah-langkah sebelumnya, tambahkan anggota yang membuat kunci dan tetapkan peran.

Kebijakan akses Vault

Catatan

Jika Anda menggunakan opsi kontrol akses berbasis peran Azure, Anda dapat melewati bagian ini. Jika Anda mengubah model izin, Anda dapat melakukannya dengan masuk ke menu Konfigurasi akses dari brankas kunci. Pastikan Anda memiliki izin yang benar untuk mengelola brankas kunci. Untuk informasi lebih lanjut, lihat Mengaktifkan izin Azure RBAC di Key Vault.

  1. Dari tab Konfigurasi akses , pilih Kebijakan akses vault. Jika Anda menggunakan Brankas kunci yang ada, Anda dapat memilih menu Kebijakan akses dari sumber daya Brankas kunci, dan pilih Buat.

  2. Pada panel Buat kebijakan akses, pilih Dapatkan dan Cantumkanizin dari opsi Operasi Manajemen Kunci. Pilih Buka Bungkus izin Kunci dan Bungkus Kunci dari opsi Operasi Kriptografi. Pilih Selanjutnya

    Cuplikan layar tautan Tambahkan Kebijakan Akses pada panel Kebijakan akses.

  3. Pada tab Utama , pilih aplikasi yang dibuat di Langkah 1.

    Cuplikan layar kotak pencarian aplikasi di panel Utama.

  4. Pilih Berikutnya lalu Buat.

Membuat kunci

  1. Pada panel Key Vault , pilih Kunci lalu pilih opsi Buat/Impor. Ini membuka panel Buat kunci . Masukkan nama brankas kunci. Pilih opsi Hasilkan, dan masukkan nama untuk kunci. Koneksi or SQL Server memerlukan nama kunci untuk hanya menggunakan karakter "a-z", "A-Z", "0-9", dan "-", dengan batas 26 karakter.

  2. Gunakan jenis kunci RSA dan ukuran kunci RSA sebagai 2048. EKM saat ini hanya mendukung kunci RSA. Atur tanggal aktivasi dan kedaluwarsa yang sesuai dan atur Diaktifkan sebagai Ya.

    Cuplikan layar panel Buat Kunci.

Praktik terbaik

Untuk memastikan pemulihan kunci cepat dan dapat mengakses data Anda di luar Azure, kami merekomendasikan praktik terbaik berikut:

  • Buat kunci enkripsi Anda secara lokal pada perangkat modul keamanan perangkat keras (HSM) lokal. Pastikan untuk menggunakan kunci RSA 2048 atau 3072 asimetris sehingga didukung oleh SQL Server.

  • Impor kunci enkripsi ke brankas kunci Azure Anda. Proses ini dijelaskan di bagian berikutnya.

  • Sebelum Anda menggunakan kunci di brankas kunci Azure untuk pertama kalinya, lakukan pencadangan kunci brankas kunci Azure menggunakan Backup-AzureKeyVaultKey cmdlet PowerShell.

  • Setiap kali Anda membuat perubahan pada kunci (misalnya, menambahkan ACL, tag, atau atribut kunci), pastikan untuk melakukan pencadangan kunci azure key vault lainnya.

    Catatan

    Mencadangkan kunci adalah operasi kunci Azure Key Vault yang mengembalikan file yang dapat disimpan di mana saja.

    Menggunakan Koneksi or SQL Server untuk Azure Key Vault di belakang firewall atau server proksi dapat memengaruhi performa jika lalu lintas tertunda atau diblokir. Biasakan diri Anda dengan Mengakses Azure Key Vault di belakang firewall untuk memastikan aturan yang benar ada.

Langkah 3: Instal Koneksi or SQL Server

Unduh Koneksi SQL Server dari Pusat Unduhan Microsoft. Unduhan harus dilakukan oleh administrator komputer SQL Server.

Catatan

  • SQL Server Koneksi or versi 1.0.0.440 dan yang lebih lama telah diganti dan tidak lagi didukung di lingkungan produksi dan menggunakan instruksi pada halaman Pemeliharaan & Pemecahan Masalah SQL Server Koneksi or di bawah Peningkatan Koneksi or SQL Server.
  • Dimulai dengan versi 1.0.3.0, Koneksi or SQL Server melaporkan pesan kesalahan yang relevan ke log peristiwa Windows untuk pemecahan masalah.
  • Dimulai dengan versi 1.0.4.0, ada dukungan untuk cloud Azure privat, termasuk Azure yang dioperasikan oleh 21Vianet, Azure Jerman, dan Azure Government.
  • Ada perubahan yang melanggar dalam versi 1.0.5.0 dalam hal algoritma thumbprint. Anda mungkin mengalami kegagalan pemulihan database setelah meningkatkan ke 1.0.5.0. Untuk informasi selengkapnya, lihat artikel KB 447099.
  • Dimulai dengan versi 1.0.5.0 (TimeStamp: September 2020), Koneksi or SQL Server mendukung pemfilteran pesan dan logika coba lagi permintaan jaringan.
  • Dimulai dengan versi yang diperbarui 1.0.5.0 (TimeStamp: November 2020), Koneksi or SQL Server mendukung kunci RSA 2048, RSA 3072, RSA-HSM 2048 dan RSA-HSM 3072.
  • Dimulai dengan versi 1.0.5.0 yang diperbarui (TimeStamp: November 2020), Anda dapat merujuk ke versi kunci tertentu di Azure Key Vault.

Cuplikan layar wizard penginstalan SQL Server Koneksi or.

Secara default, Koneksi or diinstal di C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault. Lokasi ini dapat diubah selama penyiapan. Jika Anda mengubahnya, sesuaikan skrip di bagian berikutnya.

Tidak ada antarmuka untuk Koneksi or, tetapi jika berhasil diinstal, Microsoft.AzureKeyVaultService.EKM.dll diinstal pada komputer. Rakitan ini adalah DLL penyedia EKM kriptografi yang perlu didaftarkan ke SQL Server dengan menggunakan CREATE CRYPTOGRAPHIC PROVIDER pernyataan .

Penginstalan Koneksi or SQL Server juga memungkinkan Anda mengunduh sampel skrip secara opsional untuk enkripsi SQL Server.

Untuk melihat penjelasan kode kesalahan, pengaturan konfigurasi, atau tugas pemeliharaan untuk Koneksi or SQL Server, lihat:

Langkah 4: Tambahkan kunci registri untuk mendukung penyedia EKM

Peringatan

Memodifikasi registri harus dilakukan oleh pengguna yang tahu persis apa yang mereka lakukan. Masalah serius dapat terjadi jika Anda mengubah registri dengan salah. Untuk perlindungan tambahan, cadangkan registri sebelum Anda mengubahnya. Anda dapat memulihkan registri jika terjadi masalah.

  1. Pastikan bahwa SQL Server diinstal dan berjalan.

  2. Jalankan regedit untuk membuka Editor Registri.

  3. Buat SQL Server Cryptographic Provider kunci registri di HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft. Jalur lengkapnya adalah HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider.

  4. Klik kanan kunci SQL Server Cryptographic Provider registri, lalu pilih Izin.

  5. Berikan izin Kontrol Penuh pada SQL Server Cryptographic Provider kunci registri ke akun pengguna yang menjalankan layanan SQL Server.

    Cuplikan layar kunci registri EKM di Editor Registri.

  6. Pilih Terapkan lalu pilih OK.

  7. Tutup Editor Registri dan mulai ulang layanan SQL Server.

    Catatan

    Jika Anda menggunakan TDE dengan EKM atau Azure Key Vault pada instans kluster failover, Anda harus menyelesaikan langkah tambahan untuk menambahkan HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider ke rutinitas Titik Pemeriksaan Registri Kluster, sehingga registri dapat disinkronkan di seluruh simpul. Sinkronisasi memfasilitasi pemulihan database setelah failover dan rotasi kunci.

    Untuk menambahkan kunci registri ke rutinitas Titik Pemeriksaan Registri Kluster, di PowerShell, jalankan perintah berikut:

    Add-ClusterCheckpoint -RegistryCheckpoint "SOFTWARE\Microsoft\SQL Server Cryptographic Provider" -Resourcename "SQL Server"

Langkah 5: Mengonfigurasi SQL Server

Untuk catatan tentang tingkat izin minimum yang diperlukan untuk setiap tindakan di bagian ini, lihat B. Tanya Jawab Umum.

master Mengonfigurasi database

  1. Jalankan sqlcmd atau buka SQL Server Management Studio.

  2. Konfigurasikan SQL Server untuk menggunakan EKM dengan menjalankan skrip Transact-SQL berikut:

    -- Enable advanced options.
    USE master;
    GO
    
    EXEC sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    
    -- Enable EKM provider
    EXEC sp_configure 'EKM provider enabled', 1;
    GO
    RECONFIGURE;
    
  3. Daftarkan Koneksi or SQL Server sebagai penyedia EKM dengan SQL Server.

    Buat penyedia kriptografi dengan menggunakan Koneksi or SQL Server, yang merupakan penyedia EKM untuk Azure Key Vault. Dalam contoh ini, nama penyedia adalah AzureKeyVault_EKM.

    CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM
    FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll';
    GO
    

    Catatan

    Panjang jalur file tidak boleh melebihi 256 karakter.

  4. Siapkan kredensial SQL Server untuk login SQL Server untuk menggunakan brankas kunci.

    Kredensial harus ditambahkan ke setiap login yang akan melakukan enkripsi dengan menggunakan kunci dari brankas kunci. Ini dapat meliputi:

    • Login administrator SQL Server yang menggunakan brankas kunci untuk menyiapkan dan mengelola skenario enkripsi SQL Server.

    • Login SQL Server lainnya yang mungkin mengaktifkan TDE atau fitur enkripsi SQL Server lainnya.

    Ada pemetaan satu-ke-satu antara kredensial dan login. Artinya, setiap login harus memiliki kredensial yang unik.

    Ubah skrip Transact-SQL ini dengan cara berikut:

    • IDENTITY Edit argumen (DocsSampleEKMKeyVault) untuk menunjuk ke Azure Key Vault Anda.

      • Jika Anda menggunakan Azure global, ganti IDENTITY argumen dengan nama Azure Key Vault Anda dari Langkah 2: Buat brankas kunci.
      • Jika Anda menggunakan cloud Azure privat (misalnya, Azure Government, Microsoft Azure yang dioperasikan oleh 21Vianet, atau Azure Jerman), ganti IDENTITY argumen dengan URI Vault yang dikembalikan di langkah 3 dari bagian Buat brankas kunci dan kunci dengan menggunakan PowerShell. Jangan sertakan https:// dalam URI brankas kunci.
    • Ganti bagian pertama argumen SECRET dengan ID Klien Microsoft Entra dari Langkah 1: Siapkan perwakilan layanan Microsoft Entra. Dalam contoh ini, ID Klien adalah d956f6b9xxxxxxx.

      Penting

      Pastikan untuk menghapus tanda hubung dari ID Aplikasi (Klien).

    • Selesaikan bagian kedua argumen SECRET dengan Rahasia Klien dari Langkah 1: Siapkan perwakilan layanan Microsoft Entra. Dalam contoh ini, Rahasia Klien adalah yrA8X~PldtMCvUZPxxxxxxxx. String akhir untuk SECRET argumen akan menjadi urutan huruf dan angka yang panjang, tanpa tanda hubung (kecuali untuk bagian Rahasia Klien, jika Rahasia Klien berisi tanda hubung).

      USE master;
      CREATE CREDENTIAL sysadmin_ekm_cred
          WITH IDENTITY = 'DocsSampleEKMKeyVault',                            -- for public Azure
          -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.usgovcloudapi.net', -- for Azure Government
          -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.azure.cn',          -- for Microsoft Azure operated by 21Vianet
          -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.microsoftazure.de', -- for Azure Germany
                 --<----Application (Client) ID ---><--Microsoft Entra app (Client) ID secret-->
          SECRET = 'd956f6b9xxxxxxxyrA8X~PldtMCvUZPxxxxxxxx'
      FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
      
      -- Add the credential to the SQL Server administrator's domain login
      ALTER LOGIN [<domain>\<login>]
      ADD CREDENTIAL sysadmin_ekm_cred;
      

    Untuk contoh penggunaan variabel untuk CREATE CREDENTIAL argumen dan menghapus tanda hubung secara terprogram dari ID Klien, lihat MEMBUAT KREDENSIAL (Transact-SQL).

  5. Buka kunci Azure Key Vault Anda di instans SQL Server Anda.

    Apakah Anda membuat kunci baru atau mengimpor kunci asimetris, seperti yang dijelaskan di Langkah 2: Membuat brankas kunci, Anda perlu membuka kunci. Buka dengan memberikan nama kunci Anda dalam skrip Transact-SQL berikut.

    Penting

    Pastikan untuk terlebih dahulu menyelesaikan prasyarat Registri untuk langkah ini.

    • Ganti EKMSampleASYKey dengan nama yang Anda inginkan untuk dimiliki kunci di SQL Server.
    • Ganti ContosoRSAKey0 dengan nama kunci Anda di Azure Key Vault Anda. Di bawah ini adalah contoh kunci tanpa versi.
    CREATE ASYMMETRIC KEY EKMSampleASYKey
    FROM PROVIDER [AzureKeyVault_EKM]
    WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
    CREATION_DISPOSITION = OPEN_EXISTING;
    

    Dimulai dengan konektor SQL Server versi 1.0.5.0 yang diperbarui, Anda dapat merujuk ke versi kunci tertentu di Azure Key Vault:

    CREATE ASYMMETRIC KEY EKMSampleASYKey
    FROM PROVIDER [AzureKeyVault_EKM]
    WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379',
    CREATION_DISPOSITION = OPEN_EXISTING;
    

    Dalam contoh skrip sebelumnya, 1a4d3b9b393c4678831ccc60def75379 mewakili versi kunci tertentu yang akan digunakan. Jika Anda menggunakan skrip ini, tidak masalah jika Anda memperbarui kunci dengan versi baru. Versi kunci (misalnya) 1a4d3b9b393c4678831ccc60def75379 akan selalu digunakan untuk operasi database.

  6. Buat login baru dengan menggunakan kunci asimetris di SQL Server yang Anda buat di langkah sebelumnya.

    --Create a Login that will associate the asymmetric key to this login
    CREATE LOGIN TDE_Login
    FROM ASYMMETRIC KEY EKMSampleASYKey;
    
  7. Buat login baru dari kunci asimetris di SQL Server. Hilangkan pemetaan kredensial dari Langkah 5: Konfigurasikan SQL Server sehingga kredensial dapat dipetakan ke login baru.

    --Now drop the credential mapping from the original association
    ALTER LOGIN [<domain>\<login>]
    DROP CREDENTIAL sysadmin_ekm_cred;
    
  8. Ubah login baru, dan petakan kredensial EKM ke login baru.

    --Now add the credential mapping to the new Login
    ALTER LOGIN TDE_Login
    ADD CREDENTIAL sysadmin_ekm_cred;
    

Mengonfigurasi database pengguna untuk dienkripsi

  1. Buat database pengujian yang akan dienkripsi dengan kunci Azure Key Vault.

    --Create a test database that will be encrypted with the Azure Key Vault key
    CREATE DATABASE TestTDE;
    
  2. Buat kunci enkripsi database dengan menggunakan ASYMMETRIC KEY (EKMSampleASYKey).

    USE <DB Name>;
    --Create an ENCRYPTION KEY using the ASYMMETRIC KEY (EKMSampleASYKey)
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_256
    ENCRYPTION BY SERVER ASYMMETRIC KEY EKMSampleASYKey;
    
  3. Mengenkripsi database pengujian. Aktifkan TDE dengan mengatur ENCRYPTION ON.

    --Enable TDE by setting ENCRYPTION ON
    ALTER DATABASE TestTDE
    SET ENCRYPTION ON;
    

Detail registri

  1. Jalankan kueri Transact-SQL berikut dalam master database untuk memperlihatkan kunci asimetris yang digunakan.

    SELECT name, algorithm_desc, thumbprint FROM sys.asymmetric_keys;
    

    Pernyataan mengembalikan:

    name            algorithm_desc    thumbprint
    EKMSampleASYKey RSA_2048          <key thumbprint>
    
  2. Dalam database pengguna (TestTDE), jalankan kueri Transact-SQL berikut ini untuk memperlihatkan kunci enkripsi yang digunakan.

    SELECT encryptor_type, encryption_state_desc, encryptor_thumbprint 
    FROM sys.dm_database_encryption_keys
    WHERE database_id = DB_ID('TestTDE');
    

    Pernyataan mengembalikan:

    encryptor_type encryption_state_desc encryptor_thumbprint
    ASYMMETRIC KEY ENCRYPTED             <key thumbprint>
    

Penghapusan

  1. Bersihkan objek pengujian. Hapus semua objek yang dibuat dalam skrip pengujian ini.

    -- CLEAN UP
    USE master;
    GO
    ALTER DATABASE [TestTDE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    DROP DATABASE [TestTDE];
    GO
    
    ALTER LOGIN [TDE_Login] DROP CREDENTIAL [sysadmin_ekm_cred];
    DROP LOGIN [TDE_Login];
    GO
    
    DROP CREDENTIAL [sysadmin_ekm_cred];
    GO
    
    USE master;
    GO
    DROP ASYMMETRIC KEY [EKMSampleASYKey];
    DROP CRYPTOGRAPHIC PROVIDER [AzureKeyVault_EKM];
    GO
    

    Untuk contoh skrip, lihat blog di Enkripsi Data Transparan SQL Server dan Extensible Key Management dengan Azure Key Vault.

  2. Kunci SQL Server Cryptographic Provider registri tidak dibersihkan secara otomatis setelah kunci atau semua kunci EKM dihapus. Ini harus dibersihkan secara manual. Membersihkan kunci registri harus dilakukan dengan sangat hati-hati, karena membersihkan registri sebelum waktunya dapat merusak fungsionalitas EKM. Untuk membersihkan kunci registri, hapus SQL Server Cryptographic Provider kunci registri pada HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.

Pemecahan Masalah

Jika kunci HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider registri tidak dibuat atau izin yang diperlukan tidak diberikan, pernyataan DDL berikut akan gagal:

CREATE ASYMMETRIC KEY EKMSampleASYKey
FROM PROVIDER [AzureKeyVault_EKM]
WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
CREATION_DISPOSITION = OPEN_EXISTING;
Msg 33049, Level 16, State 2, Line 65
Key with name 'ContosoRSAKey0' does not exist in the provider or access is denied. Provider error code: 2058.  (Provider Error - No explanation is available, consult EKM Provider for details)

Rahasia klien yang akan kedaluwarsa

Jika kredensial memiliki rahasia klien yang akan kedaluwarsa, rahasia baru dapat ditetapkan ke kredensial.

  1. Perbarui rahasia yang awalnya dibuat di Langkah 1: Siapkan perwakilan layanan Microsoft Entra.

  2. Ubah kredensial menggunakan identitas yang sama dan rahasia baru menggunakan kode berikut. Ganti <New Secret> dengan rahasia baru Anda:

    ALTER CREDENTIAL sysadmin_ekm_cred
    WITH IDENTITY = 'DocsSampleEKMKeyVault',
    SECRET = '<New Secret>';
    
  3. Mulai ulang layanan SQL Server.

Catatan

Jika Anda menggunakan EKM dalam grup ketersediaan (AG), Anda harus mengubah kredensial dan memulai ulang layanan SQL Server pada semua simpul AG.

Putar kunci asimetris dengan kunci AKV baru atau versi kunci AKV baru

Catatan

  • Saat memutar kunci AKV secara manual, SQL Server mendukung kunci tanpa versi AKV atau kunci versi dan tidak perlu menggunakan kunci AKV yang berbeda.
  • Kunci AKV asli dapat diputar membuat versi baru yang dapat menggantikan kunci sebelumnya yang dibuat di SQL Server.
  • Untuk rotasi kunci manual, kunci asimetris SQL Server baru harus dibuat mengacu pada kunci tanpa versi atau kunci versi yang diputar di AKV. Untuk kunci asimetris SQL Server baru, kunci AKV tanpa versi akan secara otomatis dipilih menggunakan versi kunci tertinggi di AKV. Untuk kunci versi, Anda harus menunjukkan versi tertinggi di AKV menggunakan sintaks WITH PROVIDER_KEY_NAME = <key_name>/<version>. Anda dapat mengubah kunci enkripsi database untuk mengenkripsi ulang dengan kunci asimetris baru. Nama kunci yang sama (versi atau tanpa versi) dapat digunakan dengan kebijakan rotasi AKV. Untuk kunci versi, versi saat ini harus ditambahkan. Untuk kunci tanpa versi, gunakan nama kunci yang sama.

SQL Server tidak memiliki mekanisme untuk secara otomatis memutar kunci asimetris yang digunakan untuk TDE. Langkah-langkah untuk memutar kunci asimetris secara manual adalah sebagai berikut.

  1. Kredensial yang digunakan dalam penyiapan awal kami (sysadmin_ekm_cred) juga dapat digunakan kembali untuk rotasi kunci. Secara opsional, buat kredensial baru untuk kunci asimetris baru.

    CREATE CREDENTIAL <new_credential_name>
        WITH IDENTITY = <key vault>,
        SECRET = 'existing/new secret'
        FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
    
  2. Tambahkan kredensial ke prinsipal:

    ALTER LOGIN [domain\userName];
    ADD CREDENTIAL <new_credential_name>;
    
  3. Buat kunci asimetris baru berdasarkan kunci baru (setelah memutar kunci). Kunci baru bisa menjadi kunci tanpa versi (ContosoRSAKey0 dalam contoh kami) atau kunci versi (ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379 di mana 1a4d3b9b393c4678831ccc60def75379 adalah versi kunci yang diperbarui di AKV):

    CREATE ASYMMETRIC KEY <new_ekm_key_name>
     FROM PROVIDER [AzureKeyVault_EKM]  
     WITH PROVIDER_KEY_NAME = <new_key_from_key_vault>,  
     CREATION_DISPOSITION = OPEN_EXISTING;
    
  4. Buat login baru dari kunci asimetris baru:

    CREATE LOGIN <new_login_name>
    FROM ASYMMETRIC KEY <new_ekm_key_name>;
    
  5. Hilangkan kredensial dari prinsipal:

    ALTER LOGIN [domain\username]
    DROP CREDENTIAL <new_credential_name>;
    
  6. Petakan kredensial AKV ke login baru:

    ALTER LOGIN <new_login_name>;
    ADD CREDENTIAL <new_credential_name>;
    
  7. Ubah kunci enkripsi database (DEK) untuk mengenkripsi ulang dengan kunci asimetris baru:

    USE [databaseName];
    GO
    ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY <new_ekm_key_name>;
    
  8. Anda dapat memverifikasi kunci asimetris baru dan kunci enkripsi yang digunakan dalam database:

    SELECT encryptor_type, encryption_state_desc, encryptor_thumbprint 
    FROM sys.dm_database_encryption_keys 
    WHERE database_id = DB_ID('databaseName');
    

    Thumbprint ini harus cocok dengan kunci registri di bawah jalur HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider\Azure Key Vault\<key_vault_url>\<thumbprint> dan memberi Anda kunci yang KeyUri diputar.

Penting

Memutar pelindung TDE logis untuk server berarti beralih ke kunci atau sertifikat asimetris baru yang melindungi kunci enkripsi database (DEK). Rotasi kunci adalah operasi online dan hanya perlu beberapa detik untuk diselesaikan, karena ini hanya mendekripsi dan mengenkripsi ulang DEK dan bukan seluruh database.

Jangan hapus versi kunci sebelumnya setelah rotasi. Ketika kunci diputar, beberapa data masih dienkripsi dengan kunci sebelumnya, seperti cadangan database yang lebih lama, file log yang dicadangkan, file log virtual (VLF), dan file log transaksi. Kunci sebelumnya mungkin juga diperlukan untuk pemulihan database atau pemulihan database.