Siapkan SQL Server TDE Extensible Key Management dengan menggunakan Azure Key Vault
Berlaku untuk:
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:
Anda harus memiliki langganan Azure yang aktif.
Membuat instans Azure Active Directory (Azure AD).
Biasakan diri Anda dengan prinsip penyimpanan Extensible Key Management (EKM) dengan Azure Key Vault dengan meninjau EKM dengan Azure Key Vault (SQL Server).
Instal versi Visual Studio C++ Redistributable yang didasarkan pada versi SQL Server yang Anda jalankan:
Versi SQL Server Versi Visual Studio C++ Redistributable 2008, 2008 R2, 2012, 2014 Paket Visual C++ Redistributable untuk Visual Studio 2013 2016, 2017, 2019 Visual C++ Dapat Didistribusikan Ulang untuk Visual Studio 2015 Biasakan diri Anda dengan Mengakses Azure Key Vault di belakang firewall jika Anda berencana menggunakan Konektor SQL Server untuk Azure Key Vault di belakang firewall atau dengan server proksi.
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.
Masuk ke portal Microsoft Azure, dan lakukan salah satu hal berikut ini:
Pilih tombol Azure Active Directory .

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

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.

b. Pada panel Pendaftaran aplikasi , pilih Pendaftaran baru.

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

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

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

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.

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.

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.
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.

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

Pada panel Kebijakan akses , pilih Tambahkan Kebijakan Akses.

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.

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.

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

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

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.

Pada panel Kebijakan akses , pilih Simpan.

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.

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:
- J. Instruksi Pemeliharaan untuk Konektor SQL Server
- C. Penjelasan Kode Kesalahan untuk Konektor SQL Server
Langkah 4: Mengonfigurasi SQL Server
Untuk catatan tentang tingkat izin minimum yang diperlukan untuk setiap tindakan di bagian ini, lihat B. Tanya Jawab Umum.
Jalankan sqlcmd.exe atau buka SQL Server Management Studio.
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;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'; GOCatatan
Panjang jalur file tidak boleh melebihi 256 karakter.
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:
IDENTITYEdit argumen (ContosoEKMKeyVault) untuk menunjuk ke brankas kunci Azure Anda.- Jika Anda menggunakan Azure global, ganti
IDENTITYargumen dengan nama brankas kunci Azure Anda dari Langkah 2: Buat brankas kunci. - Jika Anda menggunakan cloud Azure privat (misalnya, Azure Government, Azure China 21Vianet, atau Azure Jerman), ganti
IDENTITYargumen dengan URI Vault yang dikembalikan di langkah 3 dari bagian Buat brankas kunci dan kunci dengan menggunakan PowerShell . Jangan sertakan "https://" di URI Vault.
- Jika Anda menggunakan Azure global, ganti
Ganti bagian pertama argumen
SECRETdengan ID Klien Azure Active Directory dari Langkah 1: Siapkan perwakilan layanan Azure AD. Dalam contoh ini, ID Klien adalah9A57CBC54C4C40E2B517EA677E0EFA00.Penting
Pastikan untuk menghapus tanda hubung dari ID Aplikasi (Klien).
Selesaikan bagian kedua dari
SECRETargumen dengan Rahasia Klien dari Langkah 1: Siapkan perwakilan layanan Azure AD. Dalam contoh ini, Rahasia Klien adalah08:k?[:XEZFxcwIPvVVZhTjHWXm7w1?m. String akhir untukSECRETargumen 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 CREDENTIALargumen dan menghapus tanda hubung secara terprogram dari ID Klien, lihat CREATE CREDENTIAL (Transact-SQL).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
EKMSampleASYKeydengan nama yang Anda inginkan untuk dimiliki kunci di SQL Server. - Ganti
ContosoRSAKey0dengan 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,
1a4d3b9b393c4678831ccc60def75379mewakili versi kunci tertentu yang akan digunakan. Jika Anda menggunakan skrip ini, tidak masalah jika Anda memperbarui kunci dengan versi baru. Versi kunci (misalnya)1a4d3b9b393c4678831ccc60def75379akan selalu digunakan untuk operasi database. Untuk skenario ini, Anda harus menyelesaikan dua prasyarat:Buat kunci Penyedia Kriptografi SQL Server di HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.
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"
- Ganti
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;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;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;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 TestTDEBuat 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;Mengenkripsi database pengujian. Aktifkan TDE dengan mengatur ENKRIPSI AKTIF.
--Enable TDE by setting ENCRYPTION ON ALTER DATABASE TestTDE SET ENCRYPTION ON;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.