Enkripsi data transparan (TDE)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Enkripsi data transparan (TDE) mengenkripsi file data SQL Server, Azure SQL Database, dan Azure Synapse Analytics. Enkripsi ini dikenal sebagai mengenkripsi data tidak aktif.

Untuk membantu mengamankan database pengguna, Anda dapat mengambil tindakan pencegahan seperti:

  • Merancang sistem yang aman.
  • Mengenkripsi aset rahasia.
  • Membangun firewall di sekitar server database.

Namun, pihak berbahaya yang mencuri media fisik seperti drive atau rekaman cadangan dapat memulihkan atau melampirkan database dan menelusuri datanya.

Salah satu solusinya adalah mengenkripsi data sensitif dalam database dan menggunakan sertifikat untuk melindungi kunci yang mengenkripsi data. Solusi ini mencegah siapa pun tanpa kunci menggunakan data. Tetapi Anda harus merencanakan perlindungan semacam ini terlebih dahulu.

TDE melakukan enkripsi I/O real time dan dekripsi data dan file log. Enkripsi menggunakan kunci enkripsi database (DEK). Catatan boot database menyimpan kunci untuk ketersediaan selama pemulihan. DEK adalah kunci konten, dan diamankan oleh sertifikat yang disimpan database server master atau oleh kunci asimetris yang dilindungi modul EKM.

TDE melindungi data tidak aktif, yang merupakan file data dan log. Ini memungkinkan Anda mengikuti banyak undang-undang, peraturan, dan pedoman yang ditetapkan di berbagai industri. Kemampuan ini memungkinkan pengembang perangkat lunak mengenkripsi data dengan menggunakan algoritma enkripsi AES dan 3DES tanpa mengubah aplikasi yang ada.

Catatan

TDE tidak tersedia untuk database sistem. Ini tidak dapat digunakan untuk mengenkripsi master, , modelatau msdb. tempdb dienkripsi secara otomatis saat database pengguna mengaktifkan TDE, tetapi tidak dapat dienkripsi secara langsung.

TDE tidak menyediakan enkripsi di seluruh saluran komunikasi. Untuk informasi selengkapnya tentang cara mengenkripsi data di seluruh saluran komunikasi, lihat Mengonfigurasi Mesin Database SQL Server untuk mengenkripsi koneksi.

Topik terkait:

Tentang TDE

Enkripsi file database dilakukan di tingkat halaman. Halaman dalam database terenkripsi dienkripsi sebelum ditulis ke disk dan didekripsi saat dibaca ke dalam memori. TDE tidak meningkatkan ukuran database terenkripsi.

Informasi yang berlaku untuk SQL Database

Saat Anda menggunakan TDE dengan Azure SQL Database, SQL Database secara otomatis membuat sertifikat tingkat server yang master disimpan dalam database. Untuk memindahkan database TDE di SQL Database, Anda tidak perlu mendekripsi database untuk operasi pemindahan. Untuk informasi selengkapnya tentang menggunakan TDE dengan SQL Database, lihat enkripsi data transparan dengan Azure SQL Database.

Informasi yang berlaku untuk SQL Server

Setelah mengamankan database, Anda bisa memulihkannya dengan menggunakan sertifikat yang benar. Untuk informasi selengkapnya tentang sertifikat, lihat Sertifikat SQL Server dan Kunci Asimetris.

Setelah Anda mengaktifkan TDE, segera cadangkan sertifikat dan kunci privat terkait. Jika sertifikat menjadi tidak tersedia, atau jika Anda memulihkan atau melampirkan database di server lain, Anda memerlukan cadangan sertifikat dan kunci privat. Jika tidak, Anda tidak dapat membuka database. Sertifikat yang disimpan dalam database sistem mandiri juga harus dicadangkan.

Pertahankan sertifikat enkripsi meskipun Anda telah menonaktifkan TDE pada database. Meskipun database tidak dienkripsi, bagian dari log transaksi mungkin tetap dilindungi. Anda juga mungkin memerlukan sertifikat untuk beberapa operasi hingga Anda melakukan pencadangan database lengkap.

Anda masih dapat menggunakan sertifikat yang melebihi tanggal kedaluwarsanya untuk mengenkripsi dan mendekripsi data dengan TDE.

Hierarki enkripsi

