DB2 V9.7 FixPack3 부터는 로그온 트리거라는 기능을 지원한다. 오라클이나 MS-SQL에서는 트리거라는 이름으로 작성을 하지만, DB2에서는 procedure를 통하여 기능 구현하여 실행을 시킨다.

기능을 테스트해보면서 그 기능이 제약적이다라는 느낌이 들었지만, “기본 스키마 이름”를 변경하거나 “기본 library 경로”등을 세션단위로 설정하고자 할 경우에 도움이 될 듯 하다. 아마도 버전 upgrade되면서 보다 다양하게 활용되도록 개선되지 않을까 싶다.

DB의 구성변수에 CONNECT_PROC 라는 변수에 실행시키고자 하는 stored procedure를 설정하면 사용자가 “접속 하는 순간” 실행이 되어진다.

테스트 시나리오는 사용자가 접속할 때, 접속 계정 명, 접속 시간을 기록하도록 하는 것으로 정의하였다.

생성 스크립트

db2 +p -td"@" -v << EOF
connect to sample @

CREATE TABLE SECURITY.AUDIT(userid VARCHAR(20), event VARCHAR(20), tstamp TIMESTAMP)@

CREATE OR REPLACE PROCEDURE ENVIRONMENT.CONNECTION_SETUP_DBMOD()
BEGIN 
       INSERT INTO SECURITY.AUDIT VALUES(USER, 'CONNECT', CURRENT TIMESTAMP);
END
@

update db cfg using connect_proc ENVIRONMENT.CONNECTION_SETUP_DBMOD @

EOF

접속 전 Audit 테이블 조회

SQL 실행

db2 "select * from security.audit"

실행 결과

USERID               EVENT                TSTAMP
-------------------- -------------------- --------------------------

  0 record(s) selected.

 

접속 시도

db2 connect to sample

 

Audit 테이블 조회

SQL 실행

db2 "select * from security.audit"

실행 결과

USERID               EVENT                TSTAMP
-------------------- -------------------- --------------------------
ORA974               CONNECT              2011-10-19-17.55.20.485295

+ Recent posts