要使用这种数据加密方法,您需要创建一个主密钥钱包并将一个主密钥添加到钱包中。此方法的工作方式如下,具体取决于数据是在trail还是通过TCP / IP进行加密:
- 每次Oracle GoldenGate创建一个跟踪文件时,它都会自动生成一个新的加密密钥。该加密密钥加密trail内容。主密钥加密加密密钥。加密密钥的这个过程被称为密钥包装,并在美国标准委员会的标准ANS X9.102中进行了描述。
- 要通过网络加密数据,Oracle GoldenGate将使用基于主密钥的加密功能生成会话密钥。
Oracle GoldenGate使用自动登录钱包(文件扩展名为.sso),这意味着它是一个不需要人为干预来提供必要密码的混淆容器。
iSeries,z / OS或NonStop平台不支持使用主密钥和钱包加密数据。
本节将指导您完成以下任务:
- 创建电子钱包并添加主密钥
- 在参数文件中指定加密参数
- 更新主密钥
- 删除陈旧的主密钥
11.2.1创建电子钱包并添加主密钥
钱包是以独立于平台的格式创建的。钱包可以存储在Oracle GoldenGate环境中所有系统均可访问的共享文件系统上。或者,您可以在Oracle GoldenGate环境中的每个系统上使用相同的钱包。如果您在每个系统上使用钱包,则必须在一个系统(通常是源系统)上创建钱包,然后将其复制到Oracle GoldenGate环境中的所有其他系统。每次添加,更改或删除主密钥时都必须执行此操作。
此过程在源系统上创建钱包,然后引导您将其复制到Oracle GoldenGate环境中的其他系统。
- (可选)要将钱包存储在Oracle GoldenGate安装目录的dirwlt子目录以外的位置,请使用GLOBALS文件中的WALLETLOCATION参数指定所需的位置。 (有关GLOBALS文件的更多信息,请参阅。)
WALLETLOCATION directory_path
- 在GGSCI中使用CREATE WALLET命令创建一个主钥匙钱包,会生成.sso文件。(需要先切换目录到OGG_HOME,否则会报错2018-06-20T03:19:28Z ERROR OGG-06129 Oracle Wallet cannot be created.)
CREATE WALLET
- 使用GGSCI中的ADD MASTERKEY命令将一个主密钥添加到钱包。
ADD MASTERKEY
- 发出INFO MASTERKEY命令以确认您添加的密钥是当前版本。在新安装中,版本应为1。
INFO MASTERKEY
- 使用VERSION选项发出INFO MASTERKEY命令,其中版本是当前版本号。记录该版本的版本号和AES哈希值。
INFO MASTERKEY VERSION version
- 将钱包复制到所有其他Oracle GoldenGate系统。
- 在复制钱包的每个系统上,使用VERSION选项发出INFO MASTERKEY命令,其中版本是您记录的版本号。对于每个钱包,确保状态为当前并将AES哈希值与您最初记录的哈希值进行比较。所有钱包必须显示相同的密钥版本和散列值。
INFO MASTERKEY VERSION version
11.2.2在参数文件中指定加密参数
- 在以下参数文件中,添加以下内容:1)加密trail数据:在主要提取组和数据泵的参数文件(the primary Extract group and the data pump)中,在指定要加密的trail或文件的任何参数前添加ENCRYPTTRAIL参数语句。指定trail或文件的参数是EXTTRAIL,RMTTRAIL,EXTFILE和RMTFILE。语法是:
ENCRYPTTRAIL {AES128 | AES192 | AES256 | BLOWFISH}
2)要通过TCP / IP加密数据:在数据泵的参数文件(或主要提取器中,如果没有使用泵),请使用RMTHOSTOPTIONS参数的ENCRYPT选项。语法是:
RMTHOSTOPTIONS host, MGRPORT port, ENCRYPT {AES128 | AES192 | AES256 | BLOWFISH}RMTHOSTOPTIONS ENCRYPT {AES128 | AES192 | AES256 | BLOWFISH}
Where:
1)RMTHOSTOPTIONS用于提取物,包括被动提取物。有关被动提取的更多信息,请参阅。2)不带选项的ENCRYPTTRAIL指定256个字节的字节替换。此格式不安全,不应在生产环境中使用。仅用于与早期Oracle GoldenGate版本的后向兼容性。3)AES128采用AES-128加密算法进行加密。4)AES192采用AES-192加密算法进行加密。5)AES256采用AES-256加密算法进行加密。6)BLOWFISH使用Blowfish加密,具有64位块大小和32位到128位的可变长度密钥大小。如果平台支持,请使用AES。使用BLOWFISH与以前的Oracle GoldenGate版本进行后向兼容,以及在NonStop上使用z / OS,DB2 for i和SQL / MX上的DB2。这些平台不支持AES。 - 如果希望在将数据写入输出trail之前对其进行解密,请将DECRYPTTRAIL参数用于数据泵。否则,如果需要处理,数据泵会自动将其解密,然后在写入输出trail之前重新加密它。 (Replicat自动解密数据,无需任何参数输入。)
DECRYPTTRAIL
您可以显式解密传入的trail数据,然后再次对其进行重新加密以用于任何输出trail或文件。首先,输入DECRYPTTRAIL解密数据,然后输入ENCRYPTTRAIL及其输出轨迹规范。 DECRYPTTRAIL必须先于ENCRYPTTRAIL。如果需要,显式解密和重新加密使您可以将AES算法从跟踪改为跟踪。例如,您可以使用AES 128加密本地路径,使用AES 256加密远程路径。或者,您可以使用主密钥和钱包方法从一个进程加密到第二个进程,然后使用ENCKEYS方法从第二个进程加密到第三个进程。
11.2.3更新主密钥
此过程更新加密密钥钱包中的主加密密钥。更新主密钥会创建密钥的新版本。它的名字保持不变,但是位顺序改变。作为安全策略的一部分,您应该定期更新当前的主密钥,以免它过时。
主密钥的所有更新版本都保留在钱包中,直到用DELETE MASTERKEY命令将其标记为删除,然后使用PURGE WALLET命令清除钱包。有关更多信息,请参阅。
除非钱包在共享存储上集中维护(作为共享钱包),否则必须将更新后的钱包复制到使用该钱包的Oracle GoldenGate配置中的所有其他系统。为此,必须停止Oracle GoldenGate。此过程包括以正确顺序执行这些任务的步骤。
- 停止提取。
STOP EXTRACT group
- 在目标系统上,为每个Replicat发出以下命令,直到它返回At EOF。
SEND REPLICAT group STATUS
- 在源系统上,停止数据泵
STOP EXTRACT group
- 在目标系统上,停止Replicat组。
STOP REPLICAT group
- 在源系统上,发出以下命令打开钱包。
OPEN WALLET
- 在源系统上,发出以下命令以确认当前密钥的版本。记录版本。
INFO MASTERKEY
- 在源系统上,发出以下命令以更新主密钥。
RENEW MASTERKEY
- 在源系统上,发出以下命令以确认新版本是最新版本。
INFO MASTERKEY
如果您正在使用共享钱包,请转至步骤12.如果您在每个系统上使用钱包,请继续下一步。
- 在源系统上,发出以下命令,其中版本是主密钥的新版本。记录散列值。
INFO MASTERKEY VERSION version
- 将更新的钱包从源系统复制到与所有目标系统上的旧钱包相同的位置。
- 在每个目标上,发出以下命令,其中version是主密钥的新版本号。对于每个钱包,确保状态为当前并将新的哈希值与您最初记录的哈希值进行比较。所有钱包必须显示相同的密钥版本和散列值。
INFO MASTERKEY VERSION version
- 重新启动提取。
START EXTRACT group
- 重新启动数据泵。
START EXTRACT group
- 重新启动Replicat。
START REPLICAT group
11.2.4删除陈旧的主密钥
此过程将删除旧密钥的旧版本。删除旧密钥应成为维护安全Oracle GoldenGate钱包整体策略的一部分。建议您制定一项政策,确定您想要在钱包中保留多少个版本的密钥,以及要保留多长时间。
对于使用共享钱包的Oracle GoldenGate部署,主密钥更新之前应保留旧版本的主密钥,直到所有进程都使用最新版本。等待的时间取决于部署的拓扑,等待时间和数据负载。至少等待24小时是一个保守的估计,但您可能需要执行测试以确定所有进程开始使用新密钥需要多长时间。要确定是否所有进程都使用最新版本,请在更新主密钥后立即查看每个提取的报告文件,以确认与旧密钥开采的最后一个SCN。然后,监视Replicat报告文件以验证所有Replicat组都应用了此SCN。此时,您可以删除旧版本的主密钥。
如果钱包位于所有使用该钱包的Oracle GoldenGate安装均可访问的中央存储上,则只需执行一次共享钱包的这些步骤即可。您不需要停止Oracle GoldenGate进程。
如果钱包不在中央存储中(即每个Oracle GoldenGate系统都有一个副本),则可以执行以下操作之一:
I、如果您可以停止Oracle GoldenGate进程,则只需执行一次更改钱包的步骤,然后在重新启动Oracle GoldenGate进程之前将更新后的钱包复制到其他系统。
II、如果无法停止Oracle GoldenGate进程,则必须执行步骤来更改每个系统上的钱包,并确保每个系统上的钱包完全相同。
- 在源系统上,发出以下命令以确定要删除的主密钥的版本。通常,最旧的版本应该被删除。记录这些版本。
INFO MASTERKEY
- 在源系统上,发出以下命令打开钱包。
OPEN WALLET
- 发出以下命令以删除陈旧的主密钥。选项可用于删除特定版本,一系列版本或包括当前版本的所有版本。要删除所有版本,必须停止事务活动和Oracle GoldenGate进程。
DELETE MASTERKEY {VERSION version | RANGE FROM begin_value TO end_value}
DELETE MASTERKEY标记删除的关键版本,但实际上并未删除它们。
- 查看DELETE MASTERKEY命令返回的消息,以确保正确的版本被标记为删除。要取消标记为错误的任何版本,请在继续执行这些步骤之前使用UNDELETE MASTERKEY VERSION版本命令。如果需要,您可以使用INFO MASTERKEY命令确认标记的删除。
- 如果您确信正确的版本被标记为删除,请发出以下命令将其从钱包中清除。这是一个永久删除,无法撤消。
PURGE WALLET
下一步:
1)如果钱包驻留在共享存储上,则完成这些步骤。2)如果每个系统上都有一个钱包,并且无法停止Oracle GoldenGate进程,请在每个Oracle GoldenGate系统上重复上述步骤。3)如果每个系统上都有一个钱包,并且您可以停止Oracle GoldenGate进程,请继续执行这些步骤来停止进程并将钱包以正确的顺序复制到其他系统。 - 停止提取。
STOP EXTRACT group
- 在GGSCI中,为每个数据泵提取发出以下命令,直到每个数据返回At EOF,表示本地trail中的所有数据都已处理。
SEND EXTRACT group STATUS
- 停止数据泵。
STOP EXTRACT group
- 在目标系统上,为每个Replicat发出以下命令,直到它返回At EOF。
SEND REPLICAT group STATUS
- 停止复制组。
STOP REPLICAT group
- 将更新的钱包从源系统复制到与所有目标系统上的旧钱包相同的位置。
- 重新启动提取。
START EXTRACT group
- 重新启动数据泵。
START EXTRACT group
- 重新启动Replicat
START REPLICAT group
参考资料
https://docs.oracle.com/goldengate/c1221/gg-winux/GWUAD/configuring-oracle-goldengate-security.htm#GWUAD937