SQLSERVER使用密码加密备份文件以防止未经授权还原数据库
原文: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选项的解释
PASSWORD = { password | @password_variable }
为备份集设置密码。 PASSWORD 是一个字符串。 如果为备份集定义了密码,则必须提供此密码才能对该备份集执行任何的 SQL Server 还原操作。
但是,备份集密码不能防止覆盖备份文件。 若要防止覆盖备份文件,请改用媒体集密码
此密码提供的安全性较低。 它旨在防止授权用户或未授权用户使用 SQL Server 2005 工具进行不正确的还原,
但是不能防止通过其他方式或通过替换密码来读取备份数据。 保护备份的最佳做法是将备份磁带存储在安全的位置,
或者备份到由适当的访问控制列表 (ACL) 保护的磁盘文件。 ACL 应设置在创建备份的根目录下。
MEDIAPASSWORD = { mediapassword | @mediapassword_variable }
为媒体集设置密码。 MEDIAPASSWORD 是一个字符串。
如果为媒体集定义了密码,则在该媒体集上创建备份集之前必须提供此密码。
另外,从该媒体集执行任何还原操作时也必须提供媒体密码。 只有通过重新格式化才能覆盖受密码保护的媒体
此密码提供的安全性较低。 它旨在防止授权用户或未授权用户使用 SQL Server 2005 工具进行不正确的还原,
但是不能防止通过其他方式或通过替换密码来读取备份数据。 保护备份的最佳做法是将备份磁带存储在安全的位置,
或者备份到由适当的访问控制列表 (ACL) 保护的磁盘文件。 ACL 应设置在创建备份的根目录下。
BACKUP 使用由 PASSWORD 选项提供的备份集密码创建备份集。
另外,通常 BACKUP 在写入媒体之前将验证由 MEDIAPASSWORD 选项提供的媒体密码。BACKUP 不验证媒体密码的唯一情况是格式化媒体时,
这将覆盖媒体标头。 如果 BACKUP 写入媒体标头,BACKUP 将给 MEDIAPASSWORD 选项中指定的值分配媒体集密码。
-------------------------------------华丽的分割线------------------------------------------------------------
分三种情况进行实验
(1)backup语句中只有mediapassword
(2)backup语句中只有PASSWORD
(3)backup语句中有PASSWORD和mediapassword
--情况一
USE master
GO Backup DATABASE [pratice]
To disk='D:\pratice_fullbackup_201306110152.bak' WITH mediapassword=''
GO --还原
RESTORE DATABASE [pratice] FROM DISK='D:\pratice_fullbackup_201306110152.bak' WITH MEDIAPASSWORD='',REPLACE
--情况二
USE master
GO Backup DATABASE [hengshan]
To disk='D:\hengshan_fullbackup_201306110152.bak' WITH password=''
GO --还原
RESTORE DATABASE [hengshan] FROM DISK='D:\hengshan_fullbackup_201306110152.bak' WITH password='', REPLACE
--情况三
USE master
GO Backup DATABASE GPOSDB
To disk='D:\GPOSDB_fullbackup_2013061110152.bak' WITH mediapassword='' ,PASSWORD=''
GO --还原
RESTORE DATABASE [GPOSDB] FROM DISK='J:\GPOSDB_fullbackup_2013076110152.bak' WITH PASSWORD='',MEDIAPASSWORD='',REPLACE
在测试情况三的时候我移动了备份文件,并使用了U盘,但是都不会报错,只要有提供密码就可以了
因为对媒体集和备份集不是很熟悉,所以,我把备份文件备份在D盘,然后把备份文件移动到本地硬盘的F盘和U盘里,U盘的盘符是J
但是都不会报错,只要有提供密码就可以了
-----------------------------------------------华丽的分割线---------------------------------------------------------
加密了之后使用SSMS不能查看到备份集信息
如果不加密是可以看到的
-------------------------------------------------华丽的分割线------------------------------------------------------------------
最后查看哪些备份集加了密码,但是只有media_uuid,不知道备份集的名称,郁闷~
--查看哪些备份集加了密码
USE [msdb]
GO
SELECT * FROM [dbo].[backupmediaset]
SQLSERVER使用密码加密备份文件以防止未经授权还原数据库的更多相关文章
- 使用durid的ConfigFilter对数据库密码加密
<!-- 配置dbcp数据源 --> <bean id="remoteDS" class="org.apache.commons.dbcp.BasicD ...
- Mysql基础(一):Mysql初识、基本指令、数据库密码相关、创建用户及授权
来源:https://www.cnblogs.com/liubing8/p/11432534.html 目录 数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 1. 数据库概述 ...
- 数据库01 /Mysql初识、基本指令、数据库密码相关、创建用户及授权
数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 目录 数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 1. 数据库概述 2. 数据库管理系统/DBMS ...
- (转)笔记320 SQLSERVER中的加密函数 2013-7-11
1 --SQLSERVER中的加密函数 2013-7-11 2 ENCRYPTBYASYMKEY() --非对称密钥 3 ENCRYPTBYCERT() --证书加密 4 ENCRYPTBYKEY() ...
- Openfire用户密码加密解密
需求要求审核过程中都用匿名进行用户注册登录,注册用户审核通过后才使用openfire内置表 如何做到用户密码统一 Openfire是通过org.jivesoftware.util.Blowfish.j ...
- html5对密码加密
今天找了几个关于对html5的密码加密的方法,仅供参考 1.base64加密:在页面中引入base64.js文件,调用方法为: <html> <head> <meta c ...
- Maven-009-Nexus 用户密码加密(安全必须)
信息数据大爆发的时代,我们关心什么?没错,数据安全!数据安全!数据安全!(重要事情说三遍,哈哈哈...) 之前我们存放在 maven settings.xml 文件中的 Nexus 私服用户密码都是明 ...
- C#:使用MD5对用户密码加密与解密
C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1 ...
- 使用bcrypt进行用户密码加密的简单实现
Bcrypt百度百科: bcrypt,是一个跨平台的文件加密工具.由它加密的文件可在所有支持的操作系统和处理器上进行转移.它的口令必须是8至56个字符,并将在内部被转化为448位的密钥. 除了对您的数 ...
随机推荐
- [Ramda] Get a List of Unique Values From Nested Arrays with Ramda (flatMap --> Chain)
In this lesson, we'll grab arrays of values from other arrays, resulting in a nested array. From the ...
- kettle的job中运行每行
job中运行每行 有时,我们须要job或转换执行多次.且每次传入的參数都不同.假如你正在做数据迁移的工作,须要导入每天的旧数据,则须要一个job依据指定的日期导入数据,该日期被指定作为參数.假设 ...
- NOIP模拟 Pyramid - 斜率优化DP
题目大意: 给一个金字塔图(下面的宽度大于等于上面的宽度),每层的高度为1,从中选取k个互不重叠的矩形,使面积最大. 题目分析: \(f[i][j]\)表示选到第i层,选择了j个矩形的最优方案. 转移 ...
- NOIP模拟 Ball - log积化和
题目描述 Alice 与 Bob 在玩游戏.他们一共玩了 t 轮游戏.游戏中,他们分别获得了 n 个和 m 个小球.每个球上有一个分数.每个人的得分都为他所获得所有小球分数的乘积,分数小者获胜.问每轮 ...
- 一起学Python:多线程-共享全局变量
多线程-共享全局变量 from threading import Thread import time g_num = 100 def work1(): global g_num for i in r ...
- Windows 平台下 LiteIDE 的安装和使用
1. 安装 Go 语言并设置环境变量 参考博客<Windows 平台下 Go 语言的安装和环境变量设置>. 2. MinGW 的下载和安装 Windows 下的 Go 调试还需要安装 Mi ...
- No USB devices or running emulators detected”
每次重装系统之后,安装andorid studio后,使用真机调试代码,就会出现"No USB devices or running emulators detected"的错误, ...
- mongodb 批量更新 数组的键操作的文件
persons该文件的数据如下面的: > db.persons.find() { "_id" : 2, "name" : 2 } { "_id& ...
- Linux经常使用的命令(两) - cd
Linux cd 命令能够说是Linux中最主要的命令语句,其它的命令语句要进行操作,都是建立在使用 cd 命令上的.所以,学习Linux 经常使用命令.首先就要学好 cd 命令的用法技巧. 1. 命 ...
- python 合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 样例 给出 1->3->8->11->15->null,2-& ...