Oracle DB 12C Release 2 버전 부터 Oracle ASO ( Advanced Security Option – 구 Oracle TDE ) 의 기능을 이용 하면

DB 암호화 시 한국의 대표 알고리즘인 ARIA 방식과 SEED 방식 지원이 가능합니다. (Oracle 12C Release 1은 불가)

<지원여부 확인>

본 환경은 리눅스 환경 에서 테스트 되었습니다.

  1. Sqlnet.ora 세팅합니다.
ENCRYPTION_WALLET_LOCATION =

(SOURCE = (METHOD = FILE)

(METHOD_DATA =

(DIRECTORY = /oracle/oracle12/app/oracle/admin/oracle12/wallet)

) )

  1. ASO 암호화 키를 만듭니다.
# mkdir /oracle/oracle12/app/oracle/admin/oracle12/wallet

# sqlplus system/oracle as syskm

SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE ‘/oracle/oracle12/app/oracle/admin/oracle12/wallet’ IDENTIFIED BY oracle;

SQL> host ls -al /oracle/oracle12/app/oracle/admin/oracle12/wallet

  1. ASO 암호화 키를 OPEN 합니다.
# mkdir /oracle/oracle12/app/wallet

# sqlplus system/oracle as syskm

SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE ‘/oracle/oracle12/app/wallet’ IDENTIFIED BY oracle;

SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY oracle WITH BACKUP USING ’emp_key_backup’ ;

  1. 테스트 할 테이블 스페이스와 유저를 만듭니다.
SQL> CREATE TABLESPACE ASO_TEST DATAFILE ‘/oracle/oracle12/oradata/oracle12/aso_test01.dbf’ SIZE 400M

2 LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

SQL> CREATE USER ASO_TEST IDENTIFIED BY ASO_TEST ;

SQL> GRANT CONNECT, RESOURCE TO ASO_TEST ;

SQL> ALTER USER ASO_TEST DEFAULT TABLESPACE ASO_TEST ;

SQL> ALTER USER ASO_TEST QUOTA UNLIMITED ON ASO_TEST ;

  1. 암호화 컬럼이 포함된 암호화 테이블을 국산 암호화 알고리즘 ARIA , SEED 방식으로 만들어 봅니다. < 테이블 방식 암호화 테스트 >
SQL> conn ASO_TEST/ASO_TEST

SQL> create table employee (

2 first_name varchar2(128),

3 last_name varchar2(128),

4 empid number,

5 salary number(6) encrypt using ‘ARIA128’);

SQL> create table employee1 (

2 first_name varchar2(128),

3 last_name varchar2(128),

4 empid number,

5 salary number(6) encrypt using ‘SEED128’);

SQL> create table employee2 (

2 first_name varchar2(128),

3 last_name varchar2(128),

4 empid number,

5 salary number(6) encrypt using ‘3DES168’);

SQL> create table employee4 (

2 first_name varchar2(128),

3 last_name varchar2(128),

4 empid number,

5 salary number(6) encrypt);

  1. 암호화된 테이블의 상태를 조회해 봅니다.(SYSDBA)
SQL> SET LINESIZE 200

SQL> COL OWNER FORMAT A10

SQL> COL TABLE_NAME FORMAT A20

SQL> COL COLUMN_NAME FORMAT A20

SQL> COL ENCRYPTION_ALG FORMAT A40

SQL> SELECT * FROM DBA_ENCRYPTED_COLUMNS;

  1. 암호화된 테이블 스페이스를 만듭니다. ( 테이블 스페이스 암호화 테스트 )
CREATE TABLESPACE “UNIONE_ENC_ARIA”

DATAFILE ‘/oracle/oracle12/oradata/oracle12/UNIONE_ENC_ARIA.dbf’

SIZE 400M

LOGGING

EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

ENCRYPTION USING ‘ARIA128’ DEFAULT STORAGE(ENCRYPT);

CREATE TABLESPACE “UNIONE_ENC_SEED”

DATAFILE ‘/oracle/oracle12/oradata/oracle12/UNIONE_ENC_SEED.dbf’

SIZE 400M

LOGGING

EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

ENCRYPTION USING ‘SEED128’ DEFAULT STORAGE(ENCRYPT);

CREATE TABLESPACE “UNIONE_ENC_AES”

DATAFILE ‘/oracle/oracle12/oradata/oracle12/UNIONE_ENC_AES.dbf’

SIZE 400M

LOGGING

EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

ENCRYPTION USING ‘AES128’ DEFAULT STORAGE(ENCRYPT);

CREATE TABLESPACE “UNIONE_ENC_3DES”

DATAFILE ‘/oracle/oracle12/oradata/oracle12/UNIONE_ENC_3DES.dbf’

SIZE 400M

LOGGING

EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

ENCRYPTION USING ‘3DES168’ DEFAULT STORAGE(ENCRYPT);

  1. 테이블 스페이스 암호화 된 상태를 조회 합니다.
SQL> SELECT TABLESPACE_NAME,ENCRYPTED FROM DBA_TABLESPACES WHERE TABLESPACE_NAME LIKE ‘UNIONE_ENC%’ ;

SQL> SELECT A.NAME, B.ENCRYPTIONALG, B.ENCRYPTEDTS, A.CON_ID FROM V$TABLESPACE A, V$ENCRYPTED_TABLESPACES b

WHERE A.TS# = B.TS#;


By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다