Windows Data Protection API (DPAPI) berada di akar pohon enkripsi, mengamankan hierarki kunci di tingkat komputer, dan digunakan untuk melindungi kunci master layanan (SMK) untuk instans server database. SMK melindungi kunci master database (DMK), yang disimpan di tingkat database pengguna dan melindungi sertifikat dan kunci asimetris. Kunci ini, pada gilirannya, melindungi kunci konten, yang melindungi data. TDE menggunakan hierarki serupa ke sertifikat. Saat Anda menggunakan TDE, DMK dan sertifikat harus disimpan dalam master database. Kunci baru, hanya digunakan untuk TDE dan disebut sebagai kunci enkripsi database (DEK), dibuat dan disimpan dalam database pengguna.

Ilustrasi berikut menunjukkan arsitektur enkripsi TDE. Hanya item tingkat database (kunci enkripsi database dan ALTER DATABASE bagian) yang dapat dikonfigurasi pengguna saat Anda menggunakan TDE di SQL Database.

Diagram showing the transparent data encryption architecture.

Aktifkan TDE

Untuk menggunakan TDE, ikuti langkah-langkah ini.

Berlaku untuk: SQL Server.

  1. Buat kunci master.
  2. Membuat atau mendapatkan sertifikat yang dilindungi oleh kunci master.
  3. Buat kunci enkripsi database dan lindungi dengan menggunakan sertifikat.
  4. Atur database untuk menggunakan enkripsi.

Contoh berikut menunjukkan enkripsi dan dekripsi AdventureWorks2022 database menggunakan sertifikat bernama MyServerCert yang diinstal di server.

USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';
GO
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';
GO
USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2022
SET ENCRYPTION ON;
GO

Operasi enkripsi dan dekripsi dijadwalkan pada utas latar belakang oleh SQL Server. Untuk melihat status operasi ini, gunakan tampilan katalog dan tampilan manajemen dinamis dalam tabel yang muncul nanti di artikel ini.

Perhatian

File cadangan untuk database yang mengaktifkan TDE juga dienkripsi dengan DEK. Akibatnya, ketika Anda memulihkan cadangan ini, sertifikat yang melindungi DEK harus tersedia. Oleh karena itu, selain mencadangkan database, pastikan untuk mempertahankan cadangan sertifikat server. Hasil kehilangan data jika sertifikat tidak lagi tersedia.

Untuk informasi selengkapnya, lihat Sertifikat SQL Server dan Kunci Asimetris.

Perintah dan fungsi

Agar pernyataan berikut menerima sertifikat TDE, gunakan kunci master database untuk mengenkripsinya. Jika Anda mengenkripsinya dengan kata sandi saja, pernyataan menolaknya sebagai enkripsi.

Penting

Jika Anda membuat kata sandi sertifikat dilindungi setelah TDE menggunakannya, database menjadi tidak dapat diakses setelah memulai ulang.

Tabel berikut ini menyediakan tautan dan penjelasan tentang perintah dan fungsi TDE:

Perintah atau fungsi Tujuan
MEMBUAT KUNCI ENKRIPSI DATABASE Membuat kunci yang mengenkripsi database
MENGUBAH KUNCI ENKRIPSI DATABASE Mengubah kunci yang mengenkripsi database
DROP DATABASE ENCRYPTION KEY Menghapus kunci yang mengenkripsi database
UBAH Opsi SET DATABASE Menjelaskan ALTER DATABASE opsi yang digunakan untuk mengaktifkan TDE

Tampilan katalog dan tampilan manajemen dinamis

Tabel berikut ini memperlihatkan tampilan katalog TDE dan tampilan manajemen dinamis (DMV).

Tampilan katalog atau tampilan manajemen dinamis Tujuan
sys.databases Tampilan katalog yang menampilkan informasi database
sys.certificates Tampilan katalog yang memperlihatkan sertifikat dalam database
sys.dm_database_encryption_keys Tampilan manajemen dinamis yang menyediakan informasi tentang kunci enkripsi database dan status enkripsi

Izin

Setiap fitur dan perintah TDE memiliki persyaratan izin individual seperti yang dijelaskan dalam tabel yang ditunjukkan sebelumnya.

Melihat metadata yang terlibat dengan TDE memerlukan izin LIHAT DEFINISI pada sertifikat.

Pertimbangan

