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

投稿日: 2005年11月24日

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

それでは、前回に引き続きOracle10gR2の新機能である「透過的なデータ暗号化
(Transparent Data Encryption 略してTDE)」について検証していきます。

前回はTDEの準備(鍵の作成)とテーブルの作成について行いました。
今回は、データのExportとImportについて行っていきます。

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

見やすくするために1行で納まらないコマンドは「 –> 」をつけて改行して
います。

それでは、まず以前からあるexpを実行してみます。
最初は、暗号化項目がついていないテーブル(emp表)に行ってみます。

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

$ exp scott/tiger tables=emp file=emp_expdp.dmp

Export: Release 10.2.0.1.0 - Production on 土 11月 19 15:03:03 2005

Copyright (c) 1982, 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

JA16EUCキャラクタ・セットおよびAL16UTF16 NCHARキャラクタ・セットでエク
スポートを実行します

指定された表をエクスポートします... 従来型パス経由...
.. 表
EMPをエクスポート中14行エクスポートされました。
エクスポートは警告なしで正常終了しました。
$

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

当たり前ですが、実行できました。それでは、先日作成した暗号化項目がある
テーブル(emp_encrypt表)に対してexpを実行してます。
———————————————————————-

$ exp scott/tiger tables=emp_encrypt file=emp_encrypt_exp.dmp

Export: Release 10.2.0.1.0 - Production on 土 11月 19 15:05:18 2005

Copyright (c) 1982, 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
JA16EUCキャラクタ・セットおよびAL16UTF16 NCHARキャラクタ・セットでエク
スポートを実行します

指定された表をエクスポートします... 従来型パス経由...
EXP-00107: 機能(COLUMN ENCRYPTION)(列SAL、表SCOTT.EMP_ENCRYPT)がサポー
トされていません。表はエクスポートされません。
エクスポートは正常に終了しましたが、警告が発生しました。
$

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

お!?出来ません。マニュアルを読み直してみると暗号化項目があるテーブルに
対してexpはサポートされていないとのこと。
(マニュアル Oracle Database ユーティリティ 10gリリース2(B19211-01)エク
スポート操作でデータを暗号化する方法の詳細は、2-11ページの「ENCRYPTION_PASSWORD」
を参照してください。インポート操作時に暗号化データにアクセスする方法の
詳細は、3-10ページの「ENCRYPTION_PASSWORD」を参照してください。)

一応、impして見ましょう
———————————————————————-

$ imp scott/tiger tables=emp_emcrypt_org file=emp_encrypt_exp.dmp

Import: Release 10.2.0.1.0 - Production on 土 11月 19 15:40:31 2005

Copyright (c) 1982, 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

エクスポート・ファイルはEXPORT:V10.02.01によって従来型パス経由で作成さ
れました
JA16EUCキャラクタ・セットおよびAL16UTF16 NCHARキャラクタ・セットでイン
ポートを実行します
. SCOTTのオブジェクトをSCOTTにインポートしています
IMP-00033: 警告: 表"EMP_EMCRYPT_ORG"がエクスポート・ファイルにありません
インポートは正常に終了しましたが、警告が発生しました。

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

やはり出来ません。expファイルは出来ているのですが・・・
$ ls -l
合計 16
-rw-r–r– 1 ora102 oinstall 16384 11月 19 15:40 emp_encrypt_exp.dmp

それでは、マニュアルに従ってexpdpを行ってみましょう。
暗号化(TDE)のテーブルをexpするときには以下の指定が必要となります。
「ENCRYPTION_PASSWORD=’xxxxx'(xxxxx:パスワード)」
———————————————————————-

$ expdp scott/tiger tables=emp_emcrypt_org dumpfile=emp_encrypt_expdp.dmp
  -->  directory=pump_dir encryption_password='xxxxx'

Export: Release 10.2.0.1.0 - Production on 土曜日, 19 11月, 2005 15:45:10

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_EXPORT_TABLE_01"を起動しています: scott/********
  -->  tables=emp_emcrypt_org dumpfile=emp_encrypt_expdp.dmp directory=pump_dir
  -->  ENCRYPTION_PASSWORD=********
BLOCKSメソッドを使用して見積り中です...
オブジェクト型TABLE_EXPORT/TABLE/TABLE_DATAの処理中です
BLOCKSメソッドを使用した見積り合計: 64 KB
オブジェクト型TABLE_EXPORT/TABLE/TABLEの処理中です
オブジェクト型TABLE_EXPORT/TABLE/INDEX/INDEXの処理中です
オブジェクト型TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
. . "SCOTT"."EMP_EMCRYPT_ORG"    8.515 KB   14行がエクスポートされました
マスター表"SCOTT"."SYS_EXPORT_TABLE_01"は正常にロード/アンロードされました
******************************************************************************
SCOTT.SYS_EXPORT_TABLE_01に設定されたダンプ・ファイルは次のとおりです:
  /home/ora102/oracle/oradata/pump_dir/emp_encrypt_expdp.dmp
ジョブ"SCOTT"."SYS_EXPORT_TABLE_01"が15:46:45で正常に完了しました

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

Oracle10gからはexpdpが主流になるようです。expはこれからサポートされな
くなるようなので、expdpを使用するようにしましょう!

それでは、同じDBの同じテーブルにimpdpをしてみましょう。
impdpにも同じように以下の指定が必要となります。
「ENCRYPTION_PASSWORD=’xxxxx'(xxxxx:パスワード)」
———————————————————————-

$ impdp scott/tiger tables=emp_encrypt dumpfile=emp_encrypt_expdp.dmp
  -->  directory=pump_dir encryption_password='xxxxx' content=DATA_ONLY

Import: Release 10.2.0.1.0 - Production on 土曜日, 19 11月, 2005 15:53:50

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=*********
  -->  content=DATA_ONL
オブジェクト型TABLE_EXPORT/TABLE/TABLE_DATAの処理中です
. . "SCOTT"."EMP_EMCRYPT_ORG"    8.515 KB   14行がインポートされました
ジョブ"SCOTT"."SYS_IMPORT_TABLE_01"が15:54:08で正常に完了しました

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

ふー、良かった。戻せました。
それでは、walletを停止したときはどうなるでしょうか?

ますは、SYSユーザーでwalletを停止させましょう。

SQL> alter system set wallet close;

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


それでは、scottユーザーでexpdpをしてみましょう。
----------------------------------------------------------------------
$ expdp scott/tiger tables=emp_encrypt dumpfile=emp_encrypt_expdp.dmp
  -->  directory=pump_dir encryption_password='xxxxx'

Export: Release 10.2.0.1.0 - Production on 土曜日, 19 11月, 2005 15:57:27

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-28365: ウォレットがオープンしていません

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

impdpはどうでしょうか?
WalletがOPENしたときに取得したdumpfileを用いてimpdpを実行してみます。
———————————————————————-

$ impdp scott/tiger tables=emp_emcrypt_org dumpfile=emp_encrypt_expdp.dmp
  -->  directory=pump_dir encryption_password='xxxxx' content=DATA_ONLY

Import: Release 10.2.0.1.0 - Production on 月曜日, 21 11月, 2005 16:05:24

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-28365: ウォレットがオープンしていません

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

やはり、暗号化の鍵であるWalletがOpenしていないとexpdp/impdbも出来ません。

今週のまとめ
●TDEの指定されている項目があるとexpdp/impdpを使用する。
(exp/impは使用できない。)
●WalletがOPENしていないとexpdp/impdpは行えない。

来週は別のノードにimpdpを試みてみようと思っています。

風邪気味の茅ヶ崎にて。