Aktifkan Transparent Data Encryption di SQL Server
SQL Server punya salah satu feature buat proteksi data namanya Transparent Data Encryption. Ini hanya ada di SQL Server Enterprise Edition. Jadi kalau mau pake buat di server production mesti punya license enterprise edition dulu. Kalau buat belajar atau buat development aja bisa pake yang Developer Edition sih.
Feature ini buat enkripsi data at-rest. Maksudnya hanya data yang sudah kesimpen di disk aja yang di encrypt, jadi kayak data filenya, atau backup file dari database, itu yang akan ke encrypt.
Nah, kebetulan di tempat kerja pada rame bahas mengenai perlindungan data pribadi, jadi semua database yang ada nyimpen data pribadi pengguna itu mesti di enkripsi, minimal ekripsi at-rest. Makanya Transparent Data Encryption atau TDE nya SQL Server ini cocok lah.
Langsung aja buka SQL Server Management Studio (SSMS), connect ke instance yang ada database yang mau di encrypt trus ikutin langkah-langkah di bawah:
- Buat dulu master keynya di database master
Perintah di atas untuk bikin master key nya dulu,
USE [master] GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'password-master-keynya' GO - Buat certificatenya, disini kita pake self-signed certificate aja biar simple. Kalau mau pake certificate yang di dapat dari CA bisa juga tapi saya gak punya certificatenya
Jadi perintah ini buat create certificate dengan nama
USE [master] GO CREATE CERTIFICATE [CertificateTDE] WITH SUBJECT = N'Certificate TDE Saya', EXPIRY_DATE = '2026-12-31' GOCertificateTDE, trus subjectnyaCertificate TDE Sayadan expired datenya tanggal31 Desember 2026, ini bisa disesuaikan dengan kebutuhan - Lanjut buat database encryption key
Disini kita buat encryption key di database
USE [DatabaseName] GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE [CertificateTDE] GODatabaseNamepake certificate dengan nama yang dibuat sebelumnya - Lanjut, aktifin enkripsi di databasenya
USE [master] GO ALTER DATABASE [DatabaseName] SEt ENCRYPTION ON GO - Bisa cek status enkripsinya pake query di bawah
Kalau databasenya sudah selesai terenkripsi, encryption_state = 3
SELECT db.name, db.is_encrypted, dm.encryption_state, dm.key_algorithm, dm.key_length FROM sys.databases db JOIN sys.dm_database_encryption_keys dm ON db.database_id = dm.database_id WHERE db.name = 'DatabaseName' GO - Udah selesai, sekarang semua data file dari database ini akan terenkripsi, kalau databasenya di backup, backup filenya juga terenkripsi. Dan gak akan bisa di restore ke instance lain kalau certificatenya gak ikut ke restore.
Silahkan tinggalin komentar kalau ada yang mau ditanyain. Terima kasih.