對 sql server 資料庫的備份進行加密

來源:互聯網
上載者:User

標籤:

原文:對 sql server 資料庫的備份進行加密

嗯,最近在研究Database Backup相關的東西,考慮到應該為Database Backup加個密,就準備從網上搜尋一下看看有什麼好辦法,沒想到還挺亂。。。

首先,我從網上搜到的,對Database Backup加密的方法,主要有三種:

 

1、在使用 BACKUP 語句時,添加 PASSWORD 參數【此方法適用於 sql server 2012 以前的版本(不包含 2012)】

不過呢,其實這個 PASSWORD 參數的加密,並不是我們想象中的對資料完整的加密。

根據 MSDN 中的介紹:https://msdn.microsoft.com/zh-cn/library/ms186865(v=sql.100).aspx

貌似此密碼僅僅是給備份附加了一個密碼,並沒有對備份資料加密,如果該密碼直接被修改替換,備份中的資料仍然可以被正確的讀取,所以,其實加密的意義不是很大。

 

2、對資料庫啟用 透明資料加密(TDE)【此方法適用於 sql server 2008 及以後的版本(含2008)】

註:僅 sql server enterprise(企業版)支援此功能。

這個TDE吧,嗯,非常的好,因為它不僅僅是對備份加密,它是對整個資料庫進行了加密,而且既然是“透明”,也就是說不會影響到任何對資料庫的操作,正常的對資料庫操作(增刪改查什麼的),還有備份恢複什麼的,都不需要特別的考慮加密問題。只有離開了當前的資料庫伺服器,就會發現,什麼都做不了。需要在新的伺服器中匯入原來的加密認證即可正常使用。

MSDN 相關文檔:https://msdn.microsoft.com/zh-cn/library/bb934049.aspx

 

要啟用透明加密,需要以下幾個步驟:

1、在 master 資料庫中,添加 資料庫主要金鑰:

更多:https://msdn.microsoft.com/zh-cn/library/ms174382.aspx

USE master;CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘$$test$$‘;

其中,Password = ‘‘ 這裡就是在設定主要金鑰,請根據需要設定高強度密碼

修改主要金鑰可以使用:

更多:https://msdn.microsoft.com/zh-cn/library/ms186937.aspx

use master;ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = ‘$$123123$$‘;

2、在 master 資料庫中,添加 加密資料庫用的認證:

更多:https://msdn.microsoft.com/zh-cn/library/ms187798(v=sql.120).aspx

USE master;CREATE CERTIFICATE TestCert WITH SUBJECT = ‘測試認證‘;

其中,TestCert 是認證名稱,可以根據需要隨便起名,但是要記住!Subject 是主題貌似,隨便寫就可以了,長度最好不要超過128位元組。

3、在 要加密的資料庫 中,設定 認證以及密碼編譯演算法:

更多:https://msdn.microsoft.com/zh-cn/library/bb677241.aspx

USE TestDBCREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128ENCRYPTION BY SERVER CERTIFICATE TestCert;

其中,TestCert 就是上一步中添加的認證名稱,Algorithm 是密碼編譯演算法,有:AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY ,請根據需要選擇強度適合的密碼編譯演算法。

4、對 要加密的資料庫 啟用加密:

ALTER DATABASE TestDB SET ENCRYPTION ON;

嗯,經過以上步驟,對資料庫的加密就完成了。

想要查看當前資料庫伺服器中有哪些資料庫已被加密,可執行以下語句:

SELECT DB_NAME(database_id) AS DatabaseName, * FROM sys.dm_database_encryption_keys;

 

不過,還得考慮後續恢複資料庫或者轉移到其它伺服器的問題。

5、首先要從 master 資料庫中,備份加密認證:

更多:https://msdn.microsoft.com/zh-cn/library/ms178578.aspx

