1. 程式人生 > >SQLSERVER使用密碼加密備份檔案以防止未經授權還原資料庫

SQLSERVER使用密碼加密備份檔案以防止未經授權還原資料庫

在備份資料庫的時候,使用者可以為媒體集、備份集或兩者指定密碼

在backup語句中,定義備份集密碼和媒體密碼為可選功能。使用密碼可防止利用SQLSERVER工具未經授權地執行還原操作和在媒體中新增備份集。

如果指定了密碼則使用者還必須提供媒體密碼才能執行這些操作

儘管使用密碼對防止利用SQLSERVER工具未經授權地訪問媒體內容有幫助,但密碼不能防止媒體內容被破壞。密碼不能完全防止未經授權地訪問媒體內容,

原因在於備份集中的資料沒有加密,理論上可以被專為此目的建立的程式所檢視備份檔案裡面的內容。

對於安全性至關重要的場合,防止未經授權的個人訪問媒體非常重要

注意:從 SQL Server 2012 開始,PASSWORD 和 MEDIAPASSWORD 選項不可再用於建立備份; 但仍可以還原使用密碼建立的備份!!!

以下是MSDN關於backup語句中的MEDIAPASSWORD選項和PASSWORD選項的解釋

複製程式碼
1 PASSWORD = { password | @password_variable }
2 為備份集設定密碼。 PASSWORD 是一個字串。 如果為備份集定義了密碼,則必須提供此密碼才能對該備份集執行任何的 SQL Server 還原操作。 
3 但是,備份集密碼不能防止覆蓋備份檔案。 若要防止覆蓋備份檔案,請改用媒體集密碼
4 此密碼提供的安全性較低。 它旨在防止授權使用者或未授權使用者使用 SQL Server 2005 工具進行不正確的還原,
5  但是不能防止通過其他方式或通過替換密碼來讀取備份資料。 保護備份的最佳做法是將備份磁帶儲存在安全的位置,
6
或者備份到由適當的訪問控制列表 (ACL) 保護的磁碟檔案。 ACL 應設定在建立備份的根目錄下。
複製程式碼 複製程式碼
1 MEDIAPASSWORD = { mediapassword | @mediapassword_variable }
2 為媒體集設定密碼。 MEDIAPASSWORD 是一個字串。
3 如果為媒體集定義了密碼,則在該媒體集上建立備份集之前必須提供此密碼。 
4 另外,從該媒體集執行任何還原操作時也必須提供媒體密碼。 只有通過重新格式化才能覆蓋受密碼保護的媒體
5 此密碼提供的安全性較低。 它旨在防止授權使用者或未授權使用者使用 SQL Server 2005 工具進行不正確的還原, 
6
但是不能防止通過其他方式或通過替換密碼來讀取備份資料。 保護備份的最佳做法是將備份磁帶儲存在安全的位置, 7 或者備份到由適當的訪問控制列表 (ACL) 保護的磁碟檔案。 ACL 應設定在建立備份的根目錄下。
複製程式碼

BACKUP 使用由 PASSWORD 選項提供的備份集密碼建立備份集。

另外,通常 BACKUP 在寫入媒體之前將驗證由 MEDIAPASSWORD 選項提供的媒體密碼。BACKUP 不驗證媒體密碼的唯一情況是格式化媒體時,

這將覆蓋媒體標頭。 如果 BACKUP 寫入媒體標頭,BACKUP 將給 MEDIAPASSWORD 選項中指定的值分配媒體集密碼。

-------------------------------------華麗的分割線------------------------------------------------------------

分三種情況進行實驗
(1)backup語句中只有mediapassword

(2)backup語句中只有PASSWORD

(3)backup語句中有PASSWORD和mediapassword

複製程式碼
 1 --情況一
 2 USE master
 3 GO
 4 
 5 Backup DATABASE [pratice]
 6 To disk='D:\pratice_fullbackup_201306110152.bak' WITH mediapassword='123456' 
 7 GO
 8 
 9 --還原
10 RESTORE DATABASE [pratice] FROM DISK='D:\pratice_fullbackup_201306110152.bak' WITH MEDIAPASSWORD='123456',REPLACE
複製程式碼 複製程式碼
 1 --情況二
 2 USE master
 3 GO
 4 
 5 Backup DATABASE [hengshan]
 6 To disk='D:\hengshan_fullbackup_201306110152.bak' WITH password='123456' 
 7 GO
 8 
 9 --還原
10 RESTORE DATABASE [hengshan] FROM DISK='D:\hengshan_fullbackup_201306110152.bak' WITH password='123456', REPLACE
複製程式碼 複製程式碼
 1 --情況三
 2 USE master
 3 GO
 4 
 5 Backup DATABASE GPOSDB
 6 To disk='D:\GPOSDB_fullbackup_2013061110152.bak' WITH mediapassword='123456' ,PASSWORD='123456'
 7 GO
 8 
 9 --還原
10 RESTORE DATABASE [GPOSDB] FROM DISK='J:\GPOSDB_fullbackup_2013076110152.bak' WITH PASSWORD='123456',MEDIAPASSWORD='123456',REPLACE
複製程式碼

在測試情況三的時候我移動了備份檔案,並使用了U盤,但是都不會報錯,只要有提供密碼就可以了

因為對媒體集和備份集不是很熟悉,所以,我把備份檔案備份在D盤,然後把備份檔案移動到本地硬碟的F盤和U盤裡,U盤的碟符是J

但是都不會報錯,只要有提供密碼就可以了

-----------------------------------------------華麗的分割線---------------------------------------------------------

加密了之後使用SSMS不能檢視到備份集資訊

如果不加密是可以看到的

-------------------------------------------------華麗的分割線------------------------------------------------------------------

最後檢視哪些備份集加了密碼,但是隻有media_uuid,不知道備份集的名稱,鬱悶~

1 --檢視哪些備份集加了密碼
2 USE [msdb]
3 GO
4 SELECT * FROM [dbo].[backupmediaset]