[Oracle] 필수 감사(audit)기능 테스트

·2025년 9월 5일

오라클 관리

목록 보기
100/163

필수 감사(audit)란?

💡 누군가 민감한 고객 데이터가 있는 특정 테이블을 조회하면, 누가 조회했고 어떤 쿼리를 수행했는지 로그에 남게 하는 오라클 기본 기능


[실습1] 위 이미지를 따라서 감사 기능 켜기

[oracle@ora19c ~]$ sysdw

SQL*Plus: Release 19.0.0.0.0 - Production on95 12:07:40 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

휴지 인스턴스에 접속되었습니다.

SYS @ ora19dw > startup
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area 2415917880 bytes
Fixed Size                  8899384 bytes
Variable Size             520093696 bytes
Database Buffers         1879048192 bytes
Redo Buffers                7876608 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SYS @ ora19dw >
SYS @ ora19dw >
SYS @ ora19dw > show parameter audit_trail

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_trail                          string      DB
SYS @ ora19dw >


-- audit_trail 을 db 로 하면 감사로그가 system tablespace 에 저장됩니다.
-- system tablespace 의 공간을 늘리고 감사 옵션을 켜야합니다.

SYS @ ora19dw > drop tablespace ts02 including contents and datafiles;

테이블스페이스가 삭제되었습니다.

SYS @ ora19dw > alter tablespace system
  2            add datafile '/home/oracle/system01b.dbf' size 20m;

테이블스페이스가 변경되었습니다.

SYS @ ora19dw > alter tablespace system
  2             add datafile '/home/oracle/system01c.dbf' size 50m;

테이블스페이스가 변경되었습니다.

SYS @ ora19dw > alter tablespace system
  2             add datafile '/home/oracle/system01d.dbf' size 100m;

테이블스페이스가 변경되었습니다.


SYS @ ora19dw > SELECT value FROM v$option WHERE parameter='Unified Auditing';

VALUE
----------------------------------------------------------------
FALSE

💡 oracle12c 이상부터는 Unified Auditing 기능을 선택적으로 활성화 할 수 있게 되어있음
--> 이 기능이 꺼져있으면 전통 감사 방식만 사용 가능
--> 이 기능을 true로 켜면 os에 감사 로그를 저장하게 할 수 있음


[실습2] 감사 옵션을 설정

SYS @ ora19dw > audit table;

감사 성공입니다.

SYS @ ora19dw > connect scott/tiger
연결되었습니다.
SCOTT @ ora19dw >
SCOTT @ ora19dw > drop table emp;

테이블이 삭제되었습니다.


-- 그리고 sys 유져로 접속해서 감사로그를 확인합니다.

  select  username, timestamp, action_name, terminal 
    from  dba_audit_trail;

💡 위와 같이 drop 을 하면 drop 된 시간과 유져명이 나오는데 terminal이 pts/0 이라고 나온 것은 putty 에서 작업했기 때문. 그래서 현업에서는 일반 유져들이 절대로 putty 나 모바텀같은 창으로 접속할 수 없게 하고 오랜지나 sql developer 등을 이용하게함


문제1. emp 테이블을 다시 flashback drop 으로 복구하고 dept 테이블을 drop하고 감사 로그에 잡히는지 확인하시오

flashback table emp to before drop;

select * from emp;

drop  table dept;

select  username, timestamp, action_name, obj_name,terminal 
   from  dba_audit_trail;

0개의 댓글