Saat pemindaian enkripsi ulang untuk operasi enkripsi database sedang berlangsung, operasi pemeliharaan ke database dinonaktifkan. Anda dapat menggunakan pengaturan mode pengguna tunggal untuk database guna melakukan operasi pemeliharaan. Untuk informasi selengkapnya, lihat Mengatur database ke mode pengguna tunggal.

sys.dm_database_encryption_keys Gunakan tampilan manajemen dinamis untuk menemukan status enkripsi database. Untuk informasi selengkapnya, lihat bagian Tampilan katalog dan tampilan manajemen dinamis sebelumnya di artikel ini.

Di TDE, semua file dan grup file dalam database dienkripsi. Jika ada grup file dalam database yang ditandai READ ONLY, operasi enkripsi database gagal.

Jika Anda menggunakan database dalam pencerminan database atau pengiriman log, kedua database dienkripsi. Transaksi log dienkripsi saat dikirim di antara keduanya.

Penting

Indeks teks lengkap dienkripsi saat database diatur untuk enkripsi. Indeks seperti itu yang dibuat di SQL Server 2005 (9.x) dan versi yang lebih lama, diimpor ke dalam database oleh SQL Server 2008 (10.0.x) dan versi yang lebih baru, dan dienkripsi oleh TDE.

Tip

Untuk memantau perubahan status TDE database, gunakan Audit SQL Server atau audit Azure SQL Database. Untuk SQL Server, TDE dilacak di bawah grup DATABASE_OBJECT_CHANGE_GROUPtindakan audit , yang dapat Anda temukan di Grup dan Tindakan Tindakan Audit SQL Server.

Pembatasan

Operasi berikut tidak diizinkan selama enkripsi database awal, perubahan kunci, atau dekripsi database:

  • Menjatuhkan file dari grup file dalam database
  • Menjatuhkan database
  • Mengambil database offline
  • Mencopot database
  • Transisi database atau grup file ke status READ ONLY

Operasi berikut tidak diizinkan selama CREATE DATABASE ENCRYPTION KEYpernyataan , , ALTER DATABASE ENCRYPTION KEYDROP DATABASE ENCRYPTION KEY, dan ALTER DATABASE...SET ENCRYPTION :

  • Menjatuhkan file dari grup file dalam database
  • Menjatuhkan database
  • Mengambil database offline
  • Mencopot database
  • Transisi database atau grup file ke status READ ONLY
  • ALTER DATABASE Menggunakan perintah
  • Memulai database atau pencadangan file database
  • Memulai pemulihan database atau file database
  • Membuat rekam jepret

Operasi atau kondisi berikut mencegah CREATE DATABASE ENCRYPTION KEYpernyataan , , ALTER DATABASE ENCRYPTION KEYDROP DATABASE ENCRYPTION KEY, dan ALTER DATABASE...SET ENCRYPTION :

  • Database bersifat baca-saja atau memiliki grup file baca-saja.
  • Perintah ALTER DATABASE sedang berjalan.
  • Pencadangan data sedang berjalan.
  • Database berada dalam kondisi offline atau pemulihan.
  • Rekam jepret sedang berlangsung.
  • Tugas pemeliharaan database sedang berjalan.

Saat file database dibuat, inisialisasi file instan tidak tersedia saat TDE diaktifkan.

Untuk mengenkripsi DEK dengan kunci asimetris, kunci asimetris harus berada di penyedia manajemen kunci yang dapat diperluas.

Pemindaian TDE

Untuk mengaktifkan TDE pada database, SQL Server harus melakukan pemindaian enkripsi. Pemindaian membaca setiap halaman dari file data ke dalam kumpulan buffer lalu menulis halaman terenkripsi kembali ke disk.

Untuk memberi Anda kontrol lebih besar atas pemindaian enkripsi, SQL Server 2019 (15.x) memperkenalkan pemindaian TDE, yang memiliki sintaks tangguhan dan lanjutkan. Anda dapat menjeda pemindaian saat beban kerja pada sistem berat atau selama jam penting bisnis dan kemudian melanjutkan pemindaian nanti.

Gunakan sintaks berikut untuk menjeda pemindaian enkripsi TDE:

ALTER DATABASE <db_name> SET ENCRYPTION SUSPEND;

Demikian pula, gunakan sintaks berikut untuk melanjutkan pemindaian enkripsi TDE:

