当前位置: 首页 > news >正文

SQLSERVER使用密码加密备份文件以防止未经授权还原数据库

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]

 

相关文章:

  • Eclipse初次java开发问题总结-1
  • android-有效解决加载大图片时内存溢出的问题
  • windows环境下PHP 开发环境的选择、建立及使用
  • 001 about hello world
  • 用string.Join与ListT或者与string数组转换为字符串
  • 使用duplicate创建dataguard
  • 刚开通了,说上几句
  • 骑士人才系统后台用户名密码重设工具源码
  • 通过 RemoteApp和桌面连接 创建RDP文件--更方便访问RDS虚拟桌面
  • 产品需求文档的10步
  • 如何在数据库中存储一棵树
  • 我为什么不建议使用OpenDNS和Google Public DNS
  • Flex开发的一些经验总结——本地化(多语言)实现
  • vsphere 5.1 性能最佳实践。
  • CSC时无法找到C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • JAVA SE 6 GC调优笔记
  • js继承的实现方法
  • js数组之filter
  • React 快速上手 - 07 前端路由 react-router
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 嵌入式文件系统
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 原生js练习题---第五课
  • const的用法,特别是用在函数前面与后面的区别
  • ​虚拟化系列介绍(十)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (javascript)再说document.body.scrollTop的使用问题
  • (pojstep1.1.2)2654(直叙式模拟)
  • (二)构建dubbo分布式平台-平台功能导图
  • (力扣题库)跳跃游戏II(c++)
  • (四)c52学习之旅-流水LED灯
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .netcore如何运行环境安装到Linux服务器
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .NET企业级应用架构设计系列之技术选型
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @JoinTable会自动删除关联表的数据
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [Android] Upload package to device fails #2720
  • [BUG]vscode插件live server无法自动打开浏览器
  • [C++]C++入门--引用
  • [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解
  • [FTP]pureftp部署和优化
  • [G-CS-MR.PS02] 機巧之形2: Ruler Circle
  • [Java][Android][Process] 暴力的服务能够解决一切,暴力的方式运行命令行语句
  • [JavaScript]_[初级]_[关于forin或for...in循环语句的用法]
  • [leetcode] Longest Palindromic Substring
  • [LeetCode]Reverse Linked List II
  • [MQ]常用的mq产品图形管理web界面或客户端