이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

DataBase

view trigger

이쿠우우 2020. 9. 1. 17:37
반응형

View Trigger 예시

DB data를 암호화/복호화 하는것을 예시로 

view trigger를 설명.

 

 

DBA 파일을 보호하기 위해 view trigger를 사용

 


1. 기존에 존재하던 Original table 이 있음

Original table : Ori_table     

REGINO 칼럼 : 주민등록번호 저장칼럼인데 Encryption이 걸려있는 상태

 

2. View Trigger 생성을 위해 기존에 존재하던 Original table 이름을 변경함

Original table Name을 변경함.

Ori_table --> Ori_table_rename 변경     

 

3. 원래 존재했던 Origianl table 이름으로 View 생성 

 

Original table Name인 Ori_table 로 View 생성

View는 기존의 Original table이였던 Ori_table_rename를 바라보도록함.

REGINO 칼럼 : 암호화 된 주민등록번호 칼럼에 복호화를 걸어놓음

view 를 통해서 data를 확인하면 복호화된 data 확인 가능      

select * from tab;  결과

View table :  Ori_table

Original table : Ori-table_rename

 

 

4. 뷰 트리거 생성

trigger : view_trigger     

[ trigger 쿼리 참고 ]

3번째 칼럼인 주민등록번호만 암호화 수행

create or replace trigger view_trigger   # 트리거 명칭 : view_trigger

INSTEAD OF INSERT OR UPDATE  

ON Ori_table FOR EACH ROW            # Ori_table 에 trigger를 생성 (View)

BEGIN

IF INSERTING THEN

    INSERT INTO Ori_table_rename(            

    NUM,

    NAME,   

    REGINO) VALUES(          # Ori_table_name 의 data를 변경 (Original table)

    :new.NUM,

    :new.NAME,

    CRYPTO.ENC('pattern7', :new.REGINO)   #  암호화 수행( 암호화 예제 쿼리 )

);

ELSIF UPDATING THEN

    UPDATE Ori_table_rename SET

    NUM=:new.NUM,

    NAME=:new.NAME,

    REGINO=CRYPTO.ENC('pattern7', :new.REGINO)

WHERE

    ((:old.NUM IS NULL AND NUM IS NULL) or (:old.NUM IS NOT NULL AND NUM = :old.NUM));

END IF;

END view_trigger;

/

 

5. 데이터 삽입     

 

6. View table 확인 결과

View에는 복호화가 걸려있어서 암호화가 풀린상태 확인가능     

 

7. Original table 확인 결과

Original 테이블인 Ori_table_rename 은 암호화가 걸린 상태 확인가능     

 

 

 


 

 

참고 명령어

trigger 확인

명령어 : select trigger_name, trigger_body from user_triggers;     

참고     

 

trigger_body 쿼리가 짤릴경우

명령어 : set long 9999 추가    

 

 

 

 

 


제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!


 

반응형