在实施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的安全配置相关推荐

  1. oracle GoldenGate 的参数配置

    1       GoldenGate简要说明 GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为业内事实上的标准之一. GoldenGate软件是一种基于日志的 ...

  2. 异构GoldenGate 12c 双向复制配置

    1.配置window,添加checkpoint表(本文windows和linux互为source和target)GGSCI (WIN-GM5PVS1CILH) 1> view param ./G ...

  3. goldengate ddl mysql_配置GoldenGate同步DDL语句(3)

    在配置GoldenGate同步DDL语句(2)中我们针对多种DDL语句在GoldenGate环境中的同步进行了测试,但在默认情况下replicat在复制DDL语句失败时不会在replicat repo ...

  4. 11gR2 RAC GoldenGate的HA配置

    第一步 Add VIP resource for OGG 1. Create new VIP resource, use IP address 10.245.48.47 as example, log ...

  5. 异构GoldenGate 12c 单向复制配置

    1.分别在windows2008.linux平台部署oracle 11.2.0.4 2.分别在windows2008.linux平台部署gg.2.1 windows平台:gg的安装目录位C:\ora1 ...

  6. oracle goldengate 数据库复制配置手册

    目录 一.准备工作 二.OGG同步思路 三.配置Windows和Linux的Mgr进程 四.添加目端checkpoint表 五.配置进程 登录ogg控制台 配置源端Ext进程 配置Ext参数 配置pu ...

  7. 转发一份GoldenGate 配置文档,里面有参数说明,值得看

    1       GoldenGate简要说明 GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为业内事实上的标准之一. GoldenGate软件是一种基于日志的 ...

  8. 转发一份GoldenGate 配置文档

    转发一份GoldenGate 配置文档,里面有参数说明,值得看 1       GoldenGate简要说明 GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为 ...

  9. GoldenGate Director安装及配置文档

    下面文章的部分内容来网络,但所有内容都经过自己的测试.整理.补充. 目录概要 1.1        概述 1.2        GoldenGate Director概述 1.3        Gol ...

最新文章

  1. AI是万能的吗?当前AI仍面临的难题是什么?
  2. 一个交换程序的通用版本
  3. 机器人技术推动工业领域的数字革命
  4. LPC43xx OTP
  5. windows下mysql安装配置启动
  6. 程序压力测试、性能测试AB、Webbench、Tsung
  7. java metrics 简书_Spring Boot Metrics
  8. 《C++ Primer》7.1.2节练习(部分)
  9. 企业微信小程序_集成微信小程序插件_地图选点插件
  10. 【文献学习】强化学习3:基于数据的方法
  11. [转载] python中将str转成数字_python如何将字符转换为数字
  12. HTML5的革新:结构之美
  13. bug10下的工具(以防重新装机)
  14. 传统博物馆的自救之路,名画也变NFT
  15. 基于SpringBoot + Vue的个人博客系统16——文章的修改和删除
  16. Duilib异形窗口
  17. 关于ARMv8另外几个问题
  18. vue子组件给父组件传值时接收不到数据
  19. java文件输入输出
  20. html惊喜盒子效果,网页设计之css炫酷3d盒子效果

热门文章

  1. 苏世民的54条人生成功经验
  2. Bmob后台云数据库
  3. 朗逸保险丝安培数及保险丝配置说明
  4. .Net MVC个人笔记
  5. 【Spring Boot】构造、访问Restful Webservice与定时任务
  6. 基于容器云技术的典型遥感智能解译算法集成
  7. Angular真有React开发人员讲得那么差劲?
  8. 苹果在 WWDC 上宣布放弃英特尔转向 ARM 芯片,会有哪些优势?你的 Mac 将何去何从?
  9. 电感和磁珠有哪些区别?
  10. IOS双重认证增加手机号