三种Oracle RMAN备份加密策略(上)

 

说明:本篇参考eygle老师的作品《Oracle DBA手记4:数据安全警示录》,特此表示感谢。

 

数据安全,特别是企业核心业务数据的安全问题,是当今全社会共同关注的问题。从前几天轰轰烈烈的携程服务终止,风闻数据库被删除事件,到去年多次发生的互联网公司用户账号密码外泄风波,都不断挑战业界紧绷的神经。在当今社会,数据就是财富已经不是乌托邦,而是彻彻底底的现实。出现过信息泄露安全事故的企业,在商誉和品牌上的损失都是难以评估的。

 

从信息系统的角度看,备份是我们DBA的命脉,也是我们的“后手”。只要有备份,只要数据不丢,都有回旋的余地和空间。针对备份的安全,也是各种信息化安全标准均重要强调之处。

 

备份的安全,主要体现在两个层面上:备份有效性和备份不被非法使用。备份有效性是运维人员的噩梦,关键场合却发现备份不可用或者有坏块,是足以让运维人员吐血的场景。备份不被非法使用,是保证备份集合数据不会被非法的还原到其他环境中去。

 

作为Oracle官方推荐的备份恢复工具,RMAN提供了三种安全加密策略来确保备份不被非法使用。本篇主要来介绍这三种基本策略。

 

1、环境介绍

 

笔者选择Oracle 11g进行测试,版本编号为11.2.0.4。

 

 

SQL> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

PL/SQL Release 11.2.0.4.0 - Production

CORE     11.2.0.4.0     Production

TNS for Linux: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 - Production

 

 

为了使用rman进行热备份,开启归档模式。

 

 

SQL> select log_mode from v$database;

 

LOG_MODE

------------

ARCHIVELOG

 

 

RMAN备份安全的三种策略分别为:密码口令安全、Oracle Wallet安全和混合加密安全。

 

 

下面分别介绍三种策略:

 

2、密码口令安全

 

密码口令安全如其名称,就是在加密解密过程中都需要交互式的密码输入。配置密码口令就在RMAN本身的配置中即可。

 

 

RMAN> show encryption for database ;

 

RMAN configuration parameters for database with db_unique_name SICSSTB are:

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

 

RMAN> show encryption algorithm;

 

RMAN configuration parameters for database with db_unique_name SICSSTB are:

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

 

 

默认RMAN是不启用加密机制的。加密问题一定跟随着加密算法,默认加密算法为AES128。查看视图v$RMAN_ENCRYPTION_ALGORITHMS,可以看到当前可以使用的加密算法。

 

 

SQL> select * from v$rman_encryption_algorithms;

 

ALGORITHM_ID ALGORITHM_NAME  ALGORITHM_DESCRIPTION     IS_DEFAULT RESTORE_ONLY

------------ --------------- ------------------------- ---------- ------------

           1 AES128          AES 128-bit key           YES        NO

           2 AES192          AES 192-bit key           NO         NO

           3 AES256          AES 256-bit key           NO         NO

 

 

使用口令加密,首先使用set encryption命令设置上口令。

 

 

RMAN> set encryption on identified by 'test' only;

executing command: SET encryption

 

RMAN> show encryption for database;

 

RMAN configuration parameters for database with db_unique_name SICSSTB are:

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

 

 

注意后面的only标记,一定要加入进来。

 

下面可以进行备份:

 

 

RMAN> backup database plus archivelog;

 

 

Starting backup at 08-JUN-15

current log archived

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=137 device type=DISK

channel ORA_DISK_1: starting archived log backup set

channel ORA_DISK_1: specifying archived log(s) in backup set

(篇幅原因,有省略……)

Starting Control File and SPFILE Autobackup at 08-JUN-15

piece handle=+RECO/sicsstb/autobackup/2015_06_08/s_881833159.266.881833159 comment=NONE

Finished Control File and SPFILE Autobackup at 08-JUN-15

 

 

备份集合状态:

 

 

RMAN> list backup;

 

List of Backup Sets

===================

 

 

BS Key  Size       Device Type Elapsed Time Completion Time

------- ---------- ----------- ------------ ---------------

1       14.01M     DISK        00:00:00     08-JUN-15     

        BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag: TAG20150608T093841