ALTER DATABASE <db_name> SET ENCRYPTION RESUME;

Kolom encryption_scan_state telah ditambahkan ke sys.dm_database_encryption_keys tampilan manajemen dinamis. Ini menunjukkan status pemindaian enkripsi saat ini. Ada juga kolom baru yang disebut encryption_scan_modify_date, yang berisi tanggal dan waktu perubahan status pemindaian enkripsi terakhir.

Jika instans SQL Server dimulai ulang saat pemindaian enkripsinya ditangguhkan, pesan dicatat dalam log kesalahan selama startup. Pesan menunjukkan bahwa pemindaian yang ada telah dijeda.

Penting

Fitur menangguhkan dan Melanjutkan pemindaian TDE saat ini tidak tersedia di Azure SQL Database, Azure SQL Managed Instance, dan Azure Synapse Analytics.

TDE dan log transaksi

TDE melindungi file data dan file log saat tidak aktif. Mengenkripsi seluruh database setelah mengaktifkan TDE pada database yang tidak terenkripsi adalah operasi data yang dapat diukur dan waktu yang diperlukan tergantung pada sumber daya sistem tempat database ini berjalan. DMV sys.dm_database_encryption_keys dapat digunakan untuk menentukan status enkripsi database.

Ketika TDE diaktifkan, Mesin Database memaksa pembuatan log transaksi baru, yang akan dienkripsi oleh kunci enkripsi database. Log apa pun yang dihasilkan oleh transaksi sebelumnya atau transaksi jangka panjang saat ini yang terjalin antara perubahan status TDE tidak dienkripsi.

Log transaksi dapat dipantau menggunakan sys.dm_db_log_info DMV, yang juga menunjukkan apakah file log dienkripsi atau tidak menggunakan vlf_encryptor_thumbprint kolom yang tersedia di Azure SQL, dan SQL Server 2019 (15.x) dan versi yang lebih baru. Untuk menemukan status enkripsi file log menggunakan encryption_state kolom dalam sys.dm_database_encryption_keys tampilan, berikut adalah contoh kueri:

USE AdventureWorks2022;
GO
/* The value 3 represents an encrypted state
   on the database and transaction logs. */
SELECT *
FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;
GO

Untuk informasi selengkapnya tentang arsitektur file log SQL Server, lihat Log transaksi.

Sebelum DEK berubah, DEK sebelumnya mengenkripsi semua data yang ditulis ke log transaksi.

Jika Anda mengubah DEK dua kali, Anda harus melakukan pencadangan log sebelum Anda dapat mengubah DEK lagi.

TDE dan database sistem tempdb

Database tempdb sistem dienkripsi jika ada database lain pada instans SQL Server yang dienkripsi dengan menggunakan TDE. Enkripsi ini mungkin memiliki efek performa untuk database yang tidak terenkripsi pada instans SQL Server yang sama. Untuk informasi selengkapnya tentang tempdb database sistem, lihat Database tempdb.

TDE dan replikasi

Replikasi tidak secara otomatis mereplikasi data dari database berkemampuan TDE dalam bentuk terenkripsi. Aktifkan TDE secara terpisah jika Anda ingin melindungi database distribusi dan pelanggan.

Replikasi rekam jepret dapat menyimpan data dalam file perantara yang tidak terenkripsi seperti file BCP. Distribusi data awal untuk replikasi transaksional dan penggabungan juga dapat. Selama replikasi tersebut, Anda dapat mengaktifkan enkripsi untuk melindungi saluran komunikasi.

Untuk informasi selengkapnya, lihat Mengonfigurasi Mesin Database SQL Server untuk mengenkripsi koneksi.

TDE dan grup ketersediaan

Anda bisa menambahkan database terenkripsi ke grup ketersediaan AlwaysOn.

Untuk mengenkripsi database yang merupakan bagian dari grup ketersediaan, buat kunci master dan sertifikat, atau kunci asimetris (EKM) pada semua replika sekunder sebelum membuat kunci enkripsi database pada replika utama.

Jika sertifikat digunakan untuk melindungi DEK, cadangkan sertifikat yang dibuat pada replika utama, lalu buat sertifikat dari file pada semua replika sekunder sebelum membuat DEK pada replika utama.

Data TDE dan FILESTREAM

