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