1) AUDIT 명령어
이 명령어는 4가지 모드의 데이터베이스 감시 기능을 제공합니다.
먼저, 첫 번째 감시 기능은 데이터베이스 내에서 특정 SQL 언어(CONNECT문, DROP TABLE, ALTER TABLE 등)가 실행될 때 언제, 어떤 사용자에 의해, 어떤 명령어가 실행되었고 실행 결과가 성공했는지, 실패했는지에 대한 로그 정보를 남기는 방법입니다.
두 번째 감시 기능은 특정 권한(SYSTEM Privilege 또는 OBJECT Privilege)이 실행되었을 때 그 상태 정보를 남기는 방법이며 세 번째 감시 기능은 특정 사용자가 특정 객체(테이블, 인덱스, 뷰 등)을 조작할 때 상태 정보를 남기며 네 번째 방법은 네트워크 상태를 감시하며 특정 Action(V$SESSION의 COMMAND 컬럼 참조)이 발생할 때 관련 로그정보를 남김으로써 데이터베이스 내에서 일어나는 의심스러운 행위를 감시하고 데이터에 대한 안전한 보안 기능을 설정하는 방법입니다.

### html
SQL> AUDIT connect BY scott BY SESSION WHENEVER SUCCESSFUL;       ? 문장 Level
SQL> AUDIT create table BY scott BY SESSION WHENEVER SUCCESSFUL;  ? 권한 Level
SQL> AUDIT delete on emp BY SESSION WHENEVER NOT SUCCESSFUL;      ? 객체 Level 
SQL> AUDIT 12 BY scott BY SESSION  WHENEVER NOT SUCCESSFUL;       ? 네트워크 Level

2) DBMS_FGA 패키지
앞서 소개 드린 AUDIT 명령어를 통해 특정 테이블에 대한 보안, 감시활동의 수행은 다소 제한적인 기능 만을 제공한다면 다음에 소개하는 DBMS_FGA 패키지는 구체적이며 상세한 조건의 감시 활동이 가능하도록 만들어진 기능입니다.

### html
DBMS_FGA.ADD_POLICY  ( object_schema => 'SCOTT',
                       object_name => 'EMP',
                       policy_name => 'MYPOLICE1',
                       audit_condition => 'SAL < 100',
                       audit_column => 'COMM, SAL',
                       handler_schema => NULL,
                       handler_module => NULL,
                       enable => TRUE,
                       statement_types => 'INSERT, UPDATE',
                       audit_trail => DBMS_FGA.DB,
                       audit_column_opts => DBMS_FGA.ANY_COLUMNS);

위 예제는 DBMS_FGA 패키지의 ADD_POLICY 프로시저를 통해 SCOTT 사용자의 EMP 테이블에 대한 감시 내역입니다.
감시 대상은 EMP 테이블의 COMM, SAL 컬럼이며 누군가가 INSERT, UPDATE문을 실행할 때 SAL 컬럼의 데이터가 100보다 작은 경우 로그 정보를 남길 수 있도록 환경 설정하는 방법입니다.

### html
SQL> SELECT * FROM DBA_AUDIT_POLICIES;
OBJECT_SCHEMA     OBJECT_NAME            ENA SEL INS UPD DEL
-------------- ------------------------- --- --- --- --- --- 
SCOTT                EMP                 YES  NO YES YES  NO

DBMS_FGA.DROP_POLICY    : 생성된 감시 정책을 삭제할 때 사용됩니다.
DBMS_FGA.ENABLE_POLICY  : 생성된 감시 정책을 사용 가능하도록 환경 설정해 줍니다.
DBMS_FGA.DIABLE_POLICY  : 생성된 감시 정책을 사용 없도록 환경 설정해 줍니다.

3) 데이터베이스 트리거를 이용한 의심스러운 사용자의 세션 제한 기능
데이터베이스를 운영, 관리하다 보면 중요한 테이블에 대해 누군가가 의심스런 입력, 수정, 삭제, 조회 작업을 수행하는 경우들이 종종 발생합니다.
하나의 기업 내에 근무하는 개발자, 데이터베이스 관리자라고 하더라도 인가되지 않은 사용자가 관련 없는 데이터를 참조하는 것은 때에 따라서는 제한되어야 합니다.

### html
[C:\] SQLPLUS  SYSTEM/MANAGER
SQL> CREATE OR REPLACE TRIGGER  ip_control
AFTER  LOGON ON SCOTT.SCHEMA
BEGIN
      IF SUBSTR(sys_context('USERENV','IP_ADDRESS'),1, 15)
        in (‘192.168.123.101’)  then  
        RAISE_APPLICATION_ERROR ( - 
                  20002, 'IP '||ORA_CLIENT_IP_ADDRESS
                  || ' is not allowed to connect database as SCOTT!');
       END IF;
END;

이것을 구현할 수 있는 방법은 여러 가지가 있지만 그 중에서도 SYS_CONTEXT 함수를 사용하여 원치 않는 IP Address를 가진 사용자의 접속을 근본적으로 차단하는 보안 설정방법에 대해 알아 보겠습니다.

### html
[C:\] SQLPLUS  scott/tiger
192.168.123.101 is not allowed to connect database as SCOTT!

192.168.123.101 IP Address를 가진 클라이언트가 SCOTT 계정으로 데이터베이스에 접속을 시도할 때 "192.168.123.101 is not allowed to connect database as SCOTT!"이라는 메시지를 클라이언트의 화면에 출력하고 접속을 제한하게 됩니다.

