Transparent Data Encryption (TDE)
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform 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
, , model
atau 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:
- Enkripsi data transparan untuk SQL Database, SQL Managed Instance, dan Azure Synapse Analytics
- Mulai menggunakan enkripsi data transparan (TDE) di Azure Synapse Analytics
- Memindahkan database yang dilindungi TDE ke SQL Server lain
- Mengaktifkan TDE di SQL Server Menggunakan EKM
- Menggunakan Konektor SQL Server dengan Fitur Enkripsi SQL
- Blog Keamanan SQL Server di TDE dengan FAQ
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.
Aktifkan TDE
Untuk menggunakan TDE, ikuti langkah-langkah ini.
Berlaku untuk: SQL Server.
- Buat kunci master.
- Membuat atau mendapatkan sertifikat yang dilindungi oleh kunci master.
- Buat kunci enkripsi database dan lindungi dengan menggunakan sertifikat.
- 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 |
OPSI UBAH 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_GROUP
tindakan audit , yang dapat Anda temukan di Grup dan Tindakan Tindakan Audit SQL Server.
Batasan
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 KEY
pernyataan , , ALTER DATABASE ENCRYPTION KEY
DROP 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 KEY
pernyataan , , ALTER DATABASE ENCRYPTION KEY
DROP 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.
Menghapus 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 .
Catatan
Saat proses enkripsi sedang berlangsung, ALTER DATABASE
pernyataan tidak diizinkan pada database. Hingga proses enkripsi selesai, Anda tidak dapat mulai mendekripsi database.
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 AS c
INNER JOIN sys.dm_database_encryption_keys AS 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.