db2备份透明加密

作者:操作系统    发布时间:2020-01-19 06:47     浏览次数 :

[返回]

hello,各位由于工作需要,客户要求对db2数据库备份文件进行加密,找了IBM的官方文档,写的有点乱没看明白。麻烦各位帮忙分析一下。具体要求:对备份文件进行加密,不管是本机恢复还是异机恢复,如果没有类似口令密码,则恢复失败,或者即使恢复成功但数据是加密的。如果是在实例级别设置参数密码等设置,对平常的应用来说是透明的,针对的数据也仅仅是备份文件。谢谢。

由于最近发生很多偷盗备份资料的事件,这使得越来越多的人更加关注保护数据备份的重要性了。从银行、经济行业、零售商店甚至是IRS中偷出载有数百万用户资料的导出数据磁盘,它所造成的损失是无法猜测的。

标签:SQLServer 备份 加密

一旦数据离开了Oracle数据库的安全机制,它就极轻易被偷取。在Oracle 10g Release 2中,你可以对导出的备份文件进行加密,而不需要使用第三方工具对它进行加密和解密了。在恢复这些备份文件的时候,Oracle会自动对这些数据进行解密。


在Oracle 10gR2中有三种方式可以进行加密操作,它们分别是:transparent (透明的,默认方式)、passWord、dual-mode。

各位新年好,戊戌年正月初一,老白在此给大家拜年了,祝各位新年快乐,身体健康,阖家幸福,万事顺利!
近期我在研究一些除了SQL SERVER以外的东西,容我卖个关子,后续也许有机会,也会在这里和大家见面.

Transparent方式

好了,我们接着讲数据库,在今天的话题前,我们先看下DBA的工作核心内容:安全,稳定,高效;
这三点是刚入门的时候,我的授业恩师千叮咛万嘱咐的.也是指导我这么多年DBA之路的行动准则.
并且,这三者是顺序是不可以变换的,安全永远是第一位,如果有发现无法决定方案的时候,按照此核心原则来排序找出核心重点.

Transparent方式适合于在同一个服务器上进行备份,Oracle Encryption Wallet是Advanced Security option的一种,在使用前,必须先对它进行配置。Wallet包含加密/解密信任书。因为默认的方式是transparent方式,你可以把下面的脚本加入到Recovery Manager (恢复治理器RMAN)脚本中: SET ENCRYPTION ON Password方式

今天的讲的核心内容也就是和安全有关的:备份透明加密
上两期中我们讲了备份快照,其中快照是需要SQL SERVER服务的支持才能使用,并且权限依赖于原库的权限(数据库权限管理部分我们后续再进行扩展),因此如果数据库权限控制得当,数据泄露的风险是很小的;
但是对于备份来讲就不一样了,一般情况下,数据库对于磁盘的IO要求是较高的,因此,活动的数据文件和日志文件都尽可能的存放在高性能的磁盘上(如15K SATA盘SSD盘甚至PCIE SSD盘),但备份使用率极低,就不适合存放在数据库服务器上,为了提高ROI(投入产出比),很多时候备份是存放在远端专用的备份服务器上,使用7.2K磁盘或者5.4K磁盘进行存储.
相对而言,备份服务器的使用率较低,因此被入侵后发现的几率会降低,这样的情况下,如果备份服务器被入侵后,备份将极有可能被拖走(也就是大家经常遇到的拖库,当然还有其他的拖库方式,原理上也不一样,这里不做展开),获取到备份后,不需要数据库服务器的任何权限就能获取到完整数据(获取方式:复制备份文件-->找到同样版本或更高版本的数据库服务-->恢复备份文件),这样一来,数据安全性就降低了.
鉴于此,为了保护备份文件,即使备份文件被拿走数据也不会泄露,SQL SERVER2008开始提供了数据库透明加密的办法来保护数据库文件,避免未经许可的恢复或附加导致数据泄露.
这就是我们今天要介绍的看不见摸得着的安全绳.

当你需要将备份文件传送到另外一个站点的时候,Password方式就非常有用了,它不需要事先在另一端设置。你可以将下列脚本添加到RMAN备份脚本中: SET ENCRYPTION ON IDENTIFIED BY password ONLY

参考网址: https://technet.microsoft.com/zh-CN/library/bb934049(v=sql.120).aspx

当备份文件带有密码的时候,你就必须提供原始密码: SET DECRYPTION IDENTIFIED BY password

下面给出相关的实施步骤,测试过程和注意点:

假如你把密码遗失了,数据就不能恢复。同样,为了确保RMAN脚本的安全性,你同样也可以对它使用密码保护。

一. 数据库支持版本
数据库版本需要在SQL Server 2008以上

Dual-mode方式

二. 创建透明加密操作步骤

Dual-mode方式既具有透明性又使用了密码。假如你通常都同一个服务器上进行恢复,但是偶然也需要把它转移到没有安装Oracle Encryption Wallet的其它服务器上的话,这时候你就可以使用dual-mode这种方式了。这种方式与password方式类似,但是在这种方式下,假如备份文件离开了自身的服务器后就需要密码了: SET ENCRYPTION ON IDENTIFIED BY password 紧记下面三点:第一,由于需要一些额外的开销,对备份进行加密需要花很长的时间;第二,必须彻底地测试备份脚本和恢复脚本;第三,你需要估计一下加密和解密所花费的时间。

1.创建主密钥和透明数据加密证书
执行下述脚本:

/************************TDE*************/
USE Master
GO
--------删除旧主密码
--------DROP MASTER KEY 
--------GO
--创建主密钥
Create MASTER KEY ENCRYPTION
BY PASSWORD = 'abcdefghijklmnopqrstuvwxy'--此处密码一定要记牢!!!!!!一定要记牢!!!!!!!一定要记牢!!!!!!
GO
--创建证书,用于透明数据加密************
USE Master
GO
CREATE CERTIFICATE TDE_Server_Cretificate--注意此处服务器级证书名称!!!下面好几处需要使用
WITH SUBJECT = 'Server-level cert for TDE'
GO

注:密码一定要注意保存,不可忘记!!!!

2.备份透明加密证书
透明加密证书新建后必须备份并妥善保存,否则将会导致加密数据无法恢复.
执行下述脚本:

USE Master
GO
BACKUP CERTIFICATE TDE_Server_Certificate--注意此处服务器级证书名称!!!
TO FILE = 'D:certbak###ServerNameCertbak_20180215###.crt'--文件保存好
WITH PRIVATE KEY
(
    FILE = 'D:certbak###ServerNameCertbak_20180215###.key',--文件保存好
    ENCRYPTION BY PASSWORD = 'abcdefghijklmnopqrstuvwxy'--此处密码一定要记牢!!!!!!一定要记牢!!!!!!!一定要记牢!!!!!!
);

注:证书的文件名和KEY的文件名不一样,需要特别注意.
证书加密的密码也要注意保存,证书的密码可以与主加密密码不一样,也可以一样,从安全性角度考虑,建议不一样,单独保存.

3.给数据库设置透明加密
执行下述脚本:

USE ###DataBaseName###
GO
--第一步,现在开始透明加密
CREATE DATABASE ENCRYPTION KEY--创建数据库加密密钥
WITH ALGORITHM = TRIPLE_DES_3KEY--加密方式
ENCRYPTION BY SERVER CERTIFICATE TDE_Server_Certificate--使用服务器级证书加密
GO

--第二步:打开加密开关
ALTER DATABASE ###DataBaseName###
SET ENCRYPTION ON
GO