プリントスタック TOKYO

データベースとセキュリティの世界から離れて早数年。過去の記憶を探しています。

Oracle Transparent Data Encryption 表領域編

Oracle Database 11g の Oracle Advanced Security から 表領域の暗号も可能になりました。この記事で簡単に方法を掲載します。
まず、暗号の表領域を作成します。

CREATE TABLE SPACE SECURE_SPACE 
DATAFILE '/home/oracle/app/oracle/oradata/orcl/encryption01.dbf' 
SIZE 20M ENCRYPTION USING 'AES192' DEFAULT STORAGE( ENCRYPT );

比較するための標準の表領域も作成します。

CREATE TABLE SPACE NORMAL_SPACE
DATAFILE '/home/oracle/app/oracle/oradata/orcl/normal01.dbf' 
SIZE 10M;

テーブルの作成時に表領域を割り当てます。

CREATE TABLE T1 ( C1 NUMBER(7), C2 VARCHAR2(20), C3 DATE) TABLESPACE NORMAL_SPACE;
CREATE TABLE E1 ( C1 NUMBER(7), C2 VARCHAR2(20), C3 DATE) TABLESPACE SECURE_SPACE;

T1テーブル(標準)とE1テーブル(暗号)に適当なデータを複数行、挿入してから Linux の strings コマンドで表領域を閲覧してみると暗号化されていることがわかります。標準の表領域には平文のデータを閲覧することができます。

SHELL> strings encryption01.dbf
}|{z
MIORCL
SECURE_SPACE
 1j)
DHAo
T\53
^T]9*M
?E:]
)h>w
9T=;UL}8
pepWt
~省略~

表領域の暗号も列暗号のときと同様に Oracle Wallet がオープンしていないとアクセスできませんので注意が必要です。