技术活动
CUUG学员就业信息
学员感言、就业资讯
报名热线
文档
当前您的位置:首页 > 技术活动 > 技术中心 > 文档
OGG 安全特性--加密数据库密码-CUUG

  二、加密数据库密码

  可以通过GoldenGate加密一些数据库口令,可以加密的数据库口令大致有下列3种。

  GoldenGate Extract、Replicat进程及其他进程登录到数据库的密码。

  ASM数据库、GoldenGate需要登录到ASM实例的密码。

  GoldenGate开启DDL的情况下,如果生产端执行类似CREATE | ALTER} USER IDENTIFIED BY 的操作,容灾端有参数DDLOPTIONS DEFAULTUSERPASSWORD就会对密码进行加密,使其与生产端的不同。

  加密数据库密码的方法如下。

  进入GoldenGate GGSCI命令行,然后输入命令:

  示例7:

  ENCRYPT PASSWORD

  GoldenGate就会利用默认的key生成一个加密的密码,当然也可以自己指定key来生成加密密码,只需要键入命令:

  示例8:

  CRYPT PASSWORD ENCRYPTKEY

  是用户自己生成的KEY的一个名字,这个名字和KEY将会保存在本地的ENCKEYS文件中。当然想使用这个属性,必须生成一个KEY,而且在本地创建一个ENCKEYS文件,并且为这个KEY创建一个名字,那就是keyname。

  在用到encryptkey属性时候,有必要先介绍一下生成encryption keys的方法。

  用户自己定义KEY:首先要创建一个1到24个字符的keyname,其中不能包含空格和引用,keyvalues最大为128个字节,可以包含数字和字母或者是一个十六进制的字符串加上十六进制的标识符0x,例如:0x420E61BE7002D63560929CCA17A4E1FB。

  利用KEYGEN属性生成KEY:源端在GoldenGate的安装目录下,在shell下键入 命令:

  示例9:

  KEYGEN

  可以得到多个KEY,其中:

  :是生成的加密密码的长度,最大为128字节。

  :控制要生成的KEY的数量。

  示例10:

  [oracle@OE5 orcl1]$ ./keygen 128 4

  0xA3116324F0C72B3BE328E728C6E75725

  0x907B7678A7AB561CAF2532539A1DE72A

  0x7EE5894C5D8F817D7B227D7D6E537630

  0x6C4F9D201473AC5E481FC82742890536

  [oracle@OE5 orcl1]$

  创建一个名为ENCKEYS的ASCII文件,为生成的每个KEY起一个名字并保存到这个文件中,以便于GoldenGate使用:

  示例11:

  ## Encryption keys

  ## Key name Key value

  superkey 0xA3116324F0C72B3BE328E728C6E75725

  superkey1 0x907B7678A7AB561CAF2532539A1DE72A

  superkey2 0x7EE5894C5D8F817D7B227D7D6E537630

  superkey3 0x6C4F9D201473AC5E481FC82742890536

  然后,使用GoldenGate默认的KEY来加密数据库密码:

  示例12:

  [oracle@OE5 orcl1]$ ./ggsci

  Oracle GoldenGate Command Interpreter for Oracle

  Version 11.1.1.0.11 Build 001

  Linux, x86, 32bit (optimized), Oracle 10 on Dec 6 2010 14:20:28

  Copyright (C) 1995, 2010, Oracle and/or its affiliates. All rights reserved.

  GGSCI (OE5) 1> ENCRYPT PASSWORD GoldenGate

  No key specified, using default key…

  Encrypted password: AACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGAEMCQFFBZHVC

  --这就是生成的加密密码

  GGSCI (OE5) 2>

  复制生成的加密密码按下列方式粘贴到GoldenGate参数文件中。

  GoldenGate用户密码:

  示例13:

  USERID , PASSWORD , &ENCRYPTKEY {DEFAULT | }

  GGSCI (OE5) 5> edit params extma

  EXTRACT extma

  --userid GoldenGate@orcl1, password GoldenGate

  userid GoldenGate@orcl1 , password AACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGA-EMCQFFBZHVC , ENCRYPTKEY DEFAULT

  setenv (NLS_LANG="AMERICAN_AMERICA.WE8ISO8859P1")

  GETTRUNCATES

  REPORTCOUNT EVERY 1 MINUTES, RATE

  numfiles 50000

  DISCARDFILE ./dirrpt/extma.dsc,APPEND,MEGABYTES 50

  WARNLONGTRANS 2h,CHECKINTERVAL 3m

  EXTTRAIL ./dirdat/ma

  DBOPTIONS ALLOWUNUSEDCOLUMN

  TRANLOGOPTIONS CONVERTUCS2CLOBS

  DYNAMICRESOLUTION

  table scott.* ;

  这样在打开参数文件的时候,就看不到密码的明文了。黑客即使攻破了GoldenGate用户,看到这个配置文件,用里面这个加密的密码也无法登录到数据库,这样就起到了保护数据库数据的作用。

  ASM GoldenGate用户访问密码:

  示例14:

  TRANLOGOPTIONS ASMUSER SYS@, ASMPASSWORD , ENCRYPTKEY {DEFAULT | }

  读者可以自行去试验,这里就不演示了。

  CREATE/ALTER USER 密码:

  示例15:

  DDLOPTIONS DEFAULTUSERPASSWORD ,ENCRYPTKEY {DEFAULT | }

  对参数中名词的解释:

   是数据库中用于GoldenGate进程的用户。对于ASM,用户必须具有SYS权限。

   使用命令ENCRYPT PASSWORD得出的加密密码。

  ENCRYPTKEY DEFAULT 利用GoldenGate默认的KEY生成的加密密码。

  ENCRYPTKEY 如果在使用命令ENCRYPT PASSWORD的时候使用了ENCRYPTKEY 参数,那么在参数文件中也需要加入这个选项。告诉GoldenGate是使用用户自定义的KEY生成的加密密码。