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

Berlaku untuk:yes SQL Server (semua versi yang didukung)

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

Prasyarat

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

Langkah 1: Menyiapkan perwakilan layanan Azure AD

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

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

    • Pilih tombol Azure Active Directory .

      Screenshot of the

    • Pilih Layanan lainnya lalu, dalam kotak Semua layanan , ketik Azure Active Directory.

      Screenshot of the

  2. Daftarkan aplikasi dengan Azure Active Directory dengan melakukan hal berikut. (Untuk instruksi langkah demi langkah terperinci, lihat bagian "Dapatkan identitas untuk aplikasi" dari posting blog Azure Key Vault.)

    a. Pada panel Gambaran Umum Azure Active Directory , pilih Pendaftaran aplikasi.

    Screenshot of the

    b. Pada panel Pendaftaran aplikasi , pilih Pendaftaran baru.

    Screenshot of the

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

    Screenshot of the

    d. Di panel kiri, pilih Rahasia sertifikat&, lalu pilih Rahasia klien baru.

    Screenshot of the

    e. Di bawah Tambahkan rahasia klien, masukkan deskripsi dan kedaluwarsa yang sesuai, lalu pilih Tambahkan.

    Screenshot of the

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

    Screenshot of the secret value

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

    Screenshot of the

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 Microsoft Azure untuk membuat brankas kunci lalu menambahkan perwakilan Azure ACTIVE Directory ke dalamnya.

  1. Membuat grup sumber daya.

    Semua sumber daya Azure yang Anda buat melalui portal Microsoft Azure harus terkandung dalam grup sumber daya, yang Anda buat untuk menampung brankas kunci Anda. Nama sumber daya dalam contoh ini adalah ContosoDevRG. 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.

    Screenshot of the

  2. Buat brankas kunci.

    Pada panel Buat brankas kunci , pilih tab Dasar , masukkan nilai yang sesuai, lalu pilih Tinjau + buat.

    Screenshot of the

  3. Pada panel Kebijakan akses , pilih Tambahkan Kebijakan Akses.

    Screenshot of the

  4. Pada panel Tambahkan kebijakan akses , lakukan hal berikut ini:

    a. Di daftar drop-down Konfigurasikan dari templat (opsional) , pilih Manajemen Kunci.

    b. Di panel kiri, pilih tab Izin kunci, lalu verifikasi kotak centang Dapatkan, Daftar, Buka Bungkus Kunci, dan Bungkus Kunci dipilih.

    c. Pilih Tambahkan.

    Screenshot of the

  5. Di panel kiri, pilih tab Pilih utama , lalu lakukan hal berikut ini:

    a. Di panel Utama , di bawah Pilih, mulai ketik nama aplikasi Azure ACTIVE Directory Anda lalu, dalam daftar hasil, pilih aplikasi yang ingin Anda tambahkan.

    Screenshot of application search box on the Principal pane

    b. Pilih tombol Pilih untuk menambahkan perwakilan ke brankas kunci Anda.

    Screenshot of the Select button on the Principal pane

    c. Di kiri bawah, pilih Tambahkan untuk menyimpan perubahan Anda.

    Screenshot of the Add button on the

  6. Pada panel Key Vault , pilih Kunci dan masukkan nama brankas kunci. Gunakan jenis kunci RSA dan RSA Key Size 2048. Atur tanggal aktivasi dan kedaluwarsa yang sesuai dan atur Diaktifkan? sebagai Ya.

    Screenshot of the

  7. Pada panel Kebijakan akses , pilih Simpan.

    Screenshot of the Save button on the

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 asimetris 2048 atau 3072 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. Untuk informasi selengkapnya, lihat perintah Backup-AzureKeyVaultKey .

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

    Catatan

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

    Catatan

    Menggunakan Konektor 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 Akses Azure Key Vault di belakang firewall untuk memastikan aturan yang benar sudah ada.

Langkah 3: Instal Konektor SQL Server

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

Catatan

  • Konektor SQL Server versi 1.0.0.440 dan yang lebih lama telah diganti dan tidak lagi didukung di lingkungan produksi dan menggunakan instruksi pada halaman Pemecahan Masalah Pemeliharaan & Konektor SQL Server di bawah Peningkatan Konektor SQL Server.
  • Dimulai dengan versi 1.0.3.0, Konektor 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 Tiongkok, 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), Konektor SQL Server mendukung pemfilteran pesan dan logika coba lagi permintaan jaringan.
  • Dimulai dengan versi terbaru 1.0.5.0 (TimeStamp: November 2020), Konektor SQL Server mendukung kunci RSA 2048, RSA 3072, RSA-HSM 2048 dan RSA-HSM 3072.

