golden gate 生产环境的安装部署之加安全策略

一、加密trial文件


根据官方文档的解释,我们通过在extract和replicattion进程中添加ENCRYPTTRAIL/DECRYPTTRAIL参数,来加密解密trail文件

eg:

没加密之前Extract的内容:

GGSCI (OE5) 55> view params extma

EXTRACT extma
userid GoldenGate@orcl1, password GoldenGate
setenv (NLS_LANG="AMERICAN_AMERICA.WE8ISO8859P1")
GETTRUNCATES
REPORTCOUNT EVERY 1 MINUTES, RATE
numfiles 50000
DISCARDFILE ./dirrpt/extma.dsc,APPEND,MEGABYTES 50
WARNLONGTRANS 2h,CHECKINTERVAL 3m
EXTTRAIL ./dirdat/ma
DBOPTIONS ALLOWUNUSEDCOLUMN
TRANLOGOPTIONS  CONVERTUCS2CLOBS
DYNAMICRESOLUTION
table scott.* ;
没加密之前Extract trail文件的内容

Logdump 55 >open ./dirdat/ma000001
Current LogTrail is /opt/GoldenGate/orcl1/dirdat/ma000001 
Logdump 56 >ghdr on
Logdump 57 >detail data
Logdump 58 >ggstoken detail
Logdump 59 >pos 0
Reading forward from RBA 0 
Logdump 60 >n
Logdump 65 >n
___________________________________________________________________ 
Hdr-Ind  	:     E  (x45)   	Partition  	:     .  (x04)  
UndoFlag 	:     .  (x00)   	BeforeAfter	:     A  (x41)  
RecLength	:    23  (x0017)	I/O Time   	: 2011/03/22 00:09:39.000.000   
IOType    	:     5  (x05)  	OrigNode  	:   255  (xff) 
TransInd  	:     .  (x00)  	FormatType	:     R  (x52) 
SyskeyLen 	:     0  (x00)  	Incomplete	:     .  (x00) 
AuditRBA  	:          2     	AuditPos  	: 29881732 
Continued 	:     N  (x00)  	RecCount  	:     1  (x01) 

2011/03/22 00:09:39.000.000 Insert          	Len    23 RBA 1391 
Name: SCOTT.TEST 
After  Image:                                   	Partition 4   G  b   
 0000 0005 0000 0001 3100 0100 0a00 0000 066f 7261	| ........1........ora  
 636c 65                                           		| cle  
Column     0 (x0000), Len     5 (x0005)  
 0000 0001 31                                      		| ....1  
Column     1 (x0001), Len    10 (x000a)  
 0000 0006 6f72 6163 6c65                          	| ....oracle  --可以明显的看到单词  
GGS tokens: 
TokenID x52 'R' ORAROWID         Info x00  Length   20 
 4141 414d 3058 4141 4541 4141 4147 5741 4141 0001	| AAAM0XAAEAAAAGWAAA..  
TokenID x4c 'L' LOGCSN           Info x00  Length    6 
 3438 3937 3831                                    		| 489781  
TokenID x36 '6' TRANID           Info x00  Length    8 
 392e 3130 2e32 3939                               		| 9.10.299 
我们再来看看加密后的trail文件
GGSCI (OE5) 55> view params extma
	
EXTRACT extma
userid GoldenGate@orcl1, password GoldenGate
setenv (NLS_LANG="AMERICAN_AMERICA.WE8ISO8859P1")
GETTRUNCATES
REPORTCOUNT EVERY 1 MINUTES, RATE
numfiles 50000
DISCARDFILE ./dirrpt/extma.dsc,APPEND,MEGABYTES 50
WARNLONGTRANS 2h,CHECKINTERVAL 3m
<span style="color:#ff0000;">ENCRYPTTRAIL</span>
EXTTRAIL ./dirdat/ma
DBOPTIONS ALLOWUNUSEDCOLUMN
TRANLOGOPTIONS  CONVERTUCS2CLOBS
DYNAMICRESOLUTION
table scott.* 
再来看加密后的trail文件

Logdump 66 >open ./dirdat/ma000002
Current LogTrail is /opt/GoldenGate/orcl1/dirdat/ma000002 
Logdump 67 >ghdr on
Logdump 68 >detail data
Logdump 69 >ggstoken detail
   
Logdump 74 >n
___________________________________________________________________ 
Hdr-Ind   	:     E  (x45)   	Partition  	:     .  (x04)  
UndoFlag  	:     .  (x00)   	BeforeAfter	:     A  (x41)  
RecLength 	:    24  (x0018)	I/O Time   	: 2011/03/22 00:35:13.000.000   
IOType    	:     5  (x05)   	OrigNode   	:   255  (xff) 
TransInd  	:     .  (x01)   	FormatType	:     R  (x52) 
SyskeyLen 	:     0  (x00)   	Incomplete	:     .  (x00) 
AuditRBA  	:          2      	AuditPos  	: 31891236 
Continued 	:     N  (x00)   	RecCount  	:     1  (x01) 