Data FILESTREAM tidak dienkripsi, bahkan saat Anda mengaktifkan TDE.

TDE dan cadangan

Sertifikat umumnya digunakan dalam Enkripsi Data Transparan untuk melindungi DEK. Sertifikat harus dibuat dalam master database. File cadangan database yang mengaktifkan TDE, juga dienkripsi dengan menggunakan DEK. Akibatnya, ketika Anda memulihkan dari cadangan ini, sertifikat yang melindungi DEK harus tersedia. Ini berarti bahwa selain mencadangkan database, Anda harus mempertahankan cadangan sertifikat server untuk mencegah kehilangan data. Kehilangan data terjadi jika sertifikat tidak lagi tersedia.

Hapus TDE

Hapus enkripsi dari database dengan menggunakan ALTER DATABASE pernyataan .

ALTER DATABASE <db_name> SET ENCRYPTION OFF;

Untuk melihat status database, gunakan tampilan manajemen dinamis sys.dm_database_encryption_keys .

Tunggu dekripsi selesai sebelum menghapus DEK dengan menggunakan DROP DATABASE ENCRYPTION KEY.

Penting

Cadangkan kunci master dan sertifikat yang digunakan untuk TDE ke lokasi yang aman. Kunci master dan sertifikat diperlukan untuk memulihkan cadangan yang diambil ketika database dienkripsi dengan TDE. Setelah Anda menghapus DEK, ambil cadangan log diikuti dengan cadangan penuh baru dari database yang didekripsi.

Ekstensi TDE dan kumpulan buffer

Saat Anda mengenkripsi database menggunakan TDE, file yang terkait dengan ekstensi kumpulan buffer (BPE) tidak dienkripsi. Untuk file tersebut, gunakan alat enkripsi seperti BitLocker atau EFS di tingkat sistem file.

TDE dan OLTP Dalam Memori

Anda dapat mengaktifkan TDE pada database yang memiliki objek OLTP Dalam Memori. Di SQL Server 2016 (13.x) dan Azure SQL Database, rekaman log dan data OLTP Dalam Memori dienkripsi jika Anda mengaktifkan TDE. Di SQL Server 2014 (12.x), catatan log OLTP Dalam Memori dienkripsi jika Anda mengaktifkan TDE, tetapi file dalam MEMORY_OPTIMIZED_DATA grup file tidak terenkripsi.

Panduan tentang mengelola sertifikat yang digunakan dalam TDE

Anda harus mencadangkan sertifikat dan kunci master database saat database diaktifkan untuk TDE dan digunakan dalam pengiriman log atau pencerminan database. Sertifikat yang disimpan dalam database sistem mandiri juga harus dicadangkan.

Sertifikat yang digunakan untuk melindungi DEK tidak boleh dihilangkan master dari database. Melakukannya menyebabkan database terenkripsi menjadi tidak dapat diakses.

Pesan seperti berikut ini (kesalahan 33091) dimunculkan setelah mengeksekusi CREATE DATABASE ENCRYPTION KEY jika sertifikat yang digunakan dalam perintah belum dicadangkan.

Peringatan

Sertifikat yang digunakan untuk mengenkripsi kunci enkripsi database belum dicadangkan. Anda harus segera mencadangkan sertifikat dan kunci privat yang terkait dengan sertifikat. Jika sertifikat menjadi tidak tersedia atau jika Anda harus memulihkan atau melampirkan database di server lain, Anda harus memiliki cadangan sertifikat dan kunci privat atau Anda tidak akan dapat membuka database.

Kueri berikut dapat digunakan untuk mengidentifikasi sertifikat yang digunakan dalam TDE yang belum dicadangkan sejak dibuat.

SELECT pvt_key_last_backup_date,
    Db_name(dek.database_id) AS encrypteddatabase,
    c.name AS Certificate_Name
FROM sys.certificates c
INNER JOIN sys.dm_database_encryption_keys dek
    ON c.thumbprint = dek.encryptor_thumbprint;

Jika kolom pvt_key_last_backup_date adalah NULL, database yang sesuai dengan baris tersebut telah diaktifkan untuk TDE, tetapi sertifikat yang digunakan untuk melindungi DEK-nya belum dicadangkan. Untuk informasi selengkapnya tentang mencadangkan sertifikat, lihat SERTIFIKAT CADANGAN.