sqlServer透明資料加密(TDE)操作解析

2021-08-21 16:41:45 字數 4311 閱讀 1385

「透明資料加密」(tde) 可對資料和日誌檔案執行實時 i/o 加密和解密。這種加密使用資料庫加密金鑰 (dek),該金鑰儲存在資料庫引導記錄中以供恢復時使用。資料庫檔案的加密在頁級執行。已加密資料庫中的頁在寫入磁碟之前會進行加密,在讀入記憶體時會進行解密。

使用tde加密操作步驟:

建立主金鑰

建立或獲取由主金鑰保護的證書

建立資料庫加密金鑰並通過此證書保護該金鑰

將資料庫設定為使用加密

使用tde加密

use master

--建立主金鑰**********************

create master key encryption 

by password = 'b19ace32-ab68-4589-81ae-010e9092fc6b' 

go --建立證書,用於透明資料加密**********************

create certificate tde_server_certificate 

with subject = 'server-level cert for tde' 

go use test 

go --第一步:現在開始tde加密**********************

create database encryption key--建立資料庫加密金鑰

with algorithm = triple_des_3key--加密演算法

encryption by server certificate tde_server_certificate--使用伺服器級證書加密

go --第二步:備份證書

use master

backup certificate tde_server_certificate   --證書名稱

to file = n'd:\tde_server_certificate.cer'  --證書備份檔案路徑

with private key (  

file = n'd:\tde_server_certificate_saleskey.pvk' ,

encryption by password = n'b19ace32-ab68-4589-81ae-010e9092fc6b' ); --金鑰

go --第二步:啟用資料庫加密**********************

alter database test 

set encryption on 

go --檢視資料庫是否加密

select is_encrypted 

from sys.databases 

where name = 'test'

在另外一台伺服器上附加加密後的test庫

建立主金鑰

還原證書

附加資料庫

--  建立資料庫主金鑰

create master key encryption 

by password = 'b19ace32-ab68-4589-81ae-010e9092fc6b'  --加密時所用的金鑰

go --  還原證書

create certificate tde_server_certificate   --證書名稱

from file = n'd:\tde_server_certificate.cer'  --證書備份檔案路徑

with private key

file = n'd:\tde_server_certificate_saleskey.pvk' ,

decryption by password = n'b19ace32-ab68-4589-81ae-010e9092fc6b' --金鑰

go--  附加資料庫(成功)

create database [test] on

( filename = n'c:\database\test.mdf' ),

( filename = n'c:\database\test_log.ldf' )

for attach ;

go注意:當還沒有正確的還原證書時,附加資料庫將會提示失敗資訊

在另外一台伺服器上還原test庫的備份檔案

操作與附加資料庫相同

建立主金鑰

還原證書

附加資料庫

--  建立資料庫主金鑰

create master key encryption 

by password = 'b19ace32-ab68-4589-81ae-010e9092fc6b'  --加密時所用的金鑰

go --  還原證書

create certificate tde_server_certificate   --證書名稱

from file = n'd:\tde_server_certificate.cer'  --證書備份檔案路徑

with private key

file = n'd:\tde_server_certificate_saleskey.pvk' ,

decryption by password = n'b19ace32-ab68-4589-81ae-010e9092fc6b' --金鑰

go--  還原資料庫

restore database [temp]

from  disk = n'c:\software\test.bak'

with  file = 1, 

move n'temp' to n'c:\database\test.mdf', 

move n'temp_log' to n'c:\database\test_log.ldf', 

nounload,  stats = 10

其他相關sql

1、修改及檢視加密演算法

use test 

go --修改加密演算法

alter database encryption key 

regenerate with algorithm = aes_128  --加密演算法

go --檢視加密演算法

select db_name(database_id) databasenm, 

case encryption_state 

when 0 then 'no encryption' 

when 1 then 'unencrypted' 

when 2 then 'encryption in progress' 

when 3 then 'encrypted' 

when 4 then 'key change in progress' 

when 5 then 'decryption in progress' 

end encryption_state, 

key_algorithm, 

key_length 

from sys.dm_database_encryption_keys 

2、修改證書

use master 

go --建立新證書

create certificate tde_server_certificate_v2 

with subject = 'server-level cert for tde v2' 

go --用新證書修改dek

use test 

go alter database encryption key 

encryption by server certificate tde_server_certificate_v2 

3、刪除tde加密

--移除資料庫tde加密

alter database test 

set encryption off 

go  

--移除tde後,可以刪除dek 

use test 

go drop database encryption key 

go --刪除加密證書

drop certificate  tde_server_certificate;

go--刪除主金鑰

drop master key;

go其他注意資訊

啟用 tde 時,應該立即備份證書和與證書相關聯的私鑰。如果證書變為不可用,或者如果必須在另一台伺服器上還原或附加資料庫,則必須同時具有證書和私鑰的備份,否則將無法開啟該資料庫。即使不再對資料庫啟用tde,也應該保留加密證書。即使資料庫未加密,事務日誌的某些部分仍可能保持受到保護,但在執行資料庫的完整備份前,對於某些操作可能需要證書。超過過期日期的證書仍可以用於通過 tde 加密和解密資料。

SQL Server 2008 透明資料加密入門

問題 在檢討 sql server 2008 中的新功能,時,我們注意到透明資料加密。這聽起來很有趣。您可以為我們提供解釋和執行它的詳細資訊嗎?解決方案 時延估計是 sql server 2008 中的新功能,它提供了實時加密的資料和日誌檔案。資料加密之前寫到磁碟 資料進行解密時從磁碟中讀取。時延估...

資料加密 TDE透明資料加密原理

首先需要確定你需要加密的列,oracle 10g資料庫將為包含加密列的表建立乙個私密的安全加密金鑰 表秘鑰 然後採用你指定的加密演算法 aes或3des 加密指定列的明文資料。此時,保護表的加密金鑰 表金鑰 就非常重要了。oracle 10g通過乙個master金鑰來對錶金鑰進行加密。master金...

什麼是透明資料加密 TDE

tde是sql server 2008推出的乙個新特性 透明資料加密 transparent data encryption 簡稱tde,是sql server 2008推出的乙個新特性,用來對整個資料庫提供保護。資料庫開啟tde加密後,對於連線到所選資料庫的應用程式來說是完全透明的,它不需要對現有...