Microsoft SQL Veritabanı sunucusu (MSSQLSERVER) veri kriptolama ve veri dosyası kriptolama
Bölüm 4 - Son
TDE - Transparent Data Encription
(instancedan bağımsıs arkaplan veri dosyası kriptolama)
CREATE DATABASE TDESifrelemeTestDB
GO
use TDESifrelemeTestDB
go
Create Table tblPersonel
(
Id INT Primary Key IDENTITY,
Ad VARCHAR(20)
,Soyad varchar(20)
,TCKimlikNo bigint
)
INSERT INTO [tblPersonel] VALUES ('Fatih','ÜNAL',12345678901)
INSERT INTO [tblPersonel] VALUES ('Mehmet','ÜNAL',12345678902)
go
-- master veritabanını seçerek önce master key oluşturup sonra
-- bir sunucu sertifikası oluşturuyoruz
--master key oluştur
USE master
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'TDEMaster123'
GO
-- sunucu sertifikası oluştur önemli.. key ile birlikte yedeklenmeli...
USE master
GO
CREATE CERTIFICATE TDE_Test WITH SUBJECT = 'TDE Sertifika'
GO
-- tekrar veritabanımıza gelip kripto metodunu ve hangi sertifika ile kriptolama
-- yapılacağını belirtip veritabanı kripto anahtarı oluşturuyoruz sonrada
-- veritabanımız için kriptolamayı aktif (ON) yapıyoruz.
USE TDESifrelemeTestDB
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE TDE_Test
GO
alter database tdeSifrelemeTestDB
set encryption on
go
-- veritabanımızda kriptolamanın aktif olduğunu aşağıdaki listeleme ile görebiliriz...
select name,is_encrypted from sys.databases
where name='TDESifrelemeTestDB'
-- aşağıdaki listeleme ile de kriptolama seviyesini görebiliriz..
-- veritabanımızı için 'log ve data şifrelenmiş' manasında encryption_state=3 görünmekte
USE TDESifrelemeTestDB
GO
SELECT DB_NAME(database_id),* FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3
GO
--veritananımızı başka yere taşıyınca açabilmek için çok önemli olan
-- sunucu sertifikamızı private ahantarı ile birlikte yedekleyelim ve güvenli bir yerde muhafaza edelim.
USE master
GO
BACKUP CERTIFICATE TDE_Test TO FILE = 'D:\db\yedek\TDE_Test_sertifika_yedek'
WITH PRIVATE KEY ( FILE = 'D:\db\yedek\TDE_Test_key'
,ENCRYPTION BY PASSWORD = 'TDEMaster123' )
GO
---- db yedekle ve başka yerde aç!
--use master go drop database TDESifrelemeTestDB
backup database TDESifrelemeTestDB to Disk='D:\db\yedek\TDESifrelemeTEstDB.Bak'
--eğer karşı sunucuya sunucu sertifikamızı oluşturmaz ise aşağıdaki
-- restore komutu başarısız olacaktır!
restore database TDESifrelemeTestDB from Disk='D:\db\yedek\TDESifrelemeTEstDB.Bak'
--aşağıdaki gibi detach edilmiş kriptolu dosyaları başka sunucuya atach ile
-- bağlama işlemide başarısız olacaktır!
EXEC sp_attach_db 'TDESifrelemeTestDB'
,'D:\db\TDESifrelemeTestDB.mdf'
,'D:\db\TDESifrelemeTestDB_Log.ldf'
-- compressed backup restore yöntemi ile yedekle başka sunucuya geri yükle işlemi ==> başarız!
--copy database wizard ile başka sunucuya aktarım işlemi ==> başarısız!!
--import/export yöntemi ile tablo, view objelerini başka instance veya sunucuya aktarma işlemi == başarılı...
son yöntemin başarılı olmasının sebebi o sırada bizim instanca bağlı olmamız
ve import export yaparken kriptolu dosyası olan veritabanımızın verilerini okuyor
olabilmemizdir. çünkü TDE (transparent data encryption= arkaplan veri kriptolama)
yöneteminde mdf ldf veya yedek dosyalara arplanda dosya seviyesinde
oluşturduğunuz sunuucu sertifikası ile kriptolanmaktadır. instanca arayüzden erişirken
tüm veri kriptosuzdur. bu veriyi kriptolamak için ise daha önceki yazılarda anlatılan
diğer kriptolama metodları kullanılabilir.
-- TDE li başarılı db restore işlemi :
-- veritabanımızı diğer sunucuya ataç ederken yada yedeklerden dönerken..
-- önce master keyi aynı şifre ile oluştur
-- sonra sunucu sertifikasını yedekten dön
--
USE master
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'TDEMaster123'
GO
CREATE CERTIFICATE TDE_Testing
FROM FILE = 'F:\TDE_Test_sertifika_yedek'
WITH PRIVATE KEY (FILE = 'F:\TDE_Test_key'
,DECRYPTION BY PASSWORD = 'TDEMaster123')
GO
evet sonuç olarak TDE ile artık SQL Server dosyalarınızda al-götür-tak-çalıştır
gibi bir güvenlik açığından kurtulmuş oluyor!
Sql sunucuda güvenli veri tutma konusunda yazdığımız 4. ve son yazımızın sonunda geldik.
-Bitti-
Hiç yorum yok:
Yorum Gönder