SQLSERVER使用密碼加密備份文件以防止未經授權還原數據庫
在備份數據庫的時候,用戶可以為媒體集、備份集或兩者指定密碼
在backup語句中,定義備份集密碼和媒體密碼為可選功能。使用密碼可防止利用SQLSERVER工具未經授權地執行還原操作和在媒體中添加備份集。
如果指定了密碼則用戶還必須提供媒體密碼才能執行這些操作
關於媒體集和備份集大家可以參考MSDN:http://msdn.microsoft.com/zh-cn/library/ms186865(v=SQL.90).aspx
盡管使用密碼對防止利用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]