在实施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.