新聞中心
SQL Server 2008引入透明數(shù)據(jù)加密(Transparent Data Encryption),即TDE,它允許你完全無需修改應(yīng)用程序代碼而對(duì)整個(gè)數(shù)據(jù)庫加密。當(dāng)一個(gè)用戶數(shù)據(jù)庫可用且已啟用TDE時(shí),在寫入到磁盤時(shí)在頁級(jí)實(shí)現(xiàn)加密。在數(shù)據(jù)頁讀入內(nèi)存時(shí)解密。如果數(shù)據(jù)庫文件或數(shù)據(jù)庫備份被盜,沒有用來加密的原始證書將無法訪問。這幾乎是SQL Server2008安全選項(xiàng)中最激動(dòng)人心的功能了,有了它,我們至少可以將一些初級(jí)的惡意窺視拒之見外。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),三元企業(yè)網(wǎng)站建設(shè),三元品牌網(wǎng)站建設(shè),網(wǎng)站定制,三元網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,三元網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
下面的兩個(gè)例子將展示如何啟用和維護(hù)透明數(shù)據(jù)加密。
示例一、啟用透明加密(TDE)
- /********************TDE**************** ****************/
- USE Master
- GO
- --------刪除舊主密鑰**********************
- --------Drop master Key
- --------go
- --創(chuàng)建主密鑰**********************
- Create MASTER KEY ENCRYPTION
- BY PASSWORD = 'B19ACE32-AB68-4589-81AE-010E9092FC6B'
- GO
- --創(chuàng)建證書,用于透明數(shù)據(jù)加密**********************
- CREATE CERTIFICATE TDE_Server_Certificate
- WITH SUBJECT = 'Server-level cert for TDE'
- GO
- USE DB_Encrypt_Demo
- GO
- --第一步:現(xiàn)在開始透明加密**********************
- CREATE DATABASE ENCRYPTION KEY--創(chuàng)建數(shù)據(jù)庫加密密鑰
- WITH ALGORITHM = TRIPLE_DES_3KEY--加密方式
- ENCRYPTION BY SERVER CERTIFICATE TDE_Server_Certificate--使用服務(wù)器級(jí)證書加密
- GO
- /*
- Warning: The certificate used for encrypting the database encryption key
- has not been backed up.
- You should immediately back up the certificate and the private key
- associated with the certificate.
- If the certificate ever becomes unavailable or
- if you must restore or attach the database on another server,
- you must have backups of both the certificate and the private key
- or you will not be able to open the database.
- */
- --第二步:打開加密開關(guān)**********************
- ALTER DATABASE DB_Encrypt_Demo
- SET ENCRYPTION ON
- GO
- --查看數(shù)據(jù)庫是否加密
- SELECT is_encrypted
- FROM sys.databases
- WHERE name = 'DB_Encrypt_Demo'
注意:一旦在數(shù)據(jù)庫應(yīng)用了加密,應(yīng)該立刻備份服務(wù)器級(jí)證書!
沒有加密DEK的證書,該數(shù)據(jù)庫將無法打開,附加到別的服務(wù)器也無法使用,數(shù)據(jù)庫文件亦不會(huì)被Hack。如果一個(gè)DBA想要合法地將數(shù)據(jù)庫從一個(gè)SQL Server實(shí)例移動(dòng)到另一個(gè)SQL Server實(shí)例,那么她應(yīng)該首先備份服務(wù)器級(jí)證書,然后在新的SQL Server實(shí)例中創(chuàng)建證書。此時(shí)可以合法地備份、還原數(shù)據(jù)庫或附加數(shù)據(jù)及日志文件。
示例二、管理和移除透明加密(TDE)
- USE DB_Encrypt_Demo
- 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
- /*
- 對(duì)所有用戶數(shù)據(jù)庫的加密處理也包含對(duì)tempdb的處理
- databasenm encryption_state key_algorithm key_length
- tempdb Encrypted AES 256
- DB_Encrypt_Demo Encrypted AES 128
- */
注意:對(duì)所有用戶數(shù)據(jù)庫的加密處理也包含對(duì)tempdb的處理
除了更改DEK的算法,我們也可以更改用來加密DEK的服務(wù)器級(jí)證書(該證書應(yīng)該定期更改)
- USE master
- GO
- CREATE CERTIFICATE TDE_Server_Certificate_V2
- WITH SUBJECT = 'Server-level cert for TDE V2'
- GO
- USE DB_Encrypt_Demo
- GO
- ALTER DATABASE ENCRYPTION KEY
- ENCRYPTION BY SERVER CERTIFICATE TDE_Server_Certificate_V2--用新證書修改DEK
- --移除數(shù)據(jù)庫透明加密
- ALTER DATABASE DB_Encrypt_Demo
- SET ENCRYPTION OFF
- GO
- --移除TDE后,可以刪除DEK
- USE DB_Encrypt_Demo
- GO
- Drop DATABASE ENCRYPTION KEY
- Go
注意:如果刪除DEK是SQL Server實(shí)例中最后一個(gè)使用TDE的用戶定義數(shù)據(jù)庫,在SQL Server實(shí)例重啟后,tempdb也將變?yōu)椴患用艿臓顟B(tài)。
小結(jié):
1、本文主要介紹透明數(shù)據(jù)加密(TDE)的使用。
2、對(duì)DEK的修改同時(shí)影響到tempdb數(shù)據(jù)庫的加密狀態(tài)。
SQL Server安全系列至此暫告一段落。謝謝各位耐心看完,歡迎對(duì)邀月提出指正。
當(dāng)前題目:淺析SQLServer2008中的代碼安全之八:透明加密(TDE)
網(wǎng)頁路徑:http://www.dlmjj.cn/article/dpdosgo.html


咨詢
建站咨詢
