Bagikan melalui


MEMBUAT KUNCI ENKRIPSI DATABASE (Transact-SQL)

Aplikasi ke:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

Membuat kunci enkripsi untuk mengenkripsi database secara transparan. Untuk informasi selengkapnya tentang transparent data encryption (TDE), lihat Transparent Data Encryption (TDE).

Transact-SQL konvensi sintaks

Sintaks

-- Syntax for SQL Server  

CREATE DATABASE ENCRYPTION KEY  
       WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }  
   ENCRYPTION BY SERVER   
    {  
        CERTIFICATE Encryptor_Name |  
        ASYMMETRIC KEY Encryptor_Name  
    }  
[ ; ]  
-- Syntax for Parallel Data Warehouse  

CREATE DATABASE ENCRYPTION KEY  
       WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }  
   ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name   
[ ; ]  

Argumen

DENGAN ALGORITMA = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
Menentukan algoritma enkripsi untuk kunci enkripsi.

Peringatan

Dimulai dengan SQL Server 2016, semua algoritma selain AES_128, AES_192, dan AES_256 tidak digunakan lagi. Untuk menggunakan algoritma yang lebih lama (tidak disarankan) Anda harus mengatur database ke tingkat kompatibilitas database 120 atau lebih rendah.

ENKRIPSI BERDASARKAN SERTIFIKAT SERVER Encryptor_Name
Menentukan nama enkripsi yang digunakan untuk mengenkripsi kunci enkripsi database.

ENCRYPTION BY SERVER ASYMMETRIC KEY Encryptor_Name Menentukan nama kunci asimetris yang digunakan untuk mengenkripsi kunci enkripsi database. Untuk mengenkripsi kunci enkripsi database dengan kunci asimetris, kunci asimetris harus berada di penyedia manajemen kunci yang dapat diperluas.

Keterangan

Kunci enkripsi database diperlukan sebelum database dapat dienkripsi dengan menggunakan enkripsi data transparan (TDE). Ketika database dienkripsi secara transparan, seluruh database dienkripsi pada tingkat file, tanpa modifikasi kode khusus. Sertifikat atau kunci asimetris yang mengenkripsi kunci enkripsi database harus terletak di master database sistem.

Sertifikat atau kunci asimetris yang digunakan untuk TDE terbatas pada ukuran kunci privat 3072 bit.

Pernyataan enkripsi database hanya diperbolehkan pada database pengguna.

Kunci enkripsi database tidak dapat diekspor dari database. Ini hanya tersedia untuk sistem, untuk pengguna yang memiliki izin penelusuran kesalahan di server, dan kepada pengguna yang memiliki akses ke sertifikat yang mengenkripsi dan mendekripsi kunci enkripsi database.

Kunci enkripsi database tidak harus diregenerasi saat pemilik database (dbo) diubah.

Kunci enkripsi database secara otomatis dibuat untuk database SQL Database. Anda tidak perlu membuat kunci menggunakan CREATE DATABASE ENCRYPTION KEY pernyataan .

Izin

Memerlukan izin CONTROL pada database dan izin LIHAT DEFINISI pada sertifikat atau kunci asimetris yang digunakan untuk mengenkripsi kunci enkripsi database.

Contoh

Untuk contoh tambahan menggunakan TDE, lihat Transparent Data Encryption (TDE), Enable TDE di SQL Server Menggunakan EKM, dan Extensible Key Management Menggunakan Azure Key Vault (SQL Server).

A. Membuat kunci enkripsi database

Contoh berikut membuat kunci enkripsi database dengan menggunakan AES_256 algoritma, dan melindungi kunci privat dengan sertifikat bernama MyServerCert.

USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO

B. Memulihkan database terenkripsi TDE ke instans yang berbeda

Untuk memulihkan database terenkripsi TDE ke instans SQL Server yang berbeda, Anda harus terlebih dahulu mengimpor sertifikat yang melindungi kunci enkripsi database. Cadangkan sertifikat dan kunci privatnya dari server sumber, lalu buat sertifikat pada instans target sebelum Anda memulihkan database.

Di server sumber, cadangkan sertifikat:

-- On the SOURCE server
USE master;
GO
BACKUP CERTIFICATE MyServerCert
TO FILE = 'C:\Backup\MyServerCert.cer'
WITH PRIVATE KEY (
    FILE = 'C:\Backup\MyServerCert.pvk',
    ENCRYPTION BY PASSWORD = '<strong_password>'
);
GO

Pada server target, buat sertifikat dari file cadangan, lalu pulihkan database:

-- On the TARGET server
USE master;
GO
CREATE CERTIFICATE MyServerCert
FROM FILE = 'C:\Backup\MyServerCert.cer'
WITH PRIVATE KEY (
    FILE = 'C:\Backup\MyServerCert.pvk',
    DECRYPTION BY PASSWORD = '<strong_password>'
);
GO

-- Now you can restore the TDE-encrypted database
RESTORE DATABASE AdventureWorks2022
FROM DISK = 'C:\Backup\AdventureWorks2022.bak'
WITH MOVE 'AdventureWorks2022_Data' TO 'D:\Data\AdventureWorks2022.mdf',
     MOVE 'AdventureWorks2022_Log' TO 'D:\Data\AdventureWorks2022.ldf';
GO

Penting

Sertifikat harus memiliki nama yang sama dan dibuat dari file cadangan yang sama. Jika sertifikat tidak cocok, pemulihan gagal dengan kesalahan kunci enkripsi.