SQL скрипт за създаване на TDE (Transparent Data Encryption) и осигуряване на “Encrypt the data at rest”.
Информацията в базата данни е криптирана и ако някой намери backup на базата няма да може да я използва.
Друга положителна страна е, че приложението,което достъпва данните няма нужда се променя и продължава да работи както и досега.
Криптирането на базата е онлайн, прозрачно и може да се проследи до къде е стигнало чрез изпълнение на query към dmv таблица.
Важно е да се запазят ключовете и сертификата, за да може базата данни да се прочете, ако се премести на друг сървър!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
-- Създаване на master key със силна парола USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'strong_password@!123'; GO -- Резервно копие USE master; GO OPEN MASTER KEY DECRYPTION BY PASSWORD = 'strong_password@!123'; BACKUP MASTER KEY TO FILE = 'd:\DB\service_master.key' ENCRYPTION BY PASSWORD = 'strong_password@!123'; GO -- Създаване на сертификат USE master; CREATE CERTIFICATE TDEEInvoiceCert WITH SUBJECT = 'TDE eInvoice Certificate', EXPIRY_DATE='2030-12-31' GO -- Резервно копие на сертификата BACKUP CERTIFICATE TDEEInvoiceCert TO FILE = 'd:\db\eInvoice.cer' WITH PRIVATE KEY ( FILE = 'd:\db\eInvoice.key' , ENCRYPTION BY PASSWORD = 'strong_password@!123' ); GO -- Използване на сертификата за криптиране на базата USE EINVOICE; CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE TDEEInvoiceCert GO ALTER DATABASE EINVOICE SET ENCRYPTION ON; -- Статус на криптирането select percent_complete, * from sys.dm_database_encryption_keys |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
-- Инсталиране на сертификата на друг сървър -- На другия сървър също трябва да се създаде master key USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'strong_password@!123'; GO -- Импортиране на сертификата от файловете: http://sqlity.net/en/2384/restore-certificate/ CREATE CERTIFICATE TDEGdinCert FROM FILE ='D:\eInvoice.cer' WITH PRIVATE KEY ( FILE='D:\eInvoice.key', DECRYPTION BY PASSWORD='strong_password@!123' ); GO |