Oracleで暗号化に関する検証 その4

投稿日: 2005年12月07日

<Oracleで暗号化に関する検証 その4>
ペンネーム:ウィーット

今回は、Data Pumpを使用して、他ノードにデータを移動してみましょう。

検証環境は以下の通りです。
expdp元
OS : Red Hat Enterprise Linux AS
Oracle : Oracle10gR2

impdp先
OS : Asianux3
Oracle : Oracle10gR2

それでは、import先の「Asianux3」のWalletの作成をしましょう。
作成手順は1回目に行った手順で行います。

同じpasswordで作成してimpdpを実行してみましょう。

———————————————————————-

$ impdp scott/tiger tables=emp_emcrypt dumpfile=emp_encrypt_expdp.dmp
  -->  directory=pump_dir ENCRYPTION_PASSWORD='insight'

Import: Release 10.2.0.1.0 - Production on 土曜日, 03 12月, 2005 19:41:38

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

接続先: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -
Production
With the Partitioning, OLAP and Data Mining options
ORA-39001: 引数値が無効です
ORA-39180: ENCRYPTION_PASSWORDを暗号化できません
ORA-28362: マスター鍵が見つかりません

———————————————————————-

やはり、同じLinux(Redhat Linux→Asianux)上でもディストリビューションが
違えば、同じpasswordを用いても鍵は異なって作成されます。
また、同一コンピュータ(同一のOS)で同じpasswordを用いて行っても、鍵は異
なって作成されるので、鍵の保管には注意が必要です。

それでは、expdp元のWalletの鍵をimportのサーバーにFTPでバイナリ転送をし
てから、鍵(Wallet)をOPENしてみましょう。
鍵は、$ORACLE_HOME/network/admin/sqlnet.oraで指定した先に格納します。

———————————————————————-

SQL> alter system set wallet open identified by "xxxxx";

システムが変更されました。

———————————————————————-

OPEN出来ました。どこで作成した鍵(Wallet)であるかは問題ではないようです。
パスワードは、expdpしたノードで使用しているpasswordです。

それでは、Data Pumpを用いて Importしてみましょう。

———————————————————————-

$ impdp scott/tiger tables=emp_encrypt dumpfile=emp_encrypt_expdp.dmp
  -->  directory=pump_dir ENCRYPTION_PASSWORD='insight'

Import: Release 10.2.0.1.0 - Production on 日曜日, 3 12月, 2005 20:02:00

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

接続先: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -
Production
With the Partitioning, OLAP and Data Mining options
マスター表"SCOTT"."SYS_IMPORT_TABLE_01"は正常にロード/アンロードされました
"SCOTT"."SYS_IMPORT_TABLE_01"を起動しています: scott/********
tables=emp_encrypt
  -->  dumpfile=emp_encrypt_expdp.dmp directory=pump_dir
  -->  ENCRYPTION_PASSWORD=********
オブジェクト型TABLE_EXPORT/TABLE/TABLEの処理中です
オブジェクト型TABLE_EXPORT/TABLE/TABLE_DATAの処理中です
. . "SCOTT"."EMP_EMCRYPT_ORG"      8.515 KB    14行がインポートされました
オブジェクト型TABLE_EXPORT/TABLE/INDEX/INDEXの処理中です
オブジェクト型TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
ジョブ"SCOTT"."SYS_IMPORT_TABLE_01"が20:02:28で正常に完了しました

———————————————————————-

確認として、検索してみましょう。
———————————————————————-

SQL> select count(*) from emp_emcrypt_org;

  COUNT(*)
----------
        14

———————————————————————-

ノード間で同じ鍵(Wallet)を共有するとexpdp/impdpが行えます。
impdpノードに鍵がない場合は、expdp時に復号化してデータを抽出して移動を
行いましょう。もちろん、$ORACLE_HOME/network/admin/sqlnet.oraの設定は
行います。

鍵(Wallet)は、いつOracleに認識されているのでしょうか?DBがOPENされた後
にOSのコマンドで鍵の名前を変更させてみると、暗号化項目は検索出来るでし
ょうか?

DBがOPENしているときに鍵(Wallet)をOS上でrenameして検索を行ってみます。
———————————————————————-
$ mv ewallet.p12 ewallet.p12_bk
———————————————————————-

DBに接続して、検索してみましょう。
———————————————————————-

SQL> select count(*) from emp_encrypt;

14行が選択されました。

———————————————————————-

Oracle上から鍵(Wallet)をOPENされたときに鍵を認識し、OS上で鍵(Wallet)の
名前を変更しても使われ続けることが分かりました。次に鍵(Wallet)を認識す
るのは、次回の鍵(Wallet)のOPEN時になります。

今週のまとめ。
●異なるノードに対しても鍵(Wallet)を共有すれば暗号化されたままデータ移
行(expdp/impdp)が行える。
●Oracleが鍵(Wallet)をOPENしてしまえば、OSのコマンドで鍵の名前が変更さ
れても稼動し続けられる。

もう師走。時の過ぎるのが早い。