(篇幅原因,有省略……)

        BP Key: 4   Status: AVAILABLE  Compressed: NO  Tag: TAG20150608T093919

        Piece Name: +RECO/sicsstb/autobackup/2015_06_08/s_881833159.266.881833159

  SPFILE Included: Modification time: 08-JUN-15

  SPFILE db_unique_name: SICSSTB

  Control File Included: Ckp SCN: 2685935      Ckp time: 08-JUN-15

 

 

重启进入mount状态,尝试恢复。

 

 

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

 

RMAN> connect target /

connected to target database (not started)

 

RMAN> startup mount;

Oracle instance started

database mounted

 

Total System Global Area    2087780352 bytes

 

Fixed Size                     2254824 bytes

Variable Size                553650200 bytes

Database Buffers            1526726656 bytes

Redo Buffers                   5148672 bytes

 

 

尝试进行恢复。

 

 

RMAN> restore database ;

 

Starting restore at 08-JUN-15

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=131 device type=DISK

(篇幅原因,有省略……)

channel ORA_DISK_1: reading from backup piece +RECO/sicsstb/backupset/2015_06_08/nnndf0_tag20150608t093842_0.263.881833123

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of restore command at 06/08/2015 09:46:38

ORA-19870: error while restoring backup piece +RECO/sicsstb/backupset/2015_06_08/nnndf0_tag20150608t093842_0.263.881833123

ORA-19913: unable to decrypt backup

ORA-28365: wallet is not open

 

 

备份集合被加密,不能读取。只能进行解密之后才能使用。

 

 

RMAN> set decryption identified by 'test';

executing command: SET decryption

 

 

之后再进行恢复操作。

 

 

RMAN> restore database;

 

Starting restore at 08-JUN-15

using channel ORA_DISK_1

 

channel ORA_DISK_1: starting datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_DISK_1: restoring datafile 00001 to +DATA/sicsstb/datafile/system.256.878897771

channel ORA_DISK_1: restoring datafile 00002 to +DATA/sicsstb/datafile/sysaux.257.878897773

channel ORA_DISK_1: restoring datafile 00003 to +DATA/sicsstb/datafile/undotbs1.258.878897773

channel ORA_DISK_1: restoring datafile 00004 to +DATA/sicsstb/datafile/users.259.878897773

channel ORA_DISK_1: restoring datafile 00005 to +DATA/sicsstb/datafile/example.265.878897857

channel ORA_DISK_1: reading from backup piece +RECO/sicsstb/backupset/2015_06_08/nnndf0_tag20150608t093842_0.263.881833123

 

channel ORA_DISK_1: piece handle=+RECO/sicsstb/backupset/2015_06_08/nnndf0_tag20150608t093842_0.263.881833123 tag=TAG20150608T093842

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:35

Finished restore at 08-JUN-15

 

RMAN> recover database;

Starting recover at 08-JUN-15

using channel ORA_DISK_1

 

starting media recovery

media recovery complete, elapsed time: 00:00:00

 

Finished recover at 08-JUN-15

 

 

RMAN> alter database open;

database opened

 

 

那么,最后如何关闭这个属性呢?使用set encryption即可。

 

 

RMAN> set encryption off;

executing command: SET encryption

 

 

这种策略,是比较简单的RMAN备份集合加密策略。一般正式运维场景下,是不使用这个的。

时间: 2024-11-10 00:13:18

三种Oracle RMAN备份加密策略(上)的相关文章

三种Oracle RMAN备份加密策略(下)

    说明:本篇参考eygle老师的作品<Oracle DBA手记4:数据安全警示录>,特此表示感谢. 3 .Oracle Wallet加密策略   Oracle Wallet是一种加密安全策略,过去我们在TDE(Oracle透明加密)部分研究过这个组件.简单的说,Oracle Wallet就是在本机上配置一个加密配置文件,通过SQL命令控制Oracle Wallet的开启关闭状态,如果Wallet关闭或者不存在,那么一些加密的信息(包括TDE和RMAN备份集合)数据就不能正常打开.   使

Oracle RMAN备份(一)脱机RMAN 数据库备份

一. RMAN 备份的一些优点 1. RMAN 会检测和报告损坏的数据块. 2. 不需要将表空间置入热备份模式,RMAN 就可以连接备份数据库. 热备份期间会额外的生成重做日志. 3. RMAN 会自动跟踪新的数据文件和表空间,这样就不再需要在脚本中添加新的表空间和数据文件. 4. RMAN 只备份使用过的数据库(直至最高使用标记(High wate mark)),这样RMAN 备份映像通常小于联机备份的备份脚本. 5. RMAN 提供备份映像的实际压缩. 6. RMAN 提供自动且方便的备份,

