Biasanya kita punya kekhawatiran jika database kita tercuri oleh
orang lain kemudian dapat di restore di Server Instance yang lain.Sejak
versi SQL Server 2008 sudah tersedia sebuah fitur untuk dapat melakukan
enkripsi terhadap database yaitu dengan menggunakan Transparent Data Encryption (TDE). Fitur
ini hanya bisa ditemukan pada SQL Server versi 2008 keatas dan hanya
untuk edisi Data Center atau Enterprise. Enkripsi dilakukan pada level
file mdf dan log, sehingga jika suatu waktu media penyimpanan database
tersebut hilang tercuri, maka database tersebut tidak dapat di restore
tanpa adanya certificate untuk membukanya.
Arsitektur dari mekanisme TDE ini adalah sb:
Enkripsi yang digunakan oleh TDE menggunakan algoritma AES dan 3DES. proses
enkripsi dan dekripsinya terjadi secara background oleh SQL Server.
Dalam menerapkan TDE ini pun tidak ada perubahan yang perlu dilakukan di
sisi aplikasi, karena semua berlangsung di SQL Server.
Mari kita mulai bagaimana menerapkan enkripsi database, dalam demo ini saya menggunakan SQL Server 2014 Developer. pertama kita siapkan terlebih dahulu 1 buah database [TesTDE] dan 1 buah table Customers
Saat kita mengeksekusi TSQL diatas, akan ada peringatan sebagai berikut :
Untuk meyakinkan bahwa database TesTDE telah terenkripsi dapat kita lihat sebagai berikut
Demikian, semoga bermanfaat.
Arsitektur dari mekanisme TDE ini adalah sb:
Mari kita mulai bagaimana menerapkan enkripsi database, dalam demo ini saya menggunakan SQL Server 2014 Developer. pertama kita siapkan terlebih dahulu 1 buah database [TesTDE] dan 1 buah table Customers
USE master GO CREATE DATABASE [TesTDE] GO USE [TesTDE] GO CREATE TABLE [dbo].[Customers]( [Id] [int] NOT NULL, [Name] [nvarchar](50) NULL, [Address] [nvarchar](150) NULL, CONSTRAINT [PK_Customers] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] Go
Kemudian kita buat sebuah master key yang akan digunakan untuk proses enkripsi database nya.
USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Suherm4nBl0g'; GO CREATE CERTIFICATE TesTDEDbCert WITH SUBJECT = 'TesTDE_Db Certificate';
Selanjutnya kita siapkan sebuah Database Encryption Key. dalam proses ini juga kita menentukan jenis algorima enkripsi apa yang akan dalam mekanisme enkripsinya, disini saya mencontohkan menggunakan algoritma 3DES.
Saat kita mengeksekusi TSQL diatas, akan ada peringatan sebagai berikut :
Warning: The certificate used for encrypting the database encryption key has not been backed up. You should immediately back up the certificate and the private key associated with the certificate. If the certificate ever becomes unavailable or if you must restore or attach the database on another server, you must have backups of both the certificate and the private key or you will not be able to open the database.
Pada peringatan tampak jelas bahwa sangat direkomendasikan untuk melakukan backup terhadap Master Key. Ini untuk mengantisipasi jika kita ingin melakukan restore atau attach database ke instance server yang berbeda.
USE master; GO BACKUP CERTIFICATE TesTDEDbCert TO FILE = 'D:\TesTDEDbCert.cert';
kemudian langkah terakhir adalah mengaktivasi database TesTDE untuk di enkripsi
USE TesTDE; GO ALTER DATABASE TesTDE SET ENCRYPTION ON;
Perlu diingat, jika ini diterapkan pada database yang besar, maka akan dibutuhkan waktu yang lama untuk mengaktifkan enkripsi pada sebuah database karena seluruh data akan di enkripsi oleh SQL Server.
Untuk meyakinkan bahwa database TesTDE telah terenkripsi dapat kita lihat sebagai berikut
SELECT NAME, IS_ENCRYPTED FROM sys.databases;
Jika nanti database TesTDE bernilai 1 maka itu menunjukkan database tersebut terenkripsi.
Demikian, semoga bermanfaat.