SQL Server Transparent Data Encryption ( TDE )

22

Bu yazımda sizlere SQL Server üzerinde nasıl güvenlik tedbirleri alabiliriz. Güvenliği yüksek data bulunduruyorsak bu bilgiyi nasıl güvenlikli bir hale getirebiliriz bunu paylaşmaya çalışacağım.

Data güvenliği için sütunlara şifreli olarak bilgi girişi yapmak :
“Data Encryption”

Veritabanı üzerinde şifreli bilgi alanı oluşturmak için evvel boş bir veritabanı oluşturup aşağıdaki komutları uyguluyoruz.

Yeni bir veritabanı oluşturuyoruz
CREATE DATABASE SECUREDATABASE;
GO

–Şifreli alanın oluşturulacağı veritabanını seçiyoruz
USE SECUREDATABASE;
GO
–Database Master Key Oluştur
CREATE MASTER KEY ENCRYPTION BY
PASSWORD=‘GüvenliŞifreniz’;
GO
–Sertifikamızı oluşturuyoruz
CREATE CERTIFICATE SecureDBCertificate
WITH SUBJECT=’Secure database Certificate’;
GO

–Sertifika ile şifrelenecek Symmetric Key Oluşturuyoruz her sutunu farklı key kullanarak şifreleyebilirsiniz. “Örneğin Şifre alanlarını başka ve Kredikartı üzere bilgileri farklı key ile şifreleyebilirsiniz.”
CREATE SYMMETRIC KEY Password_Key_01
WITH ALGORITHM=TRIPLE_DES
ENCRYPTION BY CERTIFICATE SecureDBCertificate;
GO
–Veritabanına şifrelenecek yeni alanı oluşturuyoruz. Ben burada SENETNO alanını SECURE_SENETNO olarak şifreleyeceğim. Bu nedenle Tabloma SECURE_SENETNO alanını ekliyorum.
ALTER TABLE TAHSILATMAIN
ADD SECURE_SENETNO VARBINARY(128);
GO

–Veriyi şifreleyip yeni oluşturduğumuz alana şifreli olarak kopyalıyoruz.
OPEN SYMMETRIC KEY Password_Key_01
DECRYPTION BY CERTIFICATE SecureDBCertificate;

UPDATE TAHSILATMAIN
SET SECURE_SENETNO = ENCRYPTBYKEY(KEY_GUID(‘Password_Key_01‘), SENETNO);

CLOSE SYMMETRIC KEY Password_Key_01;
GO

Veritabanına direkt SELECT çektiğimizde göreceğimiz şu formda olacaktır.

SQL_Select_Encrypt

Gördüğünüz üzere SENETNO alanı SECURE_SENETNO olarak TRIPLE_DES ile şifrelendi.

Bu alandaki bilgiler Simmetric Key ve Veritabanı sertifikası olmadan açılamaz. Pekala bu dataları görünür olarak nasıl açarız derseniz SELECT komutumuzdan evvel key ve sertifikayı açarak sorgu çekmeliyiz. Aşağıdaki örneği inceleyelim.

–Şifreli datayı şifresiz olarak görüntülemek.
OPEN SYMMETRIC KEY Password_Key_01
DECRYPTION BY CERTIFICATE SecureDBCertificate;

SELECT CONVERT (VARCHAR,
DECRYPTBYKEY(SECURE_SENETNO)) AS [Decrypted Senet No],SENETNO AS [Non Encryption]
FROM TAHSILATMAIN
CLOSE SYMMETRIC KEY Password_Key_01;
GO

İlginizi Çekebilir;  Phishing Saldırıları !

SQL_Decrypt

Veri alanlarını şifreledik artık de sıra veritabanımızı kopyalamaya yahut Backup prosedürü ile çalınmasını önlemeye.

Transparent Veri Encryption ( TDE )

Veritabanı evraklarının kopyalanarak öteki bir sunucuya kopyalanmasını yahut yedeği alınarak farklı bir ortama açılmasını önlemek için transparent veri encryption özelliğini kullanmaya çalışacağız bu yol MDF ve LDF belgelerinizin farklı bir sunucuya Attach formülü ile eklenmesini önleyecektir. Tekrar birebir halde backup ile alınmış bir yedek belgesinin kendi sunucunuz haricinde öteki bir sunucuda açılması kesin olarak engelleyecektir.

Master Key system veritabanı üzerinde oluşturuluyor.

USE master;
GO
— Master Key Oluşturalım
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘GüçlübirMasterKeyŞifresi’;
GO
–Database Certificate Oluşturuyoruz
CREATE CERTIFICATE DatabaseCertificate WITH SUBJECT = ‘ENCRYPT Database Cerificate’;
GO
— Backup Sertifika ” Bularıdaki komutu girdiğinizde ihtar alacaksınzı sertifikayı yedekleyin diye şayet sertifikanızı yedeklemezseniz Sunucunuzu tekrar kurduğunuzda yahut sunucu değiştirdiğinizde bu veritabanını hiçbir sistemle farklı bir makinaya restore edemezsiniz. Şifreleme süreci yaparyapmaz kesinlikle seritifika yedeklerinizi alınız.

BACKUP CERTIFICATE DatabaseCertificate TO FILE = ‘C:BackupDatabase Certificate Backup’
WITH PRIVATE KEY ( FILE = ‘C:BackupPrivate Key Certificate’,
ENCRYPTION BY PASSWORD = ‘SertifikaŞifreniz’);

Yedeğimizi aldıktan sonra şifreleyeceğimiz veritabanını seçiyoruz.

USE SECUREDATABASE;

— Veritabanımızı belirlediğimiz bir sistemle şifreliyoruz Ben burada AES_256 ile şifreledim.
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE DatabaseCertificate;
GO
— Veritabanı Şifreleme Sürecini Açıyoruz.
ALTER DATABASE SECUREDATABASE
SET ENCRYPTION ON;
GO

Bu süreçten sonra veritabanınız şifrelenmiştir.

Creative Commons Lisansı

Cevap bırakın

E-posta hesabınız yayımlanmayacak.