Mã hóa Backup Database (*.bak)


Chào các bạn,

Trong Microsoft có hai cơ chế mã hóa:
1. Mã hóa mức độ Database Engines
2. Mã hóa chi tiết mức độ dữ liệu ( dữ liệu lưu trong column).

Hôm nay Cường xin trình bày các mã hóa Database đơn giản: Mã hóa mức độ Database Engines
Mặc định Microsoft sẽ tắt chế độ mã hóa đi để đảm bảo Performance hệ thống. Tuy nhiên với các loại dữ liệu quan trọng và nhạy cảm, chúng ta nên chắc chắn rằng dữ liệu của bạn PHẢI được mã hóa kể cả file backup.
Nếu một lý do nào đó bạn bị mất hoặc trộm mất file backup chưa được mã hóa thì kẻ gian sẽ lợi dụng khai thác rất nhiều thông tin trong đó phục vụ cho nhu cầu bất chính của họ.

I. DỮ LIỆU BACKUP CHƯA ĐƯỢC MÃ HÓA

1. Tạo mới Database với tên là “TestEncrypt”
Encrypt01

2. Kiểm tra xem Database bạn vừa tạo có được mã hóa hay chưa ?
select name, is_encrypted from sys.databases where name = ‘TestEncrypt’
– Giá trị của “Is_encrypted” = 0 => Database chưa được mã hóa
– Giá trị của “Is_encrypted” = 1 => Database đã được mã hóa

Encrypt03

3. Tạo table “Table_1” và store procedure select table đó
USE [TestEncrypt]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Table_1](
[ID] [nchar](10) NULL,
[Name] [nchar](10) NULL
) ON [PRIMARY]

GO

create procedure sp_SelectTable01
as
select * from Table_1
go

4. Backup Database bằng Tools hoặc TSQL
BACKUP DATABASE [TestEncrypt] TO DISK = N’C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\TestEncrypt.bak’
WITH NOFORMAT, NOINIT, NAME = N’TestEncrypt-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
Encrypt02

5. Mở file backup “TestEncrypt.bak” bằng notepad và tìm chữ “procedure”
Bạn sẽ thấy rằng trong file *.Bak bạn vừa mở ra chứa rất nhiều thông tin về hệ thống và các đối tượng lập trình viên tạo ra, cụ thể là Store Procedure mà tôi vừa tạo ra mục trên.
Encrypt04

II. DỮ LIỆU BACKUP ĐàĐƯỢC Mà HÓA

1. Tạo symmetric Key và Certificate
use master
go

IF NOT EXISTS
(SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = ‘23987hxJKL969#ghf0%94467GRkjg5k3fd117r$$#1946kcj$n44nhdlj’
GO

CREATE CERTIFICATE IMS_ENCRYPT
WITH SUBJECT = ‘Encrypt’;
GO

2. Mã hóa dữ liệu backup
– Bạn có thể sử dụng tools hoặc SQL Script để mã hóa dữ liệu backup

USE [TestEncrypt]
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE [ENCRYPT]
GO
ALTER DATABASE [TestEncrypt] SET ENCRYPTION ON
GO

Encrypt05

Encrypt07

3. Chạy lại lệnh backup database và mở file *.Bak xem kết quả.
*** Lưu ý: Xóa hết các bản backup trước đó để tránh append dữ liệu backup cũ
BACKUP DATABASE [TestEncrypt] TO DISK = N’C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\TestEncrypt.bak’
WITH NOFORMAT, INIT, NAME = N’TestEncrypt-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

Encrypt08

Bạn mở lại file *Bak bằng Notepad bạn sẽ thấy dữ liệu được mã hóa bằng các ký tự đặt biệt giun dế.

Encrypt09

Chúc các bạn thành công.

P/S: không quên backup Symmatric Key và Certificate nhé

One comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s