SQL Server Indonesia User Groups Community October 2010 - Posts - suherman
Welcome to SQL Server User Group Indonesia
Sign in JoinHelp | Sign In Live ID

suherman

Share ur Knowledge

October 2010 - Posts

How to Restore Encrypted Database Backup File

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. :

image

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

image

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.

image

Demikian, semoga bermanfaat.

Encrypt Database Backup

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.

Using Hash Algorithms in SQL Server

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 :

hash

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