Screenshot of the SQL Server Connector installation wizard

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

Tidak ada antarmuka untuk Konektor, 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 Konektor 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 Konektor SQL Server, lihat:

Langkah 4: Mengonfigurasi SQL Server

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

  1. Jalankan sqlcmd.exe 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 Konektor SQL Server sebagai penyedia EKM dengan SQL Server.

    Buat penyedia kriptografi dengan menggunakan Konektor SQL Server, yang merupakan penyedia EKM untuk brankas kunci Azure. 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 lain 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 (ContosoEKMKeyVault) untuk menunjuk ke brankas kunci Azure Anda.

    • Ganti bagian pertama argumen SECRET dengan ID Klien Azure Active Directory dari Langkah 1: Siapkan perwakilan layanan Azure AD. Dalam contoh ini, ID Klien adalah 9A57CBC54C4C40E2B517EA677E0EFA00.

      Penting

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

    • Selesaikan bagian kedua dari SECRET argumen dengan Rahasia Klien dari Langkah 1: Siapkan perwakilan layanan Azure AD. Dalam contoh ini, Rahasia Klien adalah 08:k?[:XEZFxcwIPvVVZhTjHWXm7w1?m. String akhir untuk SECRET argumen akan menjadi urutan huruf dan angka yang panjang, tanpa tanda hubung.

    USE master;  
    CREATE CREDENTIAL sysadmin_ekm_cred
        WITH IDENTITY = 'ContosoEKMKeyVault',                            -- for public Azure
        -- WITH IDENTITY = 'ContosoEKMKeyVault.vault.usgovcloudapi.net', -- for Azure Government
        -- WITH IDENTITY = 'ContosoEKMKeyVault.vault.azure.cn',          -- for Azure China 21Vianet
        -- WITH IDENTITY = 'ContosoEKMKeyVault.vault.microsoftazure.de', -- for Azure Germany
               --<----Application (Client) ID ---><--Azure AD app (Client) ID secret-->
        SECRET = '9A57CBC54C4C40E2B517EA677E0EFA0008:k?[:XEZFxcwIPvVVZhTjHWXm7w1?m'
    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 CREATE CREDENTIAL (Transact-SQL).

  5. Buka kunci brankas kunci Azure Anda di instans SQL Server Anda.

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

    • Ganti EKMSampleASYKey dengan nama yang Anda inginkan untuk dimiliki kunci di SQL Server.
    • Ganti ContosoRSAKey0 dengan nama kunci Anda di brankas kunci Azure Anda.
    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 brankas kunci Azure:

    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. Untuk skenario ini, Anda harus menyelesaikan dua prasyarat:

    1. Buat kunci Penyedia Kriptografi SQL Server di HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.

    2. Delegasikan izin "Kontrol Penuh" pada kunci Penyedia Kriptografi SQL Server ke akun pengguna yang menjalankan layanan mesin database 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"

  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 4: 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;
    
  9. Buat database pengujian yang akan dienkripsi dengan kunci brankas kunci Azure.

    --Create a test database that will be encrypted with the Azure key vault key
    CREATE DATABASE TestTDE
    
  10. 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;
    
  11. Mengenkripsi database pengujian. Aktifkan TDE dengan mengatur ENKRIPSI AKTIF.

    --Enable TDE by setting ENCRYPTION ON
    ALTER DATABASE TestTDE
    SET ENCRYPTION ON;  
    
  12. Bersihkan objek pengujian. Hapus semua objek yang dibuat dalam skrip pengujian ini.

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

    Catatan

    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 Azure ACTIVE Directory.

      Ubah kredensial menggunakan identitas yang sama dan rahasia baru menggunakan kode berikut:

      ALTER CREDENTIAL CREDName
      WITH IDENTITY = 'Original Identity',
      SECRET = 'New Secret';
      
      2. Mulai ulang layanan SQL
      3. Langkah 2 dan 3 perlu dilakukan pada semua simpul Grup Ketersediaan

Untuk contoh skrip, lihat blog di Enkripsi Data Transparan SQL Server dan Manajemen Kunci yang Dapat Diperluas dengan Azure Key Vault.

Langkah berikutnya

Sekarang setelah Anda menyelesaikan konfigurasi dasar, lihat Menggunakan Konektor SQL Server dengan fitur enkripsi SQL.

Lihat juga