私
個人情報やクレジットカード番号など、大事な情報はウォレットを使って暗号化しておこう
コンテンツ
sqlnet.ora にウォレットを配置するパスを記載する
以下のように ENCRYPTION_WALLET_LOCATION パラメタを記入しておく。
ENCRYPTION_WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = C:\app\12.1.0.2\product\12.1.0\dbhome_1\dbs)))
表の暗号化
wallet 作成
SQL> alter system set encryption key identified by oracle;
システムが変更されました。
暗号化表領域作成
SQL> create tablespace enc_test encryption using 'AES256'
default storage (ENCRYPT) datafile 'D:\app\12.1.0.2\oradata\v12102\AES256TEST.DBF' size 10M;
表領域が作成されました。
表を作成
SQL> create table encTest (col1 number,col2 varchar(10))
tablespace enc_test;
表が作成されました。
SQL> insert into encTest values(1,'HELLOMYWORLD');
1行が作成されました。
SQL> commit;
コミットが完了しました。
SQL> select * from encTest;
COL1 COL2
---------- ----------
1 HELLOMYWORLD
wallet の状態を確認してみよう
SQL> SELECT * FROM v$encryption_wallet;
WRL_TYPE WRL_PARAMETER STATUS
---------- -------------------- ------------------
file D:\app\12.1.0.2\product\12.1.0\dbhome_1\dbs OPEN
wallet をクローズしてみよう
wallet がクローズしていると、データを参照できなくなっているのがわかる。
SQL> alter system set wallet close identified by oracle;
システムが変更されました。
SQL> SELECT * FROM v$encryption_wallet;
WRL_TYPE WRL_PARAMETER STATUS
---------- -------------------- ------------------
file D:\app\12.1.0.2\product\12.1.0\dbhome_1\dbs CLOSED
SQL> select * from encTest;
select * from encTest
*
行1でエラーが発生しました。:
ORA-28365: ウォレットがオープンしていません
列の暗号化
列の暗号化は、表の作成時に該当列に ENCRYPT NO SALT を付与することで可能となる。
表を作成
SQL> create table secret_info
(first_name varchar2(11),
last_name varchar2(10),
order_number number(13),
card_number varchar2(20) ENCRYPT NO SALT);
表が作成されました。
SQL> insert into secret_info values ('Taro', 'Yamada', 100, '1111-2222-3333-4444');
1行が作成されました。
SQL> insert into secret_info values ('Hanako', 'Inoue', 200, '5555-6666-7777-8888');
1行が作成されました。
SQL> insert into secret_info values ('Keita', 'Tanaka', 300, '9999-1111-2222-3333');
1行が作成されました。
SQL> commit;
コミットが完了しました。
SQL> select * from secret_info;
FIRST_NAME LAST_NAME ORDER_NUMBER card_number
----------- ---------- ------------ --------------------
Taro Yamada 100 1111-2222-3333-4444
Hanako Inoue 200 5555-6666-7777-8888
Keita Tanaka 300 9999-1111-2222-3333