Oracle RMAN备份(三)联机RMAN 数据库备份

七. 联机RMAN 数据库备份 7.1 联机数据库备份 要使用RMAN执行联机备份操作,数据库必须置于Archivelog 模式. 如果不在归档模式,则尝试联机备份时RMAN就会生成一个错误. Oracle 归档与非归档的切换 http://blog.csdn.net/tianlesoftware/archive/2009/10/19/4693470.aspx 连接备份示例: RMAN> Configure default device type to disk; RMAN> configur

Oracle RMAN备份(二)Backup 命令选项

五. Backup 命令选项 5.1 压缩 默认情况下,RMAN 执行NULL 数据块压缩. 5.1.1 NULL 控制压缩 使用这种形式的压缩时,Oracle不会备份未使用的数据块. 执行NULL 数据块压缩的情形有一下两种情况: (1)从未使用过的数据块不被压缩 (2)在给定的特定标准下,使用过一次的数据块也不被备份. 在第一种情况下,将不会备份其中一直没有数据的所有数据块,在第二种情况下,如果数据库和关联的数据库满足某种标准,空块将不被备份,即使 它在某个时刻包含数据. 下面是允许RMAN

Oracle RMAN备份(四)副本

八. 副本 8.1 映像副本的介绍 RMAN 可以创建数据库数据文件,归档重做日志或者控制文件的精确副本. Rman 副本是这些文件的副本,区别仅仅在于名称和位置上的变化.我们不 需要考虑备份片或其他问题. 映像副本只能在磁盘上生成,且不能生成增量副本. 生成映像副本必须加载或打开数据库.生成副本的历史记录保存 在数据库控制文件中.所以我们可以跟踪副本生成的时间和驻留的位置. 类似与常规备份,可以建立整个数据库,表空间或数据文件的映像副本. RMAN 复制过程提供一些和普通RMAN 备份集相同的

oracle RMAN备份报错的诊断过程(二)跟踪错误信息及寻找定位问题的方向

今天检查数据库中的备份输出脚本时,发现RMAN备份出现了错误. 这一篇跟踪错误信息,寻找定位问题的方向. 根据前面的问题描述,发现问题越来越复杂,从一个简单的RMAN备份报错,牵扯到系统中有3个长时间运行的JOB,以及RAC环境当前节点存在了大量的RACGMAIN CHECK进程的存在. 虽然问题很复杂,就不要急于盲目操作,先简单分析一下当前的状况. 发现问题是由于RMAN备份脚本报错造成的,但是根据错误信息和随后的测试发现,问题是可以重现的,并不是简单的RMAN问题,导致问题的原因应该是共享资

win平台oracle rman备份和删除dg备库归档日志脚本_oracle

总觉得使用windows跑oracle是不靠谱的事情,可以这个世界上总有很多人喜欢做类似这样的事情,对于数据库比较常见的两件事情:rman和删除dg备库归档日志,在linux/unix平台上使用shell实现很简单,可是跑到win里面,就变的烦了,不是因为其麻烦,而是因为用的人少,不知道怎么下手处理该事情,我编写了简单的实现初级功能的win下面rman备份和删除备库归档日志脚本,供大家参考,也更加欢迎朋友提出来更加好的处理方法(win是真心的不懂)rman备份脚本 复制代码 代码如下: --ba

ORACLE RMAN备份失败之ORA-19599

    近期的oracle数据库巡检中,一地市oracle数据库的rman备份出现失败如下: 查看数据库rman备份日志,日志提示归档中有坏块: 输入归档日志线程=1 序列=43530 RECID=35316 STAMP=949830743 通道 c4: 正在启动段 1 于 20-7月 -17 RMAN-03009: backup 命令 (c1 通道上, 在 07/20/2017 09:52:28 上) 失败ORA-19599: 块编号 8 已在 archived log E:\BACKUP\A

oracle RMAN备份FORMAT格式中%a是什么意思

今天三思问我一个问题:RMAN备份FORMAT格式中%a的含义. 其实Oracle的文档有这个表述: %a Specifies the activation ID of the database. 不过这个描述很不明确.其实junsansi的意思是,这个%a对应的信息在数据库中的哪里体现出来. 下面先看看备份信息里面的这个值: [oracle@yans1 ~]$ rman target / Recovery Manager: Release10.2.0.3.0 - Production on星期