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.

时间: 2024-11-10 00:57:14

GoldenGate的安全配置的相关文章

Oracle goldengate的通用配置

一.理论 source ADD EXTRACT <ext>, TRANLOG, BEGIN <time>, [, THREADS] ADD EXTTRAIL <local_trail>, EXTRACT <ext> EDIT PARAMS <ext> -- Identify the Extract group: EXTRACT <ext> -- Specify database login information as needed

Oracle GoldenGate 11g的单向DDL配置实战

在认真学习了GoldenGate企业级运维实战后,重点是对OGG几个进程的理解,结合对原理的理解,在整整实验了近两天,反复配置了四次之后,终于配置成功.本文经过多次配置成功实践整理而成,还有很多的细节需要完善. 目录 ================================ 一.环境准备并安装GoldenGate 1. 数据库准备情况 2. 下载OGG软件并解压安装 3. 准备OGG环境变量 4. 配置日志模式 5. 创建GoldenGate用户帐号 6. 安装GoldenGate软件

小麦苗BLOG文章索引

小麦苗BLOG文章索引            自从2014年7月1号开始写blog到2015年5月5日,历时10个月的时间,大概写了90篇文章,这blog多了就乱了,今天抽空出来整理整理,方便大家也方便自己阅读,本文将一直更新,另外,最后我把所有的blog文章全列出来,可能会有用.    小麦苗的所有文章:itpub文章链接-小麦苗.zip     2015年06月03日更新一次,我写的blog数量:109 篇    2015年07月03日更新一次,我写的blog数量:126 篇    2016

Oracle GoldenGate Director安装和配置(无图)

Oracle GoldenGate Director安装和配置 一.安装前准备: 1.JRE软件版本必须是1.6.x以上. Linux平台JDK安装 本文主要描述如何在Linux平台下安装JDK环境.进入网页:http://www.oracle.com/technetwork/java/javase/downloads/index.html 如下图: 这里作为开发人员,我们选择JDK而不是JRE,因此用鼠标点击JDK下面的DOWNLOAD按钮,进入新的网页,如下图: 这里有不同平台的版本可供下载

GoldenGate DDL配置详解(原创)

前言 OS:RHEL 5.4   Oracle:10.2.0.1   GoldenGate:11.2.0.1 For Oracle 10g 注意事项: 1.用户的默认表空间不要指定为SYSTEM,否则在初始化DDL支持时可能会遇到段无法扩展,或包无法编译等错误. 正式应用的话,需要注意ogg用户所在表空间是否有充足的空间. 2.以SYSDBA身份登录到SQL*Plus,此时应该断开所有连接到ORACLE数据库的会话,并且不再允许创建新会话,仅保留刚刚创建的SYSDBA身份登录的SQL*Plus.

配置GoldenGate捕获Replicat端数据应用异常

考虑到GoldenGate对数据的逻辑处理方式,保不齐目标端可能由于什么原因,没能正确复制源端抽取到的数据,那么,默认情况下,Replicat任务会中止并抛出异常信息.这里,我们可以通过自定义的方式,定制错误的处理机制. 异常捕获操作均在目标端进行,源端不需要做什么修改. 首先创建一张日志表,用来记录异常信息,这个表的列可以根据实际情况进行定制,并没有强制性的标准: create table jss.j1_data_change_log (   REP_NAME     VARCHAR2(30)

GoldenGate 配置extract,replicat进程自启动

在GoldenGate中主进程是manager进程,使用start mgr启动.可以在mgr进程中添加一些参数用来在启动mgr进程的同时启动extract和replicat进程   GGSCI (gg01) 130> VIEW params mgr   --mgr主进程端口号   PORT 7809   --动态端口,当指定端口不可用时,会从以下列表中选择一个可用端口   DYNAMICPORTLIST 7800-7909   --启动mgr进程启动启动extract进程   AUTOSTART

Goldengate配置oracle to mysql

以前oracle to mysql试验总是有乱码问题不能解决,后来和同事交流中,他说oracle使用ogg的11g版本,mysql使用ogg的10g版本可以解决乱码问题,开始我还是怀疑,因为想新的版本都不行,难道老版本就可以解决这个问题吗?抱着试试看的态度,做了个试验,尽然成功了,把试验的相关情况记录下来 mysql参数配置(cat /etc/my.cnf): [client] default-character-set = gbk [mysqld] lower_case_table_names

GoldenGate的安装及配置

OGG的配置只做了简单的笔记方便自己以后查询,还没有深入研究. unzip  v18157-01.zip tar vxf ggs_redhatAS40_x64_ora10g_64bit_v10.4.0.19_002.tar ggsci create subdirs edit param mgr PORT 7809 SQL> alter database add supplemental log data; SQL> alter system switch logfile; SQL> se