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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 原文:SQLSERVER使用密码加密备份文件以防止未经授权还原数据库SQLSERVER使用密码加密备份文件以防止未经授权还原数据库 在备份数据库的时候,用户可以为媒体集、备份集或两者指定密码 在backup语句中,定义备份集密码和媒体密码为可选功能。
原文: 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]

 

目录
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
数据库导入SQL文件:全面解析与操作指南
在数据库管理中,将SQL文件导入数据库是一个常见且重要的操作。无论是迁移数据、恢复备份,还是测试和开发环境搭建,掌握如何正确导入SQL文件都至关重要。本文将详细介绍数据库导入SQL文件的全过程,包括准备工作、操作步骤以及常见问题解决方案,旨在为数据库管理员和开发者提供全面的操作指南。一、准备工作在导
724 0
|
1月前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
2月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
3月前
|
存储 Java 数据库
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
这篇文章介绍了如何在Java中通过加盐和加密算法(如MD5和SHA)安全地存储密码,并提供了一个密码工具类PasswordUtils和密码编码类PasswordEncoder的实现示例。
122 10
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
|
3月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
122 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
3月前
|
数据安全/隐私保护 Python
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
如何使用Python的zipfile模块生成密码表并尝试暴力破解加密的ZIP压缩文件。
65 1
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
|
3月前
|
SQL 关系型数据库 MySQL
|
3月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
62 2
|
3月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
60 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。

热门文章

最新文章