はじめに
- テスト用のユーザーを作成し、表領域を暗号化する前と暗号化した後のデータファイルをstringsで確認します。
大まかな流れ
- 暗号化対象の表領域を作成
- PDBに学習用ユーザーを作成
- 学習用ユーザーで表を作成
- 暗号化する前のデータファイルを確認
- 暗号化する
- 暗号化した後のデータファイルを確認
手順
1. 暗号化対象の表領域を作成
- sysユーザで接続
[oracle@devdays-23c ~]$ sqlplus / as sysdba
SQL*Plus: Release 23.0.0.0.0 - Production on Thu Apr 11 23:19:32 2024
Version 23.3.0.23.09
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Connected to:
Oracle Database 23c Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.3.0.23.09
- PDBに接続
SQL> alter session set container = FREEPDB1 ;
Session altered.
- 元から存在する表領域とデータファイルを確認
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
SQL> SELECT file_name FROM dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/FREE/users01.dbf
/opt/oracle/oradata/FREE/undotbs01.dbf
/opt/oracle/oradata/FREE/system01.dbf
/opt/oracle/oradata/FREE/sysaux01.dbf
- 表領域
mytbs
を作成
SQL> create tablespace mytbs datafile '/opt/oracle/oradata/FREE/FREEPDB1/mytbs01.dbf' size 100m autoextend off ;
Tablespace created.
- 作成した表領域とデータファイルがあるか確認
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
MYTBS #今回作成した表領域
6 rows selected.
SQL> SELECT file_name FROM dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/FREE/FREEPDB1/sysaux01.dbf
/opt/oracle/oradata/FREE/FREEPDB1/users01.dbf
/opt/oracle/oradata/FREE/FREEPDB1/mytbs01.dbf #今回作成したデータファイル
/opt/oracle/oradata/FREE/FREEPDB1/system01.dbf
/opt/oracle/oradata/FREE/FREEPDB1/undotbs01.dbf
2. PDBに学習用ユーザーを作成
- 学習用ユーザを作成する
SQL> create user ritsuko identified by WelCome123#123# default tablespace MYTBS;
User created.
- 作成したユーザがあるか確認
SQL> select username from dba_users where username = 'RITSUKO';
USERNAME
--------------------------------------------------------------------------------
RITSUKO
- 権限を付ける
SQL> grant connect to ritsuko;
Grant succeeded.
SQL> grant resource to ritsuko;
Grant succeeded.
SQL> grant dba to ritsuko;
Grant succeeded.
3. 学習用ユーザーで表を作成
- 一度ログアウトし、学習用ユーザでPDBに接続
[oracle@devdays-23c ~]$ sqlplus ritsuko/WelCome123#123#@localhost:1521/FREEPDB1
SQL*Plus: Release 23.0.0.0.0 - Production on Thu Apr 11 23:27:58 2024
Version 23.3.0.23.09
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Connected to:
Oracle Database 23c Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.3.0.23.09
- テーブルを作成する
ちなみに今回は以下の内容のテーブルを作成する
CUSTOMER_ID | NAME | CARD_ID |
---|---|---|
1 | yamada | 5555-4444-3333-2222 |
2 | tanaka | 6666-4444-3333-2222 |
3 | yamamoto | 7777-4444-3333-2222 |
4 | yamada | 8888-4444-3333-2222 |
5 | yamada | 9999-4444-3333-2222 |
6 | yamada | 1999-4444-3333-2222 |
7 | arima | 2999-4444-3333-2222 |
8 | minami | 3999-4444-3333-2222 |
9 | kita | 4999-4444-3333-2222 |
10 | nishi | 5999-4444-3333-2222 |
SQL> create table customer(
customer_id number(3) primary key,
name varchar2(10 char) not null,
card_id varchar2(25 char)
); 2 3 4 5
Table created.
SQL> select table_name from user_tables;
TABLE_NAME
--------------------------------------------------------------------------------
CUSTOMER
- データをinsert
以下を参考に10行データを入れる
SQL> INSERT INTO customer (
customer_id, name, card_id
) VALUES (
'001', 'yamada' ,'5555-4444-3333-2222'
) ; 2 3 4 5
1 row created.
SQL> select * from customer;
CUSTOMER_ID NAME CARD_ID
----------- ---------- -------------------------
1 yamada 5555-4444-3333-2222
- 10行格納されていることの確認
SQL> select * from customer;
CUSTOMER_ID NAME CARD_ID
----------- ---------- -------------------------
1 yamada 5555-4444-3333-2222
2 tanaka 6666-4444-3333-2222
3 yamamoto 7777-4444-3333-2222
4 yamada 8888-4444-3333-2222
5 yamada 9999-4444-3333-2222
6 yamada 1999-4444-3333-2222
7 arima 2999-4444-3333-2222
8 minami 3999-4444-3333-2222
9 kita 4999-4444-3333-2222
10 nishi 5999-4444-3333-2222
10 rows selected.
SQL>
4. 暗号化する前のデータファイルを確認
- データファイルをstringsする
[oracle@devdays-23c ~]$ cd /opt/oracle/oradata/FREE/FREEPDB1
[oracle@devdays-23c FREEPDB1]$ ls
mytbs01.dbf sysaux01.dbf system01.dbf temp01.dbf undotbs01.dbf users01.dbf
[oracle@devdays-23c FREEPDB1]$ strings mytbs01.dbf
}|{z
UFREE
1~EDu
MYTBS
AAAAAAAA
AAAAAAAA
AAAAAAAA
nishi
5999-4444-3333-2222,
kita
4999-4444-3333-2222,
minami
3999-4444-3333-2222,
arima
2999-4444-3333-2222,
yamada
1999-4444-3333-2222,
yamada
9999-4444-3333-2222,
yamada
8888-4444-3333-2222,
yamamoto
7777-4444-3333-2222,
tanaka
6666-4444-3333-2222,
yamada
5555-4444-3333-2222
AAAAAAAA
[oracle@devdays-23c ~]$
5. 暗号化する
暗号化の手順は以下の記事にまとめたので、そちらを参考に対象PDBを暗号化してください。
Oracle DatabaseでTDE(透過的データ暗号化)を試してみた
6. 暗号化した後のデータファイルを確認
- 暗号化したデータファイルを確認する
結果が長くて折りたたんでますが、先ほどと違い解読できる文字や数字が無いのが確認できます。
[oracle@devdays-23c FREEPDB1]$ strings mytbs01.dbf