golden gate 生产环境的安装部署之加安全策略
2014-06-13 11:47
447 查看
一、加密trial文件
根据官方文档的解释,我们通过在extract和replicattion进程中添加ENCRYPTTRAIL/DECRYPTTRAIL参数,来加密解密trail文件
eg:
没加密之前Extract的内容:
下面是容灾端进程的参数和错误信息
下面在容灾端参数文件中加入DECRYPTTRAIL参数,让其对trail文件解密并查看进程的状态:
二、对ogg的各种登陆密码进行加密
先看官方文档:
可以通过GoldenGate加密一些数据库口令,可以加密的数据库口令大致有下列3种。
1、GoldenGate Extract、Replicat进程及其他进程登录到数据库的密码。
2、ASM数据库、GoldenGate需要登录到ASM实例的密码。
3、GoldenGate开启DDL的情况下,如果生产端执行类似CREATE | ALTER} USER <name> IDENTIFIED BY <password> 的操作容灾端有参数 DDLOPTIONS
DEFAULTUSERPASSWORD就会对密码进行加密,使其与生产端的不同
常用的加密数据库密码的方法有如下两种:
<keyname>是用户自己生成的KEY的一个名字,这个名字和KEY将会保存在本地的ENCKEYS文件中。当然想使用这个属性,必须生成一个KEY,在OGG文件夹下面创建一个ENCKEYS文件,并且为这个KEY创建一个名字,那就是keyname。
在用到encryptkey属性时候,有必要先介绍一下生成encryption keys的方法。
用户自己定义KEY:首先要创建一个1到24个字符的keyname,其中不能包含空格和引用,keyvalues最大为128个字节,可以包含数字和字母或者是一个十六进制的字符串加上十六进制的标识符0x,例如:0x420E61BE7002D63560929CCA17A4E1FB。
利用KEYGEN属性生成KEY:源端在GoldenGate的安装目录下,在shell下键入命令:
<key length>:是生成的加密密码的长度,最大为128字节。
<n>:控制要生成的KEY的数量
可以使用dblogin登陆的方式进行测试:
然后我们就可以把这个密码加入到参数中来取代明文的密码文件
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 superkeysetenv (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用户,看到这个配置文件,用里面这个加密的密码也无法登录到数据库,这样就起到了保护数据库数据的作用
根据官方文档的解释,我们通过在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 superkeysetenv (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用户,看到这个配置文件,用里面这个加密的密码也无法登录到数据库,这样就起到了保护数据库数据的作用
相关文章推荐
- golden gate 生产环境的安装部署之管理进程
- golden gate 生产环境的安装部署之初始化数据的方法
- golden gate 生产环境的安装部署之抽取进程
- 生产环境上的HADOOP安装部署注意事项(HDP版)
- 生产环境上的HADOOP安装部署注意事项(HDP版)
- 转_Greenplum 数据库安装部署(生产环境)
- 生产环境上的HADOOP安装部署注意事项(HDP版)
- 实践生产服务器环境最小化安装后 Centos 6.5 优化 一些基础优化和安全设置
- 生产环境上的HADOOP安装部署注意事项(HDP版)
- 生产环境上的HADOOP安装部署注意事项(HDP版)
- 生产环境下戴尔 R820 kvm虚拟化部署三(virt-manager图形化安装kvm虚拟机)
- 生产环境上的HADOOP安装部署注意事项(HDP版)
- 生产环境Cobbler安装服务器部署实战
- 生产环境上的HADOOP安装部署注意事项(HDP版)
- Greenplum 数据库 集群安装部署(生产环境) 所需硬件
- 生产环境上的HADOOP安装部署注意事项(HDP版)
- 生产环境上的HADOOP安装部署注意事项(HDP版)
- 生产环境下戴尔 R820 kvm虚拟化部署一(centos6.6 kvm物理机安装)
- 生产环境上的HADOOP安装部署注意事项(HDP版)
- 生产环境上的HADOOP安装部署注意事项(HDP版)