October 2010 - Posts
Melanjutkan blog saya sebelumnya mengenai Encrypt Database Backup, berikut ini coba saya paparkan bagaiman merestore sebuah backup database pada database yang berada pada beda instance.
Untuk mempermudah penjelasan, Instance dimana database Toko yang sebenarnya berada kita sebut “Instance Asli”. Sedangkan Instance tempat kita akan melakukan proses restore kita sebut “Instance Restore”.
Pada Instance Restore pertama saya buat sebuah database Toko terlebih dahulu, setelah itu saya coba restore menggunakan hasil backup pada blog sebelumnya atau hasil backup dari “Instance Asli”. ternyata ketika saya coba restore (instance ini menggunakan SQL Server 2008 R2) timbul notifikasi error seperti dibawah ini. :

ternyata proses restore ini membutuhkan Server Certificate. Agar kita bisa melakukan tindakan restore ini, kita harus mendapatkan certificate dari “Instance Asli”. Langkahnya adalah kita harus bisa mengeksport certificate database Toko data “Instance Asli” ke database Toko “Instance Restore”.
Mari kita ke “Instance Asli” terlebih dahulu dan lakukan T-SQL ini :
USE master
GO
BACKUP CERTIFICATE TokoCert
TO FILE = 'E:\TokoCert_File.cer'
WITH PRIVATE KEY (FILE = 'E:\TokoCert_Key.pvk' ,
ENCRYPTION BY PASSWORD = 'P4ssw0rD' )
GO
Langkah ini menghasilkan 2 buah file yaitu 1 buah File Certificate dan 1 buah private key

Langkah selanjutnya adalah mengimport file certificate yang sudah terbentuk ke database toko yang ada di “Instance Restore”. Sebelum itu kita buat terlebih dahulu master key di “Instance Restore”. mari kita beralih ke “Instance Restore” dan jalankan T-SQL berikut :
USE master
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Restore_P4ssw0rd'
GO
untuk kebutuhan password dapat disesuaikan oleh anda.
Setelah itu kita create Certificate di database Toko yang ada di “Instance Resore” dgn menggunakan private key dan certificate file dari database Toko “Instance Asli” dengan menggunakan T-SQL berikut :
CREATE CERTIFICATE TokoCert
FROM FILE = 'E:\TokoCert_File.cer'
WITH PRIVATE KEY (FILE = 'E:\TokoCert_Key.pvk',
DECRYPTION BY PASSWORD = 'P4ssw0rD');
GO
Password yang digunakan adalah password pada saat menbuat certificate di “Instance Asli”.
Sekarang kita coba restore hasil backup database Toko “Instance Asli” ke database Toko yang ada di “Instance Restore” dan berhasil.

Demikian, semoga bermanfaat.
Hasil Backup suatu database dapat dengan mudah untuk bisa di restore di engine SQL Server lain manapun. Tentunya hal ini sangat berbahaya jika hasil backup yang kita hasilkan tercuri atau di copy oleh lawan bisnis kita.
Namun sejak versi SQL Server 2008 telah tersedia sebuah fitur “Transparent Data Encryption” yang dapat membantu kita untuk dapat mengenkripsi hasil backup dari suatu database.
berikut ini adalah langkah-langkah untuk menggunakan “Transparent Data Encryption” di SQL Server 2008.
pertama saya coba siapkan terlebih dahulu database Toko sebagai sample kecil
USE master
GO
CREATE DATABASE Toko
GO
ALTER DATABASE Toko SET COMPATIBILITY_LEVEL = 100
GO
USE Toko
GO
CREATE TABLE dbo.Sales_Product(
fld1 char(50) NULL,
fld2 char(50) NULL
) ON [PRIMARY]
GO
Pertama kita buat terlebih dahulu database masterkey di master database :
USE master
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P4ssw0rD'
Setelah itu kita buat server-based certificate yang nantinya akan kita gunakan untuk mengenkripsi database yang kita inginkan, kita pilih saja database Toko yang sudah kita siapkan sebelumnya.
CREATE CERTIFICATE TokoCert
WITH SUBJECT = 'Certificate for Toko database'
Setelah itu kita buat “Database Encryption Key” untuk database Toko tersebut dengan T-SQL berikut :
USE Toko
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE TokoCert
GO
Setelah itu kita aktifkan Enkripsi pada level database Toko
ALTER DATABASE toko
SET ENCRYPTION ON
Sekarang database kita sudah menggunakan TDE, mari kita coba backup database Toko
BACKUP DATABASE Toko
TO DISK = 'E:\Toko.bak'
WITH INIT, STATS = 10
Kalo kita perhatikan, waktu backup database kita sekarang menjadi lebih lama dibanding ketika database belum di Enkripsi. Saat ini hasil backup database Toko telah terenkripsi
Demikian selamat mencoba.
Sambil menunggu waktu berbuka puasa, saya coba isi untuk bereksplorasi mengenai pengamanan data menggunakan Hash Algorithms di SQL Server.
SQL Server yang saya gunakan saat ini adalah SQL Server 2008, jadi artikel ini belum saya coba di SQL Server versi yang lain.
Sama-sama kita ketahui bahwa ada 2 bentuk untuk melakukan Enkripsi. pertama adalah Enkripsi satu arah, yang kedua adalah Enkripsi dua arah. Enkripsi satu arah pemahaman paling simplenya adalah begitu kita melakukan enkripsi terhadap suatu data, maka sangat tidak mungkin untuk bisa melakukan proses dekripsi. Sedangkan Enkripsi dua arah bisa melakukan proses Dekripsi. Salah satu contoh Enkripsi dua arah bisa dilihat disini http://mugi.or.id/blogs/suherman/archive/2010/08/21/cell-and-column-level-encryption.aspx
Hash Algorithms adalah salah satu metode untuk melakukan enkripsi satu arah. Namun perlu dicatat bahwa metode enkripsi satu arah sangat tidak disarankan untuk meng enkripsi data seperti Tanggal, Nilai Gaji pegawai atau misalkan nama-nama kota. Karena data –data tersebut bisa dicoba dengan Brute Force Attack.
Sample penggunaan Hash Algorithms di SQL Server :
1: DECLARE @Pass1 varchar(20),
2: @Pass2 varchar(20),
3: @Pass3 varchar(20)
4:
5: set @Pass1='SUHERMAN_BANJARMASIN'
6: set @Pass2='SUHERMAN_banjarmasin'
7: set @Pass3='suherman_banjarmasin'
8:
9: select Hashbytes('MD5',@Pass1) Pass1
10: select Hashbytes('MD5',@Pass2) Pass2
11: select Hashbytes('MD5',@Pass3) Pass3
12: go
bila T-SQL diatas dijalankan, hasilnya adalah sbb :

tampak pada gambar, walaupun data text yang di enkripsi sama-sama terdiri dari huruf ‘suherman_banjarmasin’, namun karena ditulis dengan cara yang berbeda, maka hasil enkripsinya juga berbeda.
Salahsatu keuntungan menggunakan Hash algorithms adalah bila enkripsi tersebut dibuat menggunakan aplikasi Java, .NET atau php sekalipun, hasilnya adalah sama. Hash Algorithms juga sering digunakan untuk mengenkripsi password untuk login.
demikian, semoga bermanfaat.
More Posts