GoldenGate的安全配置
在实施GoldenGate的时候,安全这一项往往是被忽视的。但是作为一个完整运行的GoldenGate系统,基本的安全设置还是很有必要的,比如口令的加密。GoldenGate的安全选项主要有以下5个方面:
? 口令加密(Password Encryption)
? Trail文件加密(Trail File Encryption)
? 网络传输加密(TCP/IP Encryption)
? 命令验证(Command Authentication)
? 可信任连接(Trusted Connection)
这里先来谈谈前3个安全选项。其余两项会在以后的专题中进行讨论。
口令加密、Trail文件加密以及网络传输加密都支持AES-128、AES-192和AES-256加密算法,口令加密和网络传输加密还支持Blowfish加密算法,Trail文件加密还支持字节替换加密。
口令加密
口令加密指的对数据库账号的口令进行加密,这样数据库账号的口令在配置文件中就不会以明文的方式出现了,从而保证了账号的安全。因为通常分配给GoldenGate使用的账号都具有很大的权限,因而对其进行保护也是很有必要的。在进行口令加密前,需要先生成密钥文件。实际上这一步不是必须的。可以使用GoldenGate默认的的密钥来进行加密,但是使用默认的密钥有很多限制:
1、 只能使用Blowfish进行加密。
2、 Trail文件加密只能使用字节替换。
3、 网络传输加密不能使用
所以通常情况下还是需要自己生成密钥文件。生成密钥文件需要两个步骤:
1、 使用keygen工具生成密钥。
2、 在GoldenGate的安装目录建一个名为ENCKEYS的文件,将上述生成的密钥存储在文件中。
具体操作如下:
# 生成密钥,128表示的是生成的密钥长度为128位,3表示生成3个密钥 [ggate@ogg_s current]$ ./keygen 128 3 0x345CEB2DA213DC2F75B0514484FCAB42 0xD8A1B350AF392A75C52EE540B169B267 0x7CE77B73BD5F783A15AD783DDFD6B80C # 将密钥存储到文件中,一行一个密钥 [ggate@ogg_s current]$ cat ENCKEYS ## Key-name Key-value PASSWDKEY 0x345CEB2DA213DC2F75B0514484FCAB42 TRAILKEY 0xD8A1B350AF392A75C52EE540B169B267 TCPIPKEY 0x7CE77B73BD5F783A15AD783DDFD6B80C |
配置好密钥文件后,我们就可以对数据库账号的口令进行加密了。
GGSCI (ogg_s) 1> ENCRYPT PASSWORD OGG123 ENCRYPTKEY PASSWDKEY Encrypted password: AADAAAAAAAAAAAGASBQGIAYGCFRCWELGFJMHBHHDOHWDWGRBBCKCYFSGGJTEJFFJUBQFKESGNAVBRDTF Algorithm used: AES128 |
操作是需要在GGSCI控制台下进行的,PASSWDKEY就是我们刚才配置的密钥名。可以看到这里使用的默认的加密算法是AES-128。如果使用GoldenGate默认的密钥时,加密算法就会是Blowfish:
GGSCI (ogg_s) 2> ENCRYPT PASSWORD OGG123 ENCRYPTKEY DEFAULT Using default key... Encrypted password: AACAAAAAAAAAAAGACARARDMENDJHIIFG Algorithm used: BLOWFISH |
我们可以尝试DBLOGIN来验证加过密的口令是否能正常使用:
GGSCI (ogg_s) 3> DBLOGIN USERID OGG, PASSWORD AADAAAAAAAAAAAGASBQGIAYGCFRCWELGFJMHBHHDOHWDWGRBBCKCYFSGGJTEJFFJUBQFKESGNAVBRDTF, ENCRYPTKEY PASSWDKEY Successfully logged into database. |
OGG账号成功连接数据库了,说明加过密的口令是能正常工作。接下来就是要修改Extract或Replicat的配置文件了。修改也很简单,就是将USERID这一行的内容修改下就可以了:
... SETENV (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1) SETENV (ORACLE_SID=ggtest) --USERID OGG, PASSWORD OGG123 USERID OGG, PASSWORD AADAAAAAAAAAAAGASBQGIAYGCFRCWELGFJMHBHHDOHWDWGRBBCKCYFSGGJTEJFFJUBQFKESGNAVBRDTF, ENCRYPTKEY PASSWDKEY EXTTRAIL /data/ggate/dirext/ggtest/ea ... |
然后将Extract获Replicat进程起来能正常工作就表示完成口令加密的配置了。
Trail文件加密
Trail文件加密,就是将Extract进程解析出来的数据以加密的形式存放在trail文件中(注意不是对整个trail文件进行加密)。不加密的时候数据是以明文的形式存放在trail文件中的(这不是废话么,呵呵)。打开trail文件就可以观察到数据:
或者用logdump工具可以更方便的观察到数据:
如果是加过密的,那数据就是一团乱码了:
即使用logdump工具,也是只能观察到乱码的数据:
这样数据的安全性就有了很好的保障。Trail文件加密适合对数据安全性要求比较高的情形。Trail文件加密的使用模式主要有以下两种:
使用模式1:
使用模式2:
这两者的区别在于,模式1的trail在Extract进程加密后,Pump进程不做任何处理,直接将加密过的数据传送给目标,目标经过解密后将数据应用到目标库。这种模式适合Pump进程只是做传输,而不需要进行如数据过滤、转换等操作的情形。模式2的trail在Extract进程加密后,Pump进程先对trail进行解密,然后又重新加密,再将重新加密后的数据传送给目标,目标经过解密后将数据应用到目标库。这种模式适合Pump进程需要先对数据进行如过滤、转换等操作的情形。
配置Trail文件加密也是非常容易,首先还是生成密钥文件(见口令加密一节中关于密钥文件的内容)。然后修改Extract和Replicat的配置:
# Extract进程配置文件中增加ENCRYPTTRAIL内容 ... SETENV (ORACLE_SID=ggtest) USERID OGG, PASSWORD AADAAAAAAAAAAAGASBQGIAYGCFRCWELGFJMHBHHDOHWDWGRBBCKCYFSGGJTEJFFJUBQFKESGNAVBRDTF, ENCRYPTKEY PASSWDKEY ENCRYPTTRAIL AES128 KEYNAME TRAILKEY EXTTRAIL /data/ggate/dirext/jet2/ea DISCARDFILE /u01/app/oracle/product/ggate/current/dirrpt/EJET2.dsc, APPEND, MEGABYTES 500 FETCHOPTIONS FETCHPKUPDATECOLS ... |
需要注意的是ENCRYPTTRAIL的位置必须要在EXTTRAIL之前。如果把ENCRYPTTRAIL配置在EXTTRAIL之后,那么Extract进程也能正常工作,只是没起到加密作用。
# Replicat进程配置文件中增加DECRYPTTRAIL内容 ... SHOWSYNTAX DYNSQL DBOPTIONS DEFERREFCONST DECRYPTTRAIL AES128 KEYNAME TRAILKEY MAP JET2.*, TARGET JET2.*; ... |
这里需要将密钥文件传送到目标库上。这里是模式1的使用情形。如果是模式2,还需要配置Pump进程:
... DECRYPTTRAIL AES128 KEYNAME TRAILKEY RMTHOST ogg_t, MGRPORT 7809 ENCRYPTTRAIL AES128 KEYNAME TRAILKEY RMTTRAIL /data/ggate/dirrep/jet2/at ... |
这里DECRYPTTRAIL使用的密钥必须是Extract使用的密钥,即TRAILKEY,而再次加密时ENCRYPTTRAIL可以使用另一个密钥,当然也可以使用同一个密钥。但是需要注意的是如果使用了另一个密钥,那么目标的Replicat进程也要使用这个密钥。
网络传输加密
网络传输加密,顾名思义就是Pump进程在传送时将数据进行加密,目标端再接收数据进行解密。这个和Trail文件加密模式2的区别是在网络传输加密方案中,trail是没有进行过加密的,加密发生在传输过程中,MGR进程在接收到数据后对数据进行解密,然后写入到trail中。所以目标的trail也是未加密的,Replicat进程不需要配置解密选项。当然我觉得将Trail文件加密和网络传输加密结合在一起使用,应该也是可以的。网络传输加密适合跨机房的传输,比如做灾备时,数据从机房A传送到机房B,期间肯定得经过公网,那数据传输这时候就是不安全的,通过该方案就能保证数据传输的安全性,即使没有使用专线的情况下,安全强度也还是可以接受的。
要配置网络传输加密非常简单,只需要对Pump进程进行配置修改:
... USERID OGG, PASSWORD AADAAAAAAAAAAAGASBQGIAYGCFRCWELGFJMHBHHDOHWDWGRBBCKCYFSGGJTEJFFJUBQFKESGNAVBRDTF, ENCRYPTKEY PASSWDKEY RMTHOST ogg_t, MGRPORT 7809, ENCRYPT AES128 KEYNAME TCPIPKEY RMTTRAIL /data/ggate/dirrep/jet1/at ... |
如果是Passive Extract的需要使用RMTHOSTOPTIONS进行配置,这个在以后的专题中进行讨论。这里需要注意的是数据库账号的配置是不能少的,这是和通常的Pump配置不同的地方。不然Pump进程不能正常起来,会报类似以下的错误:
ERROR OGG-01453 Oracle GoldenGate Capture for Oracle, pjet1.prm: Database login information not specified in parameter file. |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-1699654/,如需转载,请注明出处,否则将追究法律责任。
GoldenGate的安全配置相关推荐
- oracle GoldenGate 的参数配置
1 GoldenGate简要说明 GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为业内事实上的标准之一. GoldenGate软件是一种基于日志的 ...
- 异构GoldenGate 12c 双向复制配置
1.配置window,添加checkpoint表(本文windows和linux互为source和target)GGSCI (WIN-GM5PVS1CILH) 1> view param ./G ...
- goldengate ddl mysql_配置GoldenGate同步DDL语句(3)
在配置GoldenGate同步DDL语句(2)中我们针对多种DDL语句在GoldenGate环境中的同步进行了测试,但在默认情况下replicat在复制DDL语句失败时不会在replicat repo ...
- 11gR2 RAC GoldenGate的HA配置
第一步 Add VIP resource for OGG 1. Create new VIP resource, use IP address 10.245.48.47 as example, log ...
- 异构GoldenGate 12c 单向复制配置
1.分别在windows2008.linux平台部署oracle 11.2.0.4 2.分别在windows2008.linux平台部署gg.2.1 windows平台:gg的安装目录位C:\ora1 ...
- oracle goldengate 数据库复制配置手册
目录 一.准备工作 二.OGG同步思路 三.配置Windows和Linux的Mgr进程 四.添加目端checkpoint表 五.配置进程 登录ogg控制台 配置源端Ext进程 配置Ext参数 配置pu ...
- 转发一份GoldenGate 配置文档,里面有参数说明,值得看
1 GoldenGate简要说明 GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为业内事实上的标准之一. GoldenGate软件是一种基于日志的 ...
- 转发一份GoldenGate 配置文档
转发一份GoldenGate 配置文档,里面有参数说明,值得看 1 GoldenGate简要说明 GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为 ...
- GoldenGate Director安装及配置文档
下面文章的部分内容来网络,但所有内容都经过自己的测试.整理.补充. 目录概要 1.1 概述 1.2 GoldenGate Director概述 1.3 Gol ...
最新文章
- AI是万能的吗?当前AI仍面临的难题是什么?
- 一个交换程序的通用版本
- 机器人技术推动工业领域的数字革命
- LPC43xx OTP
- windows下mysql安装配置启动
- 程序压力测试、性能测试AB、Webbench、Tsung
- java metrics 简书_Spring Boot Metrics
- 《C++ Primer》7.1.2节练习(部分)
- 企业微信小程序_集成微信小程序插件_地图选点插件
- 【文献学习】强化学习3:基于数据的方法
- [转载] python中将str转成数字_python如何将字符转换为数字
- HTML5的革新:结构之美
- bug10下的工具(以防重新装机)
- 传统博物馆的自救之路,名画也变NFT
- 基于SpringBoot + Vue的个人博客系统16——文章的修改和删除
- Duilib异形窗口
- 关于ARMv8另外几个问题
- vue子组件给父组件传值时接收不到数据
- java文件输入输出
- html惊喜盒子效果,网页设计之css炫酷3d盒子效果