《叱咤风云GoldenGate企业级运维实战》第10章GoldenGate的安全特性.docx
- 文档编号:10640184
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:15
- 大小:23.67KB
《叱咤风云GoldenGate企业级运维实战》第10章GoldenGate的安全特性.docx
《《叱咤风云GoldenGate企业级运维实战》第10章GoldenGate的安全特性.docx》由会员分享,可在线阅读,更多相关《《叱咤风云GoldenGate企业级运维实战》第10章GoldenGate的安全特性.docx(15页珍藏版)》请在冰豆网上搜索。
《叱咤风云GoldenGate企业级运维实战》第10章GoldenGate的安全特性
第10章GoldenGate的安全特性
GoldenGate软件已经被很多大型企业用于数据容灾。
如果用作异地备份容灾,很多是需要通过租用公网的线路进行传输,而这些数据很多都是企业的机密,为了防止机密数据被黑客获取进而损害企业的利益,需要对GoldenGate的安全做一些增强。
除了通过制定操作系统和数据库级别安全防范措施以外,还可以在GoldenGate层面来制定相应的安全策略。
在本地可以通过加密trail文件和数据库文件来保护GoldenGate抽取到的数据。
在网络传输过程中GoldenGate也可以加密传输的数据,用户可以自己定义key来加密数据,使得黑客就算获取了数据也无法对其解密。
下面来一一介绍着几种保护GoldenGate和数据安全的方法。
10.1加密trail文件
加密extracttrail文件非常的简单,只需要在Extract参数文件中加入ENCRYPTTRAIL参数。
Extract进程就会对加入参数以后生成的trail文件进行加密。
如果生产端trail文件加密,那么在容灾端参数文件中必须加入对应的DECRYPTTRAIL参数解密trail文件再入库。
下面用logdump(查看GoldenGatetrial文件的工具)对比一下加密之前和加密以后trail文件中内容的变化。
没加密之前Extract的内容:
示例10-1:
GGSCI(OE5)55>viewparamsextma
EXTRACTextma
useridGoldenGate@orcl1,passwordGoldenGate
setenv(NLS_LANG="AMERICAN_AMERICA.WE8ISO8859P1")
GETTRUNCATES
REPORTCOUNTEVERY1MINUTES,RATE
numfiles50000
DISCARDFILE./dirrpt/extma.dsc,APPEND,MEGABYTES50
WARNLONGTRANS2h,CHECKINTERVAL3m
EXTTRAIL./dirdat/ma
DBOPTIONSALLOWUNUSEDCOLUMN
TRANLOGOPTIONSCONVERTUCS2CLOBS
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>n
___________________________________________________________________
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:
09:
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:
GGSCI(OE5)55>viewparamsextma
EXTRACTextma
useridGoldenGate@orcl1,passwordGoldenGate
setenv(NLS_LANG="AMERICAN_AMERICA.WE8ISO8859P1")
GETTRUNCATES
REPORTCOUNTEVERY1MINUTES,RATE
numfiles50000
DISCARDFILE./dirrpt/extma.dsc,APPEND,MEGABYTES50
WARNLONGTRANS2h,CHECKINTERVAL3m
ENCRYPTTRAIL
EXTTRAIL./dirdat/ma
DBOPTIONSALLOWUNUSEDCOLUMN
TRANLOGOPTIONSCONVERTUCS2CLOBS
DYNAMICRESOLUTION
tablescott.*;
再查看加密后生成的Extracttrail文件内容:
示例10-4:
Logdump66>open./dirdat/ma000002
CurrentLogTrailis/opt/GoldenGate/orcl1/dirdat/ma000002
Logdump67>ghdron
Logdump68>detaildata
Logdump69>ggstokendetail
Logdump74>n
___________________________________________________________________
Hdr-Ind:
E(x45)Partition:
.(x04)
UndoFlag:
.(x00)BeforeAfter:
A(x41)
RecLength:
24(x0018)I/OTime:
2011/03/2200:
35:
13.000.000
IOType:
5(x05)OrigNode:
255(xff)
TransInd:
.(x01)FormatType:
R(x52)
SyskeyLen:
0(x00)Incomplete:
.(x00)
AuditRBA:
2AuditPos:
31891236
Continued:
N(x00)RecCount:
1(x01)
2011/03/2200:
35:
13.000.000InsertLen24RBA1212
Name:
SCOTT.TEST
AfterImage:
Partition4Gm
5e5086baaf70962bcc525bf9a3f797607edaabd0|^P...p.+.R[....`~...
–加密后看到的是不可识别的密文
c092111e|....
Badcompressedblock,foundlengthof34490(x86ba),RBA1212
GGStokens:
TokenIDx52'R'ORAROWIDInfox00Length20
4141414d30584141454141414147574141300001|AAAM0XAAEAAAAGWAA0..
加密后容灾端进程abend。
下面是容灾端进程的参数和错误信息:
示例10-5:
GGSCI(OE5)3>viewparamsrepma
REPLICATrepma
USERIDGoldenGate@orcl2,PASSWORDGoldenGate
setenv(NLS_LANG="AMERICAN_AMERICA.WE8ISO8859P1")
--REPORTAT01:
59
REPORTCOUNTEVERY30MINUTES,RATE
REPERRORDEFAULT,abend
numfiles50000
DBOPTIONSALLOWUNUSEDCOLUMN
MAXTRANSOPS500000
GROUPTRANSOPS10000
CHECKPOINTSECS40
--HANDLECOLLISIONS
assumetargetdefs
DISCARDFILE./dirrpt/repma.dsc,APPEND,MEGABYTES50
GETTRUNCATES
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:
GGSCI(OE5)3>viewparamsrepma
REPLICATrepma
USERIDGoldenGate@orcl2,PASSWORDGoldenGate
setenv(NLS_LANG="AMERICAN_AMERICA.WE8ISO8859P1")
--REPORTAT01:
59
REPORTCOUNTEVERY30MINUTES,RATE
REPERRORDEFAULT,abend
DECRYPTTRAIL-----加入解密参数
numfiles50000
DBOPTIONSALLOWUNUSEDCOLUMN
MAXTRANSOPS500000
GROUPTRANSOPS10000
CHECKPOINTSECS40
--HANDLECOLLISIONS
assumetargetdefs
DISCARDFILE./dirrpt/repma.dsc,APPEND,MEGABYTES50
GETTRUNCATES
ALLOWNOOPUPDATES
mapscott.*,targetscott.*;
GGSCI(OE5)14>infoall
ProgramStatusGroupLagTimeSinceChkpt
MANAGER
REPLICATRUNNINGREPMA00:
00:
0000:
00:
03
加入解密参数后重新启动Replicat进程,Replicat进程显示running状态。
10.2加密数据库密码
可以通过GoldenGate加密一些数据库口令,可以加密的数据库口令大致有下列3种。
GoldenGateExtract、Replicat进程及其他进程登录到数据库的密码。
ASM数据库、GoldenGate需要登录到ASM实例的密码。
GoldenGate开启DDL的情况下,如果生产端执行类似CREATE|ALTER}USER
加密数据库密码的方法如下。
进入GoldenGateGGSCI命令行,然后输入命令:
示例10-7:
ENCRYPTPASSWORD
GoldenGate就会利用默认的key生成一个加密的密码,当然也可以自己指定key来生成加密密码,只需要键入命令:
示例10-8:
CRYPTPASSWORD
当然想使用这个属性,必须生成一个KEY,而且在本地创建一个ENCKEYS文件,并且为这个KEY创建一个名字,那就是keyname。
在用到encryptkey属性时候,有必要先介绍一下生成encryptionkeys的方法。
用户自己定义KEY:
首先要创建一个1到24个字符的keyname,其中不能包含空格和引用,keyvalues最大为128个字节,可以包含数字和字母或者是一个十六进制的字符串加上十六进制的标识符0x,例如:
0x420E61BE7002D63560929CCA17A4E1FB。
利用KEYGEN属性生成KEY:
源端在GoldenGate的安装目录下,在shell下键入命令:
示例10-9:
KEYGEN
可以得到多个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
GGSCI(OE5)5>editparamsextma
EXTRACTextma
--useridGoldenGate@orcl1,passwordGoldenGate
useridGoldenGate@orcl1,passwordAACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGA-EMCQFFBZHVC,ENCRYPTKEYDEFAULT
setenv(NLS_LANG="AMERICAN_AMERICA.WE8ISO8859P1")
GETTRUNCATES
REPORTCOUNTEVERY1MINUTES,RATE
numfiles50000
DISCARDFILE./dirrpt/extma.dsc,APPEND,MEGABYTES50
WARNLONGTRANS2h,CHECKINTERVAL3m
EXTTRAIL./dirdat/ma
DBOPTIONSALLOWUNUSEDCOLUMN
TRANLOGOPTIONSCONVERTUCS2CLOBS
DYNAMICRESOLUTION
tablescott.*;
这样在打开参数文件的时候,就看不到密码的明文了。
黑客即使攻破了GoldenGate用户,看到这个配置文件,用里面这个加密的密码也无法登录到数据库,这样就起到了保护数据库数据的作用。
ASMGoldenGate用户访问密码:
示例10-14:
TRANLOGOPTIONSASMUSERSYS@
读者可以自行去试验,这里就不演示了。
CREATE/ALTERUSER密码:
示例10-15:
DDLOPTIONSDEFAULTUSERPASSWORD
对参数中名词的解释:
对于ASM,用户必须具有SYS权限。
ENCRYPTKEYDEFAULT利用GoldenGate默认的KEY生成的加密密码。
ENCRYPTKEY
告诉GoldenGate是使用用户自定义的KEY生成的加密密码。
10.3网络传输加密
GoldenGate在传输数据的时候,默认是不加密的。
可以在GoldenGate通过网络传输数据之前将数据加密,传送到目标端以后,在写入trail文件之前将数据解密。
这样就有效地保护了数据在传输过程中的安全。
加密网络传输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 叱咤风云GoldenGate企业级运维实战 叱咤风云 GoldenGate 企业级 实战 10 安全 特性