Oracleで暗号化に関する検証 その2
<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を試みてみようと思っています。
風邪気味の茅ヶ崎にて。