LoginSignup
0
0

【Oracle Database】暗号化の前後でデータファイルを見比べてみた(透過的データ暗号化・TDE)

Last updated at Posted at 2024-04-20

はじめに

  • テスト用のユーザーを作成し、表領域を暗号化する前と暗号化した後のデータファイルをstringsで確認します。

大まかな流れ

  1. 暗号化対象の表領域を作成
  2. PDBに学習用ユーザーを作成
  3. 学習用ユーザーで表を作成
  4. 暗号化する前のデータファイルを確認
  5. 暗号化する
  6. 暗号化した後のデータファイルを確認

手順

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
stringsの結果 ```rb [oracle@devdays-23c FREEPDB1]$ strings mytbs01.dbf XWrZ 2Io_ fv4{ l%\( Y?OH 0-jc <;FD# tc+t 4b3' wO'Q k%A/ qF(Qw AXvX 3D >dfF% S%4+E %0<{ {9&: R/C- 24Kg 5UQk iwN*jU j {7d5N R&8* l^8V Y)\0M iW0A 9/KO 4i\F 7nVKt b-X(/ YLv/ fr/k\ ]cMNA B` ` xHVE ^%]u ofS. YQE@DZ caNl@ ]a5_ |XdO: v=|4 r!p: `D9 j R0 PW ?+CCl *^cxwDp CALQZ] ZBO_ dI!1'w_ s~o( Jc%ph nO|8 ,/f fFRP ^3j\ cA?QDS~N- 7`J= d),E _.)Wc Ct-$5$ E{*gX j=6h 4\P]d vbM9 ^F"~h kdsu uQ?6 D;N5 IhqeZ& s0Dg,bI [.ER~ .VSy=Y ;,s' Gr3U [oracle@devdays-23c FREEPDB1]$ ```
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0