Oracle DB 12C Release 2 버전 부터 Oracle ASO ( Advanced Security Option – 구 Oracle TDE ) 의 기능을 이용 하면
DB 암호화 시 한국의 대표 알고리즘인 ARIA 방식과 SEED 방식 지원이 가능합니다. (Oracle 12C Release 1은 불가)
<지원여부 확인>
본 환경은 리눅스 환경 에서 테스트 되었습니다.
-
Sqlnet.ora 세팅합니다.
ENCRYPTION_WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /oracle/oracle12/app/oracle/admin/oracle12/wallet) ) ) |
-
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 |
-
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’ ; |
-
테스트 할 테이블 스페이스와 유저를 만듭니다.
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 ; |
-
암호화 컬럼이 포함된 암호화 테이블을 국산 암호화 알고리즘 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); |
-
암호화된 테이블의 상태를 조회해 봅니다.(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; |
-
암호화된 테이블 스페이스를 만듭니다. ( 테이블 스페이스 암호화 테스트 )
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); |
-
테이블 스페이스 암호화 된 상태를 조회 합니다.
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#; |