USE master;BACKUP CERTIFICATE TestCert TO FILE = ‘D:\TestCert.cer‘  WITH PRIVATE KEY ( FILE = ‘D:\TestCert.pkey‘, ENCRYPTION BY PASSWORD = ‘$$certpwd$$‘ );

嗯,認證名稱,儲存的檔案名稱,同時儲存一下私密金鑰,私密金鑰的檔案名稱,以及加密私密金鑰的密碼(此密碼用於保護私密金鑰,恢複時使用)。

6、在其他資料庫伺服器中,仍然首先建立 資料庫主要金鑰,同第1步操作;

7、然後,開始從檔案中恢複認證:

USE master;CREATE CERTIFICATE TestCert FROM FILE = ‘D:\TestCert.cer‘WITH PRIVATE KEY ( FILE = ‘D:\TestCert.pkey‘, DECRYPTION BY PASSWORD = ‘$$certpwd$$‘);

是的,恢複認證其實就是從檔案建立認證,認證名稱、檔案路徑、私密金鑰檔案路徑、以及解密私密金鑰的密碼(備份加密時設定的)。

8、然後你就可以附加資料庫、恢複資料庫什麼的了~

需要注意的是,資料庫加密的關鍵是 那個認證資料庫主要金鑰 是用來保護資料庫資訊的,比如認證的存放什麼的,並不直接關係到資料庫的加密。

所以,一定要備份好認證!!!不然別到時候哭著解密不了資料庫。

這個部分的參考文章:http://blog.csdn.net/ws_hgo/article/details/6927152

 

最後呢,說說這個方法的不好,那就是這個方法是對整個資料庫的資料加密,包括日誌什麼的,可能會為cpu帶來一定的負擔。

而且在備份的時候因為此時資料庫已經處於加密狀態,所以無法進行太多的壓縮了,可能備份檔案體積較大。

其實我比較關心的一點是,這個 透明資料加密(TDE) 只有 Enterprise (企業版)擁有,其它版本是木有的~

 

3、直接對備份進行加密【此方法適用於 sql server 2014 及以後的版本(應該?)】

這個方法和第一種比較像,直接在備份時加參數,僅僅對備份加密,不會加密資料庫,但是呢,也需要跟第二種方法一樣,需要先建立認證。

1、算了,要不我就不重複寫了,請看第二種方法的第1步。。。

2、請參見第二種方法的第2步。。。

3、恩恩,此時就可以開始備份資料庫了!

BACKUP DATABASE TestDB TO DISK =‘D:\TestDB.bak‘ WITH COMPRESSION,ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = TestCert);

其中,前半句應該很熟悉,就是備份資料庫的語句,Compression 是壓縮選項

後半句就是加密,Algorithm 是密碼編譯演算法,TestCert 就是我們添加的認證了。

 

備份就這樣建完了。當然也得涉及到在其它伺服器上的恢複問題。

4、好吧,我又懶了,其實就是第二種方法中的第 5、6、7 步,備份認證,恢複認證。。。

5、嗯,又可以愉快的恢複備份了~

這個部分的參考文章:http://www.cnblogs.com/CareySon/p/3853016.html

 

呵呵,前面說了這麼多,其實直接說這個多好,是吧,首先在版本方面,比TDE多了兩個版本,但是還是沒有我想要的。。。

其次呢,壓縮也可以用的上了,不過備份壓縮與備份加密支援的版本是一樣的。。。

還有呢,只支援 2014(和以後的版本?),想必現在應該有不少資料庫還是 2008 甚至 2005。。。

 

總結

所以說呢,其實這幾個方法都不是太滿意。。。大家就根據自己的情況使用吧,至於我呢。。。根據我的需求,我準備還是用zip壓縮加密一下吧。。。

哎,浪費了一個上午研究Database Backup加密,又浪費了一個中午寫這篇文章,算是一個上午沒白浪費吧,沒準以後用上呢。。。

對 sql server 資料庫的備份進行加密

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.