三種Oracle RMAN備份加密策略(上)

lhrbest發表於2016-10-14

 

說明:本篇參考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備份集合加密策略。一般正式運維場景下,是不使用這個的。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2126332/,如需轉載,請註明出處,否則將追究法律責任。

相關文章