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

投稿日: 2005年11月30日

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

今回は同じLinux上ですが、違うノードにexpdp/impdpを行ってみましょう。

検証環境は以下の通りです。

OS : Red Hat Enterprise Linux AS release 3 expdpノード
OS : AsianLinux3 impdpノード
Oracle : Oracle10gR2

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

それでは、まずexpdpを行いましょう。あ、暗号化のパスワード指定しないで
expdpを実行してしまいました!!
でも、何だか処理されているようです。

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

$ expdp scott/tiger tables=emp_encrypt dumpfile=emp_encrypt_expdp.dmp
  -->  directory=pump_dir

Export: Release 10.2.0.1.0 - Production on 土曜日, 26 11月, 2005 18:40:47

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_encrypt
  -->   dumpfile=emp_encrypt_expdp.dmp directory=pump_dir
BLOCKSメソッドを使用して見積り中です...
オブジェクト型TABLE_EXPORT/TABLE/TABLE_DATAの処理中です
BLOCKSメソッドを使用した見積り合計: 64 KB
オブジェクト型TABLE_EXPORT/TABLE/TABLEの処理中です
オブジェクト型TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
. . "SCOTT"."EMP_ENCRYPT"      7.820 KB    14行がエクスポートされました
ORA-39173: 暗号化データがダンプ・ファイル・セットに暗号化されずに格納されました
マスター表"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"が完了しましたが、1エラーが18:41:36
で発生しています

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

ええ!!、expdpファイルが作成されています!
「ORA-39173: 暗号化データがダンプ・ファイル・セットに暗号化されずに格
納されました。」って何???
時間もたった14行で50秒もかかっているし・・・
1エラーが発生となっていますが、エラーコードがありません。
これによって作成されたexpdpファイルはどうなっているのでしょうか?デー
タが戻せるか確認をしてみましょう。
戻ったら・・・・

テーブルの作成です。

SQL> create table emp_no_encrypt (
        empno   number(4) not null,
        ename   varchar2(10),
        job             varchar2(9),
        mgr             number(4),
        hiredate        date,
        sal             number(7,2) ,
        comm    number(7,2),
        deptno  number(2)
) tablespace encrypt;
表が作成されました。

SQL>

準備が整いました。それではimpdpしてみましょう。復号化されているという
ことなので暗号化指定(ENCRYPTION_PASSWORD)を外しています。
———————————————————————-

$ impdp scott/tiger tables=emp_no_encrypt dumpfile=emp_encrypt_expdp.dmp
  -->  directory=pump_dir

Import: Release 10.2.0.1.0 - Production on 土曜日, 26 11月, 2005 19:02:08

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_no_encrypt dumpfile=emp_encrypt_expdp.dmp directory=pump_dir
オブジェクト型TABLE_EXPORT/TABLE/TABLEの処理中です
ORA-39151: 表"SCOTT"."EMP_NO_ENCRYPT"が存在します。スキップのtable_exists_action
  -->  のため、すべての依存メタデータおよびデータはスキップされます
オブジェクト型TABLE_EXPORT/TABLE/TABLE_DATAの処理中です
オブジェクト型TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
ジョブ"SCOTT"."SYS_IMPORT_TABLE_01"が完了しましたが、1エラーが19:02:55
で発生しています

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

え、戻ってしまいました。「emp_encrypt」表と「emp_no_encrypt」のデータ
件数を比較しましょう!
expdpの時と同じように1エラーが発生と表示がありますが、まずは心を落ち着
かせて検索してみましょう。

暗号化指定のあるテーブルの検索です。

SQL> select count(*) from emp_encrypt;

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

expdp/impdpで、暗号化パスワード指定をしないで戻したときのテーブルの検
索です。

SQL> select count(*) from emp_no_encrypt;

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

同じ件数です。紙面上では記載しませんが、全データが同じであることを確認
しました。暗号化されずにデータの移動が出来てしまいました・・・

当検証から暗号化機能は、権限を有するユーザがデータをExp/Imp可能という
運用メリットを保ちながら、暗号化できることがわかりました。そのため、セキュ
リティの基本として、権限を持つユーザの厳格なアクセス制御が必要になりま
すね。
セキュリティ対策は、通信、データの暗号化、アクセス制御、監査、脆弱性
検査など、総合的な対策及び、定期的な点検が必要です。本来暗号化は、
アクセス制御の問題を解決する機能ではありません。アクセス制御を実施し
且つ、アクセス制御の及ばないセキュリティを確保する目的で暗号化が必要
になります。アクセス権限を保持しているDBAユーザは、暗号化に関しての
全ての権限を有しています。そのためDBAユーザのパスワードは、必ず厳格
に管理するようにしましょう。

今週のまとめ。
●dbms_crypto 権限を持っているユーザーはexpdp時に「ENCRYPTION_PASSWORD」
が無い場合、暗号化項目が復号化されたデータが抽出される。
●復号化されるため、「ENCRYPTION_PASSWORD」指定がある時に比べて30倍
以上時間がかかる。

来週こそ別ノードにimpdpを行います・・・

新オフィス!慣れてきた恵比寿にて。