192.168.123.101 IP Address를 가진 사용자의 PC에서 다음 문장을 실행합니다.
1) 사용자 암호 정책
관계형 데이터베이스에서는 인가된 사용자 만이 데이터를 입력, 수정, 삭제, 조회할 수 있어야 합니다. 하지만, 사용자 계정과 암호가 효과적으로 운용,관리되기 위해서는 설정된 암호에 대한 체계적인 사용 정책과 암호 검증 방법이 제공되어야 합니다.
오라클 사에서는 보다 체계적이고 다양한 옵션들을 통해 사용자의 암호에 대한 보안기능을 강화하였습니다.
다음 예제는 사용자 암호의 유효 일수(PASSWORD_ LIFE_TIME)를 10일로 지정하고 암호 유효 기간이 지나면 5일마다 경고 메시지(PASSWORD_GRACE_TIME)를 출력하며 암호를 입력할 때 5번을 잘못 입력하면 더 이상 접속을 하지 못하게 제한하게 하는 방법입니다.
### html
SQL> CONNECT  SYSTEM/MANAGER
SQL> CREATE PROFILE  scott_pass LIMIT
PASSWORD_LIFE_TIME     10
PASSWORD_GRACE-TIME     5
FAILED_LOGIN_ATTEMPTS   5 ;

SQL> ALTER USER  scott  PROFILE scott_pass_limit;

2) 사용자 암호 검증하는 방법
최근 개인 금융계좌의 조회 및 계좌이체 등 중요한 은행업무를 인터넷에서 처리함으로써 개인암호의 노출이 이전 보단 훨씬 위험한 단계에 도달한 것이 현실입니다.
사용자가 너무 단순한 암호를 사용함으로써 노출되는 피해를 막기 위해 사용자의 암호설정 시 단순 문자 또는 숫자 등을 암호로 입력하지 못하게 제한함으로써 보안에 역점을 두고 있습니다.
오라클 데이터베이스를 설치하면 기본적으로 $HOME\RDBMS\ADMIN 경로에 UTLPWDMG.SQL 스크립트가 제공됩니다.
이 스크립트를 실행하면 VERIFY_FUNCTION 함수가 생성되며 사용자가 암호를 설정할 때 4 문자 이하로 설정하거나 사용자 ID와 암호를 같은 값으로 설정하면 에러를 유발시키게 됩니다.
다음은 VERIFY_FUNCTION 함수를 생성하고 사용자에게 설정하는 방법입니다.
### html
SQL> CONNECT /as sysdba
SQL> START C:\ORACLE\PRODUCT\10.1.0\db_1\RDBMS\ADMIN\utlpwdmg.sql
SQL> ALTER PROFILE scott_pass LIMIT PASSWORD_VERIFY_FUNCTION verify_function;

SQL> ALTER USER scott PROFILE scott_pass;

결혼 1주년.. 어디라도 가고 싶었건만...
꿈틀이 관계로... 머.. 모든 건 생략... 이 다는 아니지만.. ㅋㅋㅋ
비용 문제와.. 결국 귀차니즘. 크크
제주도라도 갈까 하긴했는데..
회사 휴가 내기도 좀 눈치보이고.. 이래저래..
결국 그냥 아무것도 없이.. 집에서.. ㅋㅋ
그래도 낭군은 꽃한다발 사왔음. ㅋㅋㅋ
내가 낭군 만나고 꽃은 첨 받은 듯.. ;;
난 너무 착하고 순해.. 크크

그래도 집에서 밥 먹는 건 우울하고 집앞 아웃백에서.. 스테키 썰었는데.. ㅋㅋ
음식 2개 시켜서.. 둘다 먹지도 못하고..
다 싸와서 그 담날까지 집에서 먹었음..

첫 결혼기념일을 그냥 이렇게.. 보냄.. 아.. 우울...

'Story > Diary' 카테고리의 다른 글

입사 기념 선물?  (0) 2011.11.21
가끔 집에서 먹는 밥 말고.. 먼가 먹고 싶은게..  (0) 2011.10.28
엔코아 DA# 툴 사용자 교육  (0) 2011.10.24
파이 만들기~  (0) 2011.10.22
할로윈 축제~  (0) 2011.10.22
GS에서 사용하는 모델링 툴이 있는데.. 그건 ER-Win도 아니고..
엔코아에서 개발한 DA#이라는 툴이다.
이건 사실 난 처음 들어본거며.. 써보는거라..
마침 무료 교육이 있다길래..
아침부터 회사는 가지도 않고 여의도 와서 교육을 받았다.
물론 회사에서는 나 혼자 와서.. ㅋㅋㅋ
머... 그다지 사용법에 대한 거라.. ㅋㅋㅋ
회사 땡땡이 치고 잘 받고 있음 ㅋㅋ

엔코아 역시 돈 받이 버는 듯.. 여의도 중간에.. 교육센터가 있고.. 좋다. ㅋㅋ

'Story > Diary' 카테고리의 다른 글

가끔 집에서 먹는 밥 말고.. 먼가 먹고 싶은게..  (0) 2011.10.28
결혼 1주년  (0) 2011.10.24
파이 만들기~  (0) 2011.10.22
할로윈 축제~  (0) 2011.10.22
역사적인 날~  (0) 2011.09.14

+ Recent posts