二、加密資料庫密碼
可以通過GoldenGate加密一些資料庫口令,可以加密的資料庫口令大致有下列3種。
GoldenGate Extract、Replicat進程及其他進程登入到資料庫的密碼。
ASM資料庫、GoldenGate需要登入到ASM執行個體的密碼。
GoldenGate開啟DDL的情況下,如果生產端執行類似CREATE | ALTER} USER <name> IDENTIFIED BY <password> 的操作,容災端有參數DDLOPTIONS DEFAULTUSERPASSWORD就會對密碼進行加密,使其與生產端的不同。
加密資料庫密碼的方法如下。
進入GoldenGate GGSCI命令列,然後輸入命令:
樣本7:
ENCRYPT PASSWORD <password>
GoldenGate就會利用預設的key產生一個加密的密碼,當然也可以自己指定key來產生加密密碼,只需要鍵入命令:
樣本8:
CRYPT PASSWORD <password> ENCRYPTKEY <keyname>
<keyname>是使用者自己產生的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 length> <n>
可以得到多個KEY,其中:
<key length>:是產生的加密密碼的長度,最大為128位元組。
<n>:控制要產生的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 <user>, PASSWORD <encrypted_password>, &ENCRYPTKEY {DEFAULT | <keyname>}
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@<ASM_instance_name>, ASMPASSWORD <encrypted_password>, ENCRYPTKEY {DEFAULT | <keyname>}
讀者可以自行去實驗,這裡就不示範了。
CREATE/ALTER USER 密碼:
樣本15:
DDLOPTIONS DEFAULTUSERPASSWORD <encrypted_password>,ENCRYPTKEY {DEFAULT | <keyname>}
對參數中名詞的解釋:
<user id> 是資料庫中用於GoldenGate進程的使用者。對於ASM,使用者必須具有SYS許可權。
<encrypted_password> 使用命令ENCRYPT PASSWORD得出的加密密碼。
ENCRYPTKEY DEFAULT 利用GoldenGate預設的KEY產生的加密密碼。
ENCRYPTKEY <keyname> 如果在使用命令ENCRYPT PASSWORD的時候使用了ENCRYPTKEY <keyname>參數,那麼在參數檔案中也需要加入這個選項。告訴GoldenGate是使用使用者自訂的KEY產生的加密密碼。
oracle視頻教程請關注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html