SQLServer的TDE加密

來源:互聯網
上載者:User

標籤:

TDE的主要作用是防止Database Backup或資料檔案被偷了以後,偷Database Backup或檔案的人在沒有資料加密金鑰的情況下是無法恢複或附加資料庫的。

USE [master];

GO



--查看master資料庫是否被加密

SELECT name,is_master_key_encrypted_by_server FROM
sys.databases;



--建立master資料庫下的主要資料庫密鑰

CREATE MASTER KEY ENCRYPTION BY PASSWORD = N‘^&*()0A‘;



--查看master資料庫下的密鑰資訊

SELECT * FROM sys.symmetric_keys;



--建立認證用來保護 資料庫加密金鑰 (DEK)

CREATE CERTIFICATE master_server_cert WITH
SUBJECT = N‘Master Protect DEK Certificate‘;



IF DB_ID(‘db_encryption_test‘) IS NOT NULL

DROP DATABASE db_encryption_test



--建立測試資料庫

CREATE DATABASE db_encryption_test;

GO



USE db_encryption_test;



--建立由master_server_cert保護的DEK 資料庫加密金鑰 (對稱金鑰)

CREATE DATABASE ENCRYPTION KEY

WITH ALGORITHM = AES_128

ENCRYPTION BY SERVER CERTIFICATE master_server_cert;

GO

USE master;
BACKUP CERTIFICATE master_server_cert TO FILE = ‘D:\MSSQL\Certificate\master_server_cert.cer‘
WITH PRIVATE KEY (
FILE = ‘D:\MSSQL\Certificate\master_server_cert.pvk‘ ,
ENCRYPTION BY PASSWORD = ‘^&*()0A‘;

--相應的,我們也備份一下資料庫主要金鑰(master)
USE master;
--如果沒有啟用主要金鑰的自動解密功能
--OPEN MASTER KEY DECRYPTION BY PASSWORD = ‘^&*()0A‘;
BACKUP MASTER KEY TO FILE = ‘D:\MSSQL\MasterKey\master.cer‘
ENCRYPTION BY PASSWORD = ‘^&*()0A‘;
GO

--生產環境下,設定成單使用者在運行加密
ALTER DATABASE db_encryption_test SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO

--備份成功以後,開啟TDE 加密
ALTER DATABASE db_encryption_test SET ENCRYPTION ON;
GO

--設定多使用者訪問
ALTER DATABASE db_encryption_test SET MULTI_USER WITH ROLLBACK IMMEDIATE;
GO

--查看db_encryption_test資料庫是否被加密 encryption_state:3 TDE加密了
SELECT DB_NAME(database_id),encryption_state FROM sys.dm_database_encryption_keys;
/*
發現tempdb也被加密了。MSDN解釋是:如果執行個體中有一個資料庫啟用了TDE加密,那麼tempdb也被加密
*/

--接下來,找另外一台機器或者執行個體來測試,如果資料檔案被盜走了,防止附加的測試.
USE master;
EXEC sp_detach_db N‘db_encryption_test‘;
GO


USE master;
--我先在他機器還原了MASTER KEY (他原機器master庫無master key)
RESTORE MASTER KEY
FROM FILE = ‘C:\Users\Administrator\Desktop\master.cer‘
DECRYPTION BY PASSWORD = ‘^&*()0A‘
ENCRYPTION BY PASSWORD = ‘^&*()0A‘;
GO

--如果沒有自動加密
OPEN MASTER KEY DECRYPTION BY PASSWORD=N‘^&*()0A‘;
--建立認證
CREATE CERTIFICATE master_server_cert
FROM FILE = ‘C:\Users\Administrator\Desktop\master_server_cert.cer‘
WITH PRIVATE KEY (FILE = ‘C:\Users\Administrator\Desktop\master_server_cert.pvk‘,
DECRYPTION BY PASSWORD = ‘^&*()0A‘;
GO
--附加資料庫
CREATE DATABASE db_encryption_test
ON PRIMARY
(
FILENAME=N‘C:\Users\Administrator\Desktop\db_encryption_test.mdf‘
)
LOG ON
(
FILENAME=N‘C:\Users\Administrator\Desktop\db_encryption_test_log.ldf‘
)
FOR ATTACH ;
GO

--測試成功

--關閉資料庫聯結
CLOSE MASTER KEY




SQLServer的TDE加密

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.