Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Aktivitas enkripsi SQL Server umum menggunakan kunci asimetris yang dilindungi oleh Azure Key Vault mencakup tiga area berikut.
Enkripsi Data Transparan dengan menggunakan Kunci Asimetris dari Azure Key Vault
Mengenkripsi Cadangan dengan Menggunakan Kunci Asimetris dari Key Vault
Enkripsi Tingkat Kolom dengan Menggunakan Kunci Asimetris dari Key Vault
Selesaikan bagian I melalui IV topik Langkah-langkah Penyiapan untuk Manajemen Kunci yang Dapat Diperluas Menggunakan Azure Key Vault, sebelum mengikuti langkah-langkah tentang topik ini.
Catatan
Versi 1.0.0.440 dan yang lebih lama telah diganti dan tidak lagi didukung di lingkungan produksi. Tingkatkan ke versi 1.0.1.0 atau yang lebih baru dengan mengunjungi Pusat Unduhan Microsoft dan menggunakan instruksi pada halaman Pemeliharaan & Pemecahan Masalah Konektor SQL Server di bagian "Peningkatan Konektor SQL Server."
Catatan
ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).
Enkripsi Data Transparan dengan menggunakan Kunci Asimetris dari Azure Key Vault
Setelah menyelesaikan Bagian I melalui IV topik Langkah-langkah Penyiapan untuk Manajemen Kunci yang Dapat Diperluas Menggunakan Azure Key Vault, gunakan kunci Azure Key Vault untuk mengenkripsi kunci enkripsi database menggunakan TDE. Untuk informasi selengkapnya tentang memutar kunci menggunakan PowerShell, lihat Memutar pelindung Transparent Data Encryption (TDE) menggunakan PowerShell.
Penting
Jangan menghapus versi kunci sebelumnya setelah proses rollover. Saat kunci di-roll over, beberapa data masih dienkripsi dengan kunci sebelumnya, seperti cadangan database yang lebih lama, file log cadangan dan file log transaksi.
Anda harus membuat kredensial dan login, dan membuat kunci enkripsi database yang akan mengenkripsi data dan log dalam database. Untuk mengenkripsi database memerlukan izin CONTROL pada database. Grafik berikut menunjukkan hierarki kunci enkripsi saat menggunakan Azure Key Vault.
Membuat kredensial SQL Server untuk Mesin Database yang akan digunakan untuk TDE
Mesin Database menggunakan kredensial aplikasi Microsoft Entra untuk mengakses Key Vault selama beban database. Sebaiknya buat ID Klien dan Rahasia lain, seperti yang dijelaskan di Langkah 1, untuk Mesin Database, untuk membatasi izin Key Vault yang diberikan.
Ubah skrip Transact-SQL di bawah ini dengan cara berikut:
Sunting argumen
IDENTITY(ContosoDevKeyVault) untuk mengarahkan ke Azure Key Vault Anda.- Jika Anda menggunakan Azure global, ganti
IDENTITYargumen dengan nama Azure Key Vault Anda dari Bagian II. - Jika Anda menggunakan awan Azure pribadi (misalnya Azure Government, Azure yang dioperasikan oleh 21Vianet, atau Azure Jerman), ganti argumen dengan URI Vault yang dikembalikan pada Langkah 3 dari Bagian II. Jangan sertakan "https://" dalam URI Vault.
- Jika Anda menggunakan Azure global, ganti
Ganti bagian pertama dari
SECRETargumen dengan ID Klien aplikasi Microsoft Entra dari Langkah 1. Dalam contoh ini, ID Klien adalahEF5C8E094D2A4A769998D93440D8115D.Penting
Anda harus menghapus tanda hubung dari Klien ID.
Selesaikan bagian kedua dari argumen
SECRETdengan Rahasia Klien dari Bagian I. Dalam contoh ini, Rahasia Klien dari Bagian 1 adalahReplaceWithAADClientSecret.String akhir untuk argumen SECRET akan menjadi urutan huruf dan angka yang panjang, tanpa tanda hubung.
USE master; CREATE CREDENTIAL Azure_EKM_TDE_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplaceWithAADClientSecret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;Membuat login SQL Server untuk Mesin Database untuk TDE
Buat login SQL Server dan tambahkan kredensial dari Langkah 1 ke dalamnya. Contoh Transact-SQL ini menggunakan kunci yang sama yang diimpor sebelumnya.
USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it loads a database -- encrypted by TDE. CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the TDE Login to add the credential for use by the -- Database Engine to access the key vault ALTER LOGIN TDE_Login ADD CREDENTIAL Azure_EKM_TDE_cred ; GOMembuat Kunci Enkripsi Database (DEK)
DEK akan mengenkripsi data dan file log Anda dalam instans database, dan pada gilirannya dienkripsi oleh kunci asimetris Azure Key Vault. DEK dapat dibuat menggunakan algoritma atau panjang kunci yang didukung SQL Server.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GOAktifkan TDE
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GOMenggunakan Management Studio, verifikasi bahwa TDE telah diaktifkan dengan menyambungkan ke database Anda dengan Object Explorer. Klik kanan database Anda, arahkan ke Tugas, lalu klik Kelola Enkripsi Database.
Dalam kotak dialog Kelola Enkripsi Database, konfirmasikan bahwa TDE aktif, dan kunci asimetris apa yang mengenkripsi DEK.
Atau, Anda dapat menjalankan skrip Transact-SQL berikut. Status enkripsi 3 menunjukkan database terenkripsi.
USE MASTER SELECT * FROM sys.asymmetric_keys -- Check which databases are encrypted using TDE SELECT d.name, dek.encryption_state FROM sys.dm_database_encryption_keys AS dek JOIN sys.databases AS d ON dek.database_id = d.database_id;Catatan
Database
tempdbdienkripsi secara otomatis setiap kali database apa pun mengaktifkan TDE.
Mengenkripsi Cadangan dengan Menggunakan Kunci Asimetris dari Key Vault
Pencadangan terenkripsi didukung dimulai dengan SQL Server 2014 (12.x). Contoh berikut membuat dan memulihkan cadangan yang dienkripsi menggunakan kunci enkripsi data yang dilindungi oleh kunci asimetris di vault kunci.
Mesin Database menggunakan kredensial aplikasi Microsoft Entra untuk mengakses Key Vault selama beban database. Sebaiknya buat ID Klien dan Rahasia lain, seperti yang dijelaskan di Langkah 1, untuk Mesin Database, untuk membatasi izin Key Vault yang diberikan.
Membuat kredensial SQL Server untuk Mesin Database yang akan digunakan untuk Enkripsi Cadangan
Ubah skrip Transact-SQL di bawah ini dengan cara berikut:
Sunting argumen
IDENTITY(ContosoDevKeyVault) untuk mengarahkan ke Azure Key Vault Anda.- Jika Anda menggunakan Azure global, ganti
IDENTITYargumen dengan nama Azure Key Vault Anda dari Bagian II. - Jika Anda menggunakan Azure awan privat (misalnya Azure Government, Microsoft Azure yang dikelola oleh 21Vianet, atau Azure Jerman), ganti argumen
IDENTITYdengan URI Vault yang dikembalikan di Bagian II, langkah 3. Jangan sertakan "https://" dalam URI Vault.
- Jika Anda menggunakan Azure global, ganti
Ganti bagian pertama dari
SECRETargumen dengan ID Klien aplikasi Microsoft Entra dari Langkah 1. Dalam contoh ini, ID Klien adalahEF5C8E094D2A4A769998D93440D8115D.Penting
Anda harus menghapus tanda hubung dari Klien ID.
Selesaikan bagian kedua dari
SECRETargumen dengan Rahasia Klien dari Bagian I. Dalam contoh ini, Rahasia Klien dari Bagian I adalahReplace-With-AAD-Client-Secret. String akhir untukSECRETargumen akan menjadi urutan huruf dan angka yang panjang, tanpa tanda hubung.USE master; CREATE CREDENTIAL Azure_EKM_Backup_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;
Membuat login SQL Server untuk Mesin Database untuk Enkripsi Cadangan
Buat login SQL Server untuk digunakan oleh Mesin Database untuk pencadangan enkripsi, dan tambahkan kredensial dari Langkah 1 ke dalamnya. Contoh Transact-SQL ini menggunakan kunci yang sama yang diimpor sebelumnya.
Penting
Anda tidak dapat menggunakan kunci asimetris yang sama untuk enkripsi cadangan jika Anda telah menggunakan kunci tersebut untuk TDE (contoh di atas), atau enkripsi tingkat kolom (contoh berikut).
Contoh ini menggunakan kunci asimetris
CONTOSO_KEY_BACKUPyang disimpan di brankas kunci, yang dapat diimpor atau dibuat sebelumnya untuk database master, sebagai Bagian IV, Langkah 5 sebelumnya.USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it is encrypting the backup. CREATE LOGIN Backup_Login FROM ASYMMETRIC KEY CONTOSO_KEY_BACKUP; GO -- Alter the Encrypted Backup Login to add the credential for use by -- the Database Engine to access the key vault ALTER LOGIN Backup_Login ADD CREDENTIAL Azure_EKM_Backup_cred ; GOCadangkan Basis Data
Cadangkan database dengan menentukan enkripsi menggunakan kunci asimetris yang disimpan dalam gudang kunci.
Dalam contoh di bawah ini, perhatikan bahwa jika database sudah dienkripsi dengan TDE, dan kunci
CONTOSO_KEY_BACKUPasimetris berbeda dari kunci asimetris TDE, cadangan akan dienkripsi oleh kunci asimetris TDE danCONTOSO_KEY_BACKUP. Instans SQL Server target akan memerlukan kedua kunci untuk mendekripsi cadangan.USE master; BACKUP DATABASE [DATABASE_TO_BACKUP] TO DISK = N'[PATH TO BACKUP FILE]' WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, ENCRYPTION(ALGORITHM = AES_256, SERVER ASYMMETRIC KEY = [CONTOSO_KEY_BACKUP]); GOPulihkan Database
Untuk memulihkan cadangan database yang dienkripsi dengan TDE, instans SQL Server target harus terlebih dahulu memiliki salinan kunci Key Vault asimetris yang digunakan untuk enkripsi. Ini adalah bagaimana hal ini akan dicapai:
Jika kunci asimetris asli yang digunakan untuk TDE tidak lagi berada di Key Vault, pulihkan cadangan kunci Key Vault atau impor kembali kunci dari HSM lokal. Penting: Agar thumbprint kunci cocok dengan thumbprint yang direkam pada cadangan database, kunci harus diberi nama nama kunci Key Vault yang sama seperti namanya semula.
Terapkan Langkah 1 dan 2 pada instans SQL Server target.
Setelah instans SQL Server target memiliki akses ke kunci asimetris yang digunakan untuk mengenkripsi cadangan, pulihkan database di server.
Contoh kode pemulihan:
RESTORE DATABASE [DATABASE_TO_BACKUP] FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE; GOUntuk informasi selengkapnya tentang opsi pencadangan, lihat BACKUP (Transact-SQL).
Enkripsi Tingkat Kolom dengan Menggunakan Kunci Asimetris dari Key Vault
Contoh berikut membuat kunci simetris yang dilindungi oleh kunci asimetris di brankas kunci. Kemudian kunci simetris digunakan untuk mengenkripsi data dalam database.
Penting
Anda tidak dapat menggunakan kunci asimetris yang sama untuk enkripsi tingkat kolom jika Anda telah menggunakan kunci tersebut untuk enkripsi cadangan.
Contoh ini menggunakan kunci asimetris CONTOSO_KEY_COLUMNS yang disimpan di brankas kunci, yang dapat diimpor atau dibuat sebelumnya, seperti yang dijelaskan di Langkah 3, bagian 3 Langkah Penyiapan untuk Manajemen Kunci yang Dapat Diperluas Menggunakan Azure Key Vault. Untuk menggunakan kunci asimetris ini dalam ContosoDatabase database, Anda harus menjalankan CREATE ASYMMETRIC KEY pernyataan lagi, untuk menyediakan ContosoDatabase database dengan referensi ke kunci.
USE [ContosoDatabase];
GO
-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY_COLUMNS
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoDevRSAKey2',
CREATION_DISPOSITION = OPEN_EXISTING;
-- Create the data encryption key.
-- The data encryption key can be created using any SQL Server
-- supported algorithm or key length.
-- The DEK will be protected by the asymmetric key in the key vault
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;
DECLARE @DATA VARBINARY(MAX);
--Open the symmetric key for use in this session
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;
--Encrypt syntax
SELECT @DATA = ENCRYPTBYKEY
(
KEY_GUID('DATA_ENCRYPTION_KEY'),
CONVERT(VARBINARY,'Plain text data to encrypt')
);
-- Decrypt syntax
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));
--Close the symmetric key
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;
Lihat Juga
Langkah-langkah Penyiapan untuk Manajemen Kunci yang Dapat Diperluas Menggunakan Azure Key Vault
Manajemen Kunci yang Dapat Diperluas Menggunakan Azure Key Vault
Opsi Konfigurasi Server yang diaktifkan oleh penyedia EKM
Pemeliharaan & Pemecahan Masalah SQL Server Connector