2011/03/22 00:35:13.000.000 Insert         		Len    24 RBA 1212 
Name: SCOTT.TEST 
After  Image:                                    	Partition 4   G  m   
 5e50 86ba af70 962b cc52 5bf9 a3f7 9760 7eda abd0	| ^P...p.+.R[....`~... 
 –加密后看到的是不可识别的密文
 c092 111e                                         		| ....  
Bad compressed block, found length of 34490 (x86ba), RBA 1212 
  
GGS tokens: 
TokenID x52 'R' ORAROWID         Info x00  Length   20 
 4141 414d 3058 4141 4541 4141 4147 5741 4130 0001	| AAAM0XAAEAAAAGWAA0
在启动加密后,容灾端进程abend
下面是容灾端进程的参数和错误信息
GGSCI (OE5) 3> view params repma

REPLICAT repma
USERID GoldenGate@orcl2, PASSWORD GoldenGate
setenv (NLS_LANG="AMERICAN_AMERICA.WE8ISO8859P1")
--REPORT AT 01:59
REPORTCOUNT EVERY 30 MINUTES, RATE
REPERROR DEFAULT, abend
numfiles 50000
DBOPTIONS ALLOWUNUSEDCOLUMN
MAXTRANSOPS   500000
GROUPTRANSOPS 10000
CHECKPOINTSECS 40
--HANDLECOLLISIONS
assumetargetdefs
DISCARDFILE ./dirrpt/repma.dsc, APPEND, MEGABYTES 50
GETTRUNCATES
ALLOWNOOPUPDATES 
map scott.* , target scott.* ;

-----ERROR信息―――――――
Source Context :
  SourceModule         	: [ggstd.conv.endian]
  SourceID            	: [/mnt/ecloud/workspace/Build_FBO_OpenSys_r11.1.1.0.11_001_[41228]/perforce/src/gglib/ggstd/lecnv.c]
  SourceFunction       	: [convCompSQL]
  SourceLine            	: [531]
  ThreadBacktrace      	: [9] elements
                          	: [/opt/GoldenGate/orcl2/replicat(CMessageContext::
  AddThreadContext()+0x26) [0x82021d6]]
                         	: [/opt/GoldenGate/orcl2/replicat(CMessageFactory::
  CreateMessage(CSourceContext*, unsigned int, ...)	  +0x817) [0x81f8887]]
                        	: [/opt/GoldenGate/orcl2/replicat(_MSG_ERR_MAP_
  COL_INDEX_INVALID(CSourceContext*, DBString<777> 	  const&, int, int, CMessageFactory::Message-
	  Disposition)+0x8b) [0x81d6c4b]]
                         	: [/opt/GoldenGate/orcl2/replicat [0x84aa2bc]]
                         	: [/opt/GoldenGate/orcl2/replicat(ggConvRecLE(char*,
  file_def*, int, char, char)+0x4d) [0x84aa3bd]]
                         	: [/opt/GoldenGate/orcl2/replicat [0x849dd2d]]
                         	: [/opt/GoldenGate/orcl2/replicat(main+0x1f8b) 			   [0x812670b]]
                         	: [/lib/libc.so.6(__libc_start_main+0xdc) 			   [0x68de8c]]
                         	: [/opt/GoldenGate/orcl2/replicat(__gxx_personality_v0+0x1b5)      [0x810a171]]

2011-03-22 00:36:37  ERROR   OGG-01161  Bad column index (24144) specified 	for table SCOTT.TEST, max columns = 2.
根据错误信息猜测是由于抽取进程加密了trail文件,Replicat进程无法还原为真实的信息,导致了进程abend。
下面在容灾端参数文件中加入DECRYPTTRAIL参数,让其对trail文件解密并查看进程的状态:

GGSCI (OE5) 3> view params repma

REPLICAT repma
USERID GoldenGate@orcl2, PASSWORD GoldenGate
setenv (NLS_LANG="AMERICAN_AMERICA.WE8ISO8859P1")
--REPORT AT 01:59
REPORTCOUNT EVERY 30 MINUTES, RATE
REPERROR DEFAULT, abend
<span style="color:#ff6666;">DECRYPTTRAIL</span>    -----加入解密参数
numfiles 50000
DBOPTIONS ALLOWUNUSEDCOLUMN
MAXTRANSOPS   500000
GROUPTRANSOPS 10000
CHECKPOINTSECS 40
--HANDLECOLLISIONS
assumetargetdefs
DISCARDFILE ./dirrpt/repma.dsc, APPEND, MEGABYTES 50
GETTRUNCATES
ALLOWNOOPUPDATES 

map scott.* , target scott.* ;


GGSCI (OE5) 14> info all

Program     Status      Group       Lag           Time Since Chkpt

MANAGER                                                
REPLICAT    RUNNING     REPMA       00:00:00      00:00:03
加入解密参数后重新启动Replicat进程,Replicat进程显示running状态

二、对ogg的各种登陆密码进行加密

先看官方文档:



可以通过GoldenGate加密一些数据库口令,可以加密的数据库口令大致有下列3种。

1、GoldenGate Extract、Replicat进程及其他进程登录到数据库的密码。

2、ASM数据库、GoldenGate需要登录到ASM实例的密码。

3、GoldenGate开启DDL的情况下,如果生产端执行类似CREATE | ALTER} USER <name> IDENTIFIED BY <password> 的操作容灾端有参数   DDLOPTIONS

      DEFAULTUSERPASSWORD就会对密码进行加密,使其与生产端的不同

常用的加密数据库密码的方法有如下两种:

1、ENCRYPT PASSWORD <password>
2、ENCRYPT PASSWORD <password> ENCRYPTKEY <keyname>
其实第一种方法就是使用的default的ENCRYPTKEY,我们使用第二种方法来进行数据库密码的加密

<keyname>是用户自己生成的KEY的一个名字,这个名字和KEY将会保存在本地的ENCKEYS文件中。当然想使用这个属性,必须生成一个KEY,在OGG文件夹下面创建一个ENCKEYS文件,并且为这个KEY创建一个名字,那就是keyname。
在用到encryptkey属性时候,有必要先介绍一下生成encryption keys的方法。
用户自己定义KEY:首先要创建一个1到24个字符的keyname,其中不能包含空格和引用,keyvalues最大为128个字节,可以包含数字和字母或者是一个十六进制的字符串加上十六进制的标识符0x,例如:0x420E61BE7002D63560929CCA17A4E1FB。
利用KEYGEN属性生成KEY:源端在GoldenGate的安装目录下,在shell下键入命令:

KEYGEN <key length> <n>
可以得到多个KEY,其中:
<key length>:是生成的加密密码的长度,最大为128字节。
<n>:控制要生成的KEY的数量

oracle@OE5 orcl1]$ ./keygen 128 4
0xA3116324F0C72B3BE328E728C6E75725

0x907B7678A7AB561CAF2532539A1DE72A

0x7EE5894C5D8F817D7B227D7D6E537630

0x6C4F9D201473AC5E481FC82742890536
在OGG目录下面创建一个名为ENCKEYS的文本文件,为生成的每个KEY起一个名字并保存到这个文件中,以便于GoldenGate使用

## Encryption keys
## Key name        Key value
superkey           0xA3116324F0C72B3BE328E728C6E75725  
superkey1          0x907B7678A7AB561CAF2532539A1DE72A
superkey2          0x7EE5894C5D8F817D7B227D7D6E537630
superkey3          0x6C4F9D201473AC5E481FC82742890536
然后,使用GoldenGate默认的KEY来加密数据库密码:

[oracle@OE5 orcl1]$ ./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.1.1.0.11 Build 001
Linux, x86, 32bit (optimized), Oracle 10 on Dec  6 2010 14:20:28
Copyright (C) 1995, 2010, Oracle and/or its affiliates. All rights reserved.

GGSCI (Allen.Beijing) 2> encrypt password ogg encryptkey superkey
Encrypted password:  AADAAAAAAAAAAADAFCWBHJYIDJYGBFBHJFRALBYHCEXEPFOJVFKHHHBAODRCZDVCJHKDTJHIPGSIJJEI   <span style="font-family: Arial, Helvetica, sans-serif;">--这就是生成的加密密码</span>
Algorithm used:  AES128  
先在我们验证下这个生成的加密的密码能不能使用:

可以使用dblogin登陆的方式进行测试:

GGSCI (Allen.Beijing) 3> dblogin userid ogg,password AADAAAAAAAAAAADAFCWBHJYIDJYGBFBHJFRALBYHCEXEPFOJVFKHHHBAODRCZDVCJHKDTJHIPGSIJJEI encryptkey superkey
Successfully logged into database.
测试成功

然后我们就可以把这个密码加入到参数中来取代明文的密码文件

GGSCI (OE5) 5> edit params extma
EXTRACT extma
--userid GoldenGate@orcl1, password GoldenGate
userid GoldenGate@orcl1 , password <pre code_snippet_id="391338" snippet_file_name="blog_20140613_12_9000586" name="code" class="sql">AADAAAAAAAAAAADAFCWBHJYIDJYGBFBHJFRALBYHCEXEPFOJVFKHHHBAODRCZDVCJHKDTJHIPGSIJJEI, encryptkey superkey
setenv (NLS_LANG="AMERICAN_AMERICA.WE8ISO8859P1")GETTRUNCATESREPORTCOUNT EVERY 1 MINUTES, RATEnumfiles 50000DISCARDFILE ./dirrpt/extma.dsc,APPEND,MEGABYTES 50WARNLONGTRANS 2h,CHECKINTERVAL 3mEXTTRAIL ./dirdat/maDBOPTIONS ALLOWUNUSEDCOLUMNTRANLOGOPTIONS CONVERTUCS2CLOBSDYNAMICRESOLUTIONtable scott.* ;

 

这样在打开参数文件的时候,就看不到密码的明文了。黑客即使攻破了GoldenGate用户,看到这个配置文件,用里面这个加密的密码也无法登录到数据库,这样就起到了保护数据库数据的作用






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值