Enkripsi data transparan (TDE)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics Analytics yesPlatform 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, Anda dapat melakukan tindakan pencegahan seperti:

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

Tetapi pihak jahat yang mencuri media fisik seperti drive atau kaset 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. Tapi 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 simetris. Ini diamankan oleh sertifikat yang disimpan database master server 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.

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 untuk Anda sertifikat tingkat server yang disimpan dalam database master. 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.

Pertahankan sertifikat enkripsi meskipun Anda telah menonaktifkan TDE pada database. Meskipun database tidak dienkripsi, bagian dari log transaksi mungkin tetap terlindungi. Anda mungkin juga 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

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

The Transparent Database 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 AdventureWorks2012 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 AdventureWorks2012;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2012
SET ENCRYPTION ON;
GO

Operasi enkripsi dan dekripsi dijadwalkan pada utas latar belakang dengan 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 kunci enkripsi database. Akibatnya, ketika Anda memulihkan cadangan ini, sertifikat yang melindungi kunci enkripsi database 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 terlindungi setelah TDE menggunakannya, database menjadi tidak dapat diakses setelah dimulai ulang.

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

Perintah atau fungsi Tujuan
MEMBUAT KUNCI ENKRIPSI DATABASE (SQL Transact) Membuat kunci yang mengenkripsi database
ALTER DATABASE ENCRYPTION KEY (Transact-SQL) Mengubah kunci yang mengenkripsi database
HILANGKAN KUNCI ENKRIPSI DATABASE (SQL Transact) Menghapus kunci yang mengenkripsi database
UBAH Opsi SET DATABASE (SQL Bertransaksi) Menjelaskan opsi UBAH DATABASE yang digunakan untuk mengaktifkan TDE

Tampilan katalog dan tampilan manajemen dinamis

Tabel berikut ini memperlihatkan tampilan katalog TDE dan tampilan manajemen dinamis.

Tampilan katalog atau tampilan manajemen dinamis Tujuan
sys.databases (T-SQL) Tampilan katalog yang menampilkan informasi database
sys.certificates (Transact-SQL) Tampilan katalog yang memperlihatkan sertifikat dalam database
sys.dm_database_encryption_keys (SQL Bertransaksi) 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.

Gunakan tampilan manajemen dinamis sys.dm_database_encryption_keys 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 BACA SAJA, operasi enkripsi database gagal.

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

Penting

Indeks teks lengkap dienkripsi saat database diatur untuk enkripsi. Indeks yang dibuat dalam versi SQL Server yang lebih lama dari SQL Server 2008 diimpor ke dalam database oleh SQL Server 2008 atau yang lebih baru dan dienkripsi oleh TDE.

Tip

Untuk memantau perubahan status TDE database, gunakan audit SQL Server atau audit SQL Database. Untuk SQL Server, TDE dilacak di bawah grup tindakan audit DATABASE_CHANGE_GROUP, 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 BACA SAJA

Operasi berikut ini tidak diizinkan selama CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY, dan ALTER DATABASE... SET pernyataan ENKRIPSI:

  • Menjatuhkan file dari grup file dalam database

  • Menjatuhkan database

  • Mengambil database offline

  • Mencopot database

  • Transisi database atau grup file ke status BACA SAJA

  • Menggunakan perintah ALTER DATABASE

  • Memulai pencadangan database atau file database

  • Memulai pemulihan database atau file database

  • Membuat rekam jepret

Operasi atau kondisi berikut mencegah CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY, dan ALTER DATABASE... SET pernyataan ENKRIPSI:

  • 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 kunci enkripsi database 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 lalu 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 tampilan manajemen dinamis sys.dm_database_encryption_keys. 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 saat startup. Pesan menunjukkan bahwa pemindaian yang ada telah dijeda.

Penting

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

TDE dan log transaksi

Membiarkan database menggunakan TDE menghapus bagian yang tersisa dari log transaksi virtual saat ini. Penghapusan memaksa pembuatan log transaksi berikutnya. Perilaku ini menjamin bahwa tidak ada teks yang jelas yang tersisa dalam log setelah database diatur untuk enkripsi.

Untuk menemukan status enkripsi file log, lihat encryption_state kolom dalam sys.dm_database_encryption_keys tampilan, seperti dalam contoh ini:

USE AdventureWorks2012;
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 (SQL Server).

Sebelum kunci enkripsi database berubah, kunci enkripsi database sebelumnya mengenkripsi semua data yang ditulis ke log transaksi.

Jika Anda mengubah kunci enkripsi database dua kali, Anda harus melakukan pencadangan log sebelum Anda dapat mengubah kunci enkripsi database lagi.

TDE dan database sistem tempdb

Database sistem tempdb dienkripsi jika ada database lain pada instans SQL Server 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 database sistem tempdb , 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 Mengaktifkan Koneksi Terenkripsi ke Mesin Database (Pengelola Konfigurasi SQL Server).

TDE dan AlwaysOn

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 kunci enkripsi database (DEK), cadangkan sertifikat yang dibuat pada replika utama, lalu buat sertifikat dari file di semua replika sekunder sebelum membuat kunci enkripsi database pada replika utama.

Data TDE dan FILESTREAM

Data FILESTREAM tidak dienkripsi bahkan saat Anda mengaktifkan TDE.

Hapus TDE

Hapus enkripsi dari database dengan menggunakan ALTER DATABASE pernyataan .

ALTER DATABASE <db_name> SET ENCRYPTION OFF;

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

Tunggu hingga dekripsi selesai sebelum menghapus kunci enkripsi database 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 kunci enkripsi database, ambil cadangan log diikuti dengan cadangan lengkap baru dari database yang didekripsi.

Ekstensi kumpulan TDE dan 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 In-Memory

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

Lihat juga