要使用这种数据加密方法,您需要配置Oracle GoldenGate以生成加密密钥并将密钥存储在本地ENCKEYS文件中。此方法使用的永久密钥只能通过根据使用加密密钥填充ENCKEYS文件中的说明重新生成算法来更改。 ENCKEYS文件必须通过在操作系统中分配文件权限的常规方法进行保护。
此过程生成AES加密密钥并提供将其存储在ENCKEYS文件中的说明。
- 使用ENCKEYS方法加密数据
- 使用ENCKEYS方法解密数据
- 使用ENCKEYS方法进行数据加密的示例
11.3.1 用ENCKEYS方法加密数据
1、生成加密密钥并将其存储在ENCKEYS文件中。请参阅使用加密密钥填充ENCKEYS文件。确保将完成的ENCKEYS文件复制到任何中间系统和所有目标系统上的Oracle GoldenGate安装目录。
2、在以下参数文件中,添加以下内容:
- 加密trail数据:在主要提取组和数据泵的参数文件中,在指定要加密的路径或文件的任何参数前添加ENCRYPTTRAIL参数。指定路径或文件的参数是EXTTRAIL,RMTTRAIL,EXTFILE和RMTFILE。语法是以下之一:
ENCRYPTTRAIL {AES128 | AES192 | AES256 | BLOWFISH} ENCRYPTTRAIL AES192, KEYNAME keyname
- 通过TCP / IP对数据进行加密:在数据泵的参数文件(或主要提取程序,如果没有使用泵)的RMTHOSTOPTIONS参数中,使用KEYWORD子句添加ENCRYPT选项。语法是以下之一:
RMTHOSTOPTIONS host, MGRPORT port, ENCRYPT {AES128 | AES192 | AES256 | BLOWFISH} KEYNAME keyname
RMTHOSTOPTIONS ENCRYPT {AES128 | AES192 | AES256 | BLOWFISH} KEYNAME keyname
Where:
- RMTHOSTOPTIONS用于提取。有关被动提取的更多信息,请参阅使用目标系统连接启动。
- 没有选项的ENCRYPTTRAIL使用AES128作为所有数据库类型的默认值,除了iSeries,z / OS和NonStop平台,其中默认情况下是BLOWFISH。
- AES128采用AES-128加密算法进行加密。不支持iSeries,z / OS和NonStop平台。
- AES192采用AES-192加密算法进行加密。不支持iSeries,z / OS和NonStop平台。
- AES256采用AES-256加密算法进行加密。不支持iSeries,z / OS和NonStop平台。
- BLOWFISH使用Blowfish加密,具有64位块大小和32位到128位的可变长度密钥大小。如果平台支持,请使用AES。使用BLOWFISH与以前的Oracle GoldenGate版本进行后向兼容,以及在NonStop上使用z / OS,DB2 for i和SQL / MX上的DB2。这些平台不支持AES。
- KEYNAME keyname指定ENCKEYS文件中加密密钥的逻辑查找名称。不是ENCRYPTTRAIL的选项
除非解压缩处于被动配置,否则将使用RMTHOST。有关更多信息,请参阅使用目标系统连接启动。
3、如果使用通过TCP / IP加密的数据的静态收集器,请将以下参数附加到收集器启动字符串中:
-KEYNAME keyname -ENCRYPT algorithm
指定的密钥名称和算法必须与RMTHOST的KEYNAME和ENCRYPT选项指定的名称和算法相匹配
11.3.2用ENCKEYS方法解密数据
除非指定了trail加密,否则通过TCP / IP连接加密的数据在写入trail之前会在目标处自动解密。
在trail中加密的数据保持加密状态,除非使用DECRYPTTRAIL参数。在Replicat可以将加密数据应用于目标之前,DECRYPTTRAIL是必需的。除非使用DECRYPTTRAIL和ENCRYPTTRAIL参数,否则数据泵会将加密数据传递到输出trail。如果数据泵必须对数据执行操作,则按以下方式对数据进行解密和加密。
解密数据以便通过数据泵进行处理
将DECRYPTTRAIL参数添加到数据泵的参数文件中。解密算法和密钥必须与用于加密踪迹的密钥匹配(请参阅使用ENCKEYS方法加密数据)
DECRYPTTRAIL {AES128 | AES192 | AES256 | BLOWFISH}
在数据泵处理后加密数据
要在数据泵将其写入输出trail或文件之前加密数据,请在指定这些路径或文件的参数前使用ENCRYPTTRAIL参数。指定trail或文件的参数是EXTTRAIL,RMTTRAIL,EXTFILE和RMTFILE。 ENCRYPTTRAIL参数和trail或文件规范必须在DECRYPTTRAIL参数之后进行。请参阅使用ENCKEYS方法加密数据。
使用ENCRYPTTRAIL指定的算法可能因路径而异。例如,您可以使用AES 128加密本地路径,使用AES 256加密远程路径。
解密数据以供Replicat处理
如果Replicat读取的trail已加密,请将DECRYPTTRAIL参数语句添加到Replicat参数文件。解密算法和密钥必须与用于加密线索的解密算法和密钥相匹配。请参阅使用ENCKEYS方法加密数据。
11.3.3 使用ENCKEYS方法进行数据加密的例子
以下示例显示如何为不同的trail或文件打开和关闭加密。在这个例子中,Extract写入两个本地路径,其中只有一个必须加密。
在Extract配置中,trail bb是未加密的路径,所以它的EXTTRAIL参数放在加密trail aa的ENCRYPTTRAIL参数之前。或者,可以在指定trail bb的EXTTRAIL参数前使用NOENCRYPTTRAIL参数,然后在EXTTRAIL参数指定trail aa之前使用ENCRYPTTRAIL参数。
在这个例子中,加密数据必须解密,以便数据泵1pump可以对其执行工作。因此,DECRYPTTRAIL参数用于数据泵的参数文件中。要重新加密输出数据,ENCRYPTTRAIL参数必须在DECRYPTTRAIL之后但在输出trail规范之前使用。如果数据泵不需要对数据执行任何操作,则可以省略DECRYPTTRAIL和ENCRYPTTRAIL参数以保留加密到Replicat的所有路径。
Example 11-1 Extract Parameter File
EXTRACT capt USERIDALIAS ogg DISCARDFILE /ogg/capt.dsc, PURGE -- Do not encrypt this trail. EXTTRAIL /ogg/dirdat/bb TABLE SALES.*; -- Encrypt this trail with AES-192. ENCRYPTTRAIL AES192 EXTTRAIL /ogg/dirdat/aa TABLE FIN.*;
Example 11-2 Data Pump 1 Parameter File
EXTRACT 1pump USERIDALIAS ogg DISCARDFILE /ogg/1pmp.dsc, PURGE -- Decrypt the trail this pump reads. Use encryption key mykey1. DECRYPTTRAIL AES192 -- Encrypt the trail this pump writes to, using AES-192. RMTHOSTOPTIONS myhost1, MGRPORT 7809 ENCRYPTTRAIL AES192 RMTTRAIL /ogg/dirdat/cc TABLE FIN.*;
Example 11-3 Data pump 2 Parameter File
EXTRACT 2pump USERIDALIAS ogg DISCARDFILE /ogg/2pmp.dsc, PURGE RMTHOST myhost2, MGRPORT 7809 RMTTRAIL /ogg/dirdat/dd TABLE SALES.*;
Example 11-4 Replicat1 (on myhost1) Parameter File
REPLICAT 1deliv USERIDALIAS ogg ASSUMETARGETDEFS DISCARDFILE /ogg/1deliv.dsc, PURGE -- Decrypt the trail this Replicat reads. Use encryption key mykey2. DECRYPTTRAIL AES192 MAP FIN.*, TARGET FIN.*;
Example 11-5 Replicat 2 (on myhost2) parameter file
REPLICAT 2deliv USERIDALIAS ogg ASSUMETARGETDEFS DISCARDFILE /ogg/2deliv.dsc, PURGE MAP SALES.*, TARGET SALES.*;
参考资料
https://docs.oracle.com/goldengate/c1221/gg-winux/GWUAD/configuring-oracle-goldengate-security.htm#GWUAD1074