《叱咤风云GoldenGate企业级运维实战》第10章GoldenGate的安全特性Word文档下载推荐.docx
《《叱咤风云GoldenGate企业级运维实战》第10章GoldenGate的安全特性Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《《叱咤风云GoldenGate企业级运维实战》第10章GoldenGate的安全特性Word文档下载推荐.docx(15页珍藏版)》请在冰点文库上搜索。
DYNAMICRESOLUTION
tablescott.*;
没加密之前Extracttrail文件的内容:
示例10-2:
Logdump55>
open./dirdat/ma000001
CurrentLogTrailis/opt/GoldenGate/orcl1/dirdat/ma000001
Logdump56>
ghdron
Logdump57>
detaildata
Logdump58>
ggstokendetail
Logdump59>
pos0
ReadingforwardfromRBA0
Logdump60>
n
Logdump65>
___________________________________________________________________
Hdr-Ind:
E(x45)Partition:
.(x04)
UndoFlag:
.(x00)BeforeAfter:
A(x41)
RecLength:
23(x0017)I/OTime:
2011/03/2200:
09:
39.000.000
IOType:
5(x05)OrigNode:
255(xff)
TransInd:
.(x00)FormatType:
R(x52)
SyskeyLen:
0(x00)Incomplete:
.(x00)
AuditRBA:
2AuditPos:
29881732
Continued:
N(x00)RecCount:
1(x01)
2011/03/2200:
39.000.000InsertLen23RBA1391
Name:
SCOTT.TEST
AfterImage:
Partition4Gb
0000000500000001310001000a000000066f7261|........1........ora
636c65|cle
Column0(x0000),Len5(x0005)
0000000131|....1
Column1(x0001),Len10(x000a)
000000066f7261636c65|....oracle--可以明
显的看到单词
GGStokens:
TokenIDx52'
R'
ORAROWIDInfox00Length20
4141414d30584141454141414147574141410001|AAAM0XAAEAAAAGWAAA..
TokenIDx4c'
L'
LOGCSNInfox00Length6
343839373831|489781
TokenIDx36'
6'
TRANIDInfox00Length8
392e31302e323939|9.10.299
接下来再在参数文件中加入ENCRYPTTRAIL参数,使其对trail文件加密:
示例10-3:
ENCRYPTTRAIL
再查看加密后生成的Extracttrail文件内容:
示例10-4:
Logdump66>
open./dirdat/ma000002
CurrentLogTrailis/opt/GoldenGate/orcl1/dirdat/ma000002
Logdump67>
Logdump68>
Logdump69>
Logdump74>
RecLength:
24(x0018)I/OTime:
35:
13.000.000
.(x01)FormatType:
31891236
13.000.000InsertLen24RBA1212
Partition4Gm
5e5086baaf70962bcc525bf9a3f797607edaabd0|^P...p.+.R[....`~...
–加密后看到的是不可识别的密文
c092111e|....
Badcompressedblock,foundlengthof34490(x86ba),RBA1212
4141414d30584141454141414147574141300001|AAAM0XAAEAAAAGWAA0..
加密后容灾端进程abend。
下面是容灾端进程的参数和错误信息:
示例10-5:
GGSCI(OE5)3>
viewparamsrepma
REPLICATrepma
USERIDGoldenGate@orcl2,PASSWORDGoldenGate
--REPORTAT01:
59
REPORTCOUNTEVERY30MINUTES,RATE
REPERRORDEFAULT,abend
MAXTRANSOPS500000
GROUPTRANSOPS10000
CHECKPOINTSECS40
--HANDLECOLLISIONS
assumetargetdefs
DISCARDFILE./dirrpt/repma.dsc,APPEND,MEGABYTES50
ALLOWNOOPUPDATES
mapscott.*,targetscott.*;
-----ERROR信息―――――――
SourceContext:
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*,unsignedint,...)+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-2200:
36:
37ERROROGG-01161Badcolumnindex(24144)specifiedfortableSCOTT.TEST,maxcolumns=2.
根据错误信息猜测是由于抽取进程加密了trail文件,Replicat进程无法还原为真实的信息,导致了进程abend。
下面在容灾端参数文件中加入DECRYPTTRAIL参数,让其对trail文件解密并查看进程的状态:
示例10-6:
DECRYPTTRAIL-----加入解密参数
GGSCI(OE5)14>
infoall
ProgramStatusGroupLagTimeSinceChkpt
MANAGER
REPLICATRUNNINGREPMA00:
00:
0000:
03
加入解密参数后重新启动Replicat进程,Replicat进程显示running状态。
10.2加密数据库密码
可以通过GoldenGate加密一些数据库口令,可以加密的数据库口令大致有下列3种。
GoldenGateExtract、Replicat进程及其他进程登录到数据库的密码。
ASM数据库、GoldenGate需要登录到ASM实例的密码。
GoldenGate开启DDL的情况下,如果生产端执行类似CREATE|ALTER}USER<
name>
IDENTIFIEDBY<
password>
的操作,容灾端有参数DDLOPTIONSDEFAULTUSERPASSWORD就会对密码进行加密,使其与生产端的不同。
加密数据库密码的方法如下。
进入GoldenGateGGSCI命令行,然后输入命令:
示例10-7:
ENCRYPTPASSWORD<
GoldenGate就会利用默认的key生成一个加密的密码,当然也可以自己指定key来生成加密密码,只需要键入命令:
示例10-8:
CRYPTPASSWORD<
ENCRYPTKEY<
keyname>
<
是用户自己生成的KEY的一个名字,这个名字和KEY将会保存在本地的ENCKEYS文件中。
当然想使用这个属性,必须生成一个KEY,而且在本地创建一个ENCKEYS文件,并且为这个KEY创建一个名字,那就是keyname。
在用到encryptkey属性时候,有必要先介绍一下生成encryptionkeys的方法。
用户自己定义KEY:
首先要创建一个1到24个字符的keyname,其中不能包含空格和引用,keyvalues最大为128个字节,可以包含数字和字母或者是一个十六进制的字符串加上十六进制的标识符0x,例如:
0x420E61BE7002D63560929CCA17A4E1FB。
利用KEYGEN属性生成KEY:
源端在GoldenGate的安装目录下,在shell下键入命令:
示例10-9:
KEYGEN<
keylength>
<
n>
可以得到多个KEY,其中:
:
是生成的加密密码的长度,最大为128字节。
控制要生成的KEY的数量。
示例10-10:
[oracle@OE5orcl1]$./keygen1284
0xA3116324F0C72B3BE328E728C6E75725
0x907B7678A7AB561CAF2532539A1DE72A
0x7EE5894C5D8F817D7B227D7D6E537630
0x6C4F9D201473AC5E481FC82742890536
[oracle@OE5orcl1]$
创建一个名为ENCKEYS的ASCII文件,为生成的每个KEY起一个名字并保存到这个文件中,以便于GoldenGate使用:
示例10-11:
##Encryptionkeys
##KeynameKeyvalue
superkey0xA3116324F0C72B3BE328E728C6E75725
superkey10x907B7678A7AB561CAF2532539A1DE72A
superkey20x7EE5894C5D8F817D7B227D7D6E537630
superkey30x6C4F9D201473AC5E481FC82742890536
然后,使用GoldenGate默认的KEY来加密数据库密码:
示例10-12:
[oracle@OE5orcl1]$./ggsci
OracleGoldenGateCommandInterpreterforOracle
Version11.1.1.0.11Build001
Linux,x86,32bit(optimized),Oracle10onDec6201014:
20:
28
Copyright(C)1995,2010,Oracleand/oritsaffiliates.Allrightsreserved.
GGSCI(OE5)1>
ENCRYPTPASSWORDGoldenGate
Nokeyspecified,usingdefaultkey…
Encryptedpassword:
AACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGAEMCQFFBZHVC
--这就是生成的加密密码
GGSCI(OE5)2>
复制生成的加密密码按下列方式粘贴到GoldenGate参数文件中。
GoldenGate用户密码:
示例10-13:
USERID<
user>
PASSWORD<
encrypted_password>
&
ENCRYPTKEY{DEFAULT|<
}
GGSCI(OE5)5>
editparamsextma
--useridGoldenGate@orcl1,passwordGoldenGate
useridGoldenGate@orcl1,passwordAACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGA-EMCQFFBZHVC,ENCRYPTKEYDEFAULT
这样在打开参数文件的时候,就看不到密码的明文了。
黑客即使攻破了GoldenGate用户,看到这个配置文件,用里面这个加密的密码也无法登录到数据库,这样就起到了保护数据库数据的作用。
ASMGoldenGate用户访问密码:
示例10-14:
TRANLOGOPTIONSASMUSERSYS@<
ASM_instance_name>
ASMPASSWORD<
encrypted_password>
ENCRYPTKEY{DEFAULT|<
读者可以自行去试验,这里就不演示了。
CREATE/ALTERUSER密码:
示例10-15:
DDLOPTIONSDEFAULTUSERPASSWORD<
ENCRYPTKEY{DEFAULT|<
对参数中名词的解释:
<
userid>
是数据库中用于GoldenGate进程的用户。
对于ASM,用户必须具有SYS权限。
使用命令ENCRYPTPASSWORD得出的加密密码。
ENCRYPTKEYDEFAULT利用GoldenGate默认的KEY生成的加密密码。
ENCRYPTKEY<
如果在使用命令ENCRYPTPASSWORD的时候使用了ENCRYPTKEY<
参数,那么在参数文件中也需要加入这个选项。
告诉GoldenGate是使用用户自定义的KEY生成的加密密码。
10.3网络传输加密
GoldenGate在传输数据的时候,默认是不加密的。
可以在GoldenGate通过网络传输数据之前将数据加密,传送到目标端以后,在写入trail文件之前将数据解密。
这样就有效地保护了数据在传输过程中的安全。
加密网络传输