Oracle 보안 관리 Audit 6편 (Audit 명령문)

안녕하세요 Thinking Man 입니다.

이번 글에서는 AUDIT/ NOAUDIT 명령어를 다루는 방법에 대해 알아보도록 하겠습니다.

이번 글을 읽을 경우 AUDIT 문을 사용하여 개별적인 감사 설정하는 방법에 대해서 알 수 있습니다.

이 글은 Oracle 11gR2 공식 문서를 참고하여 작성하였습니다.

 

표준 감사를 통한 활동 감사

Audit 명령

 

AUDIT 및 NOAUDIT SQL 문 작동 방식

 

AUDIT SQL 문 감사 범위 및 영향

아래는 AUDIT 문을 사용하여 제어할 수 있는 범위를 나타낸 표입니다.

표 9-3 표준 감사 수준과 영향

Level

Effect

Statement 특정 유형의 데이터베이스 객체에 영향을 주는 특정 SQL 문이나 그룹의 SQL 문을 감사합니다.

예) AUDIT TABLE은 CREATE TABLE, TRUNCATE TABLE, COMMENT ON TABLE 및 DELETE [FROM] TABLE 문을 감사합니다.

Privilege 지정된 시스템 권한에 의해 승인된 SQL 문을 감사합니다.

예) AUDIT CREATE ANY TRIGGER는 CREATE ANY TRIGGER 시스템 권한을 사용하여 발행된 문을 감사합니다.

Object 특정 오브젝트에서 특정 SQL문을 감사합니다.

예) HR.EMPLOYEES 테이블에서 ALTER TABLE과 같은 문을 감사합니다.

Network 네트워크 프로토콜의 예기치 않은 오류나 네트워크 계층의 내부 오류를 감사합니다.

 

AUDIT 실행 옵션 (Successful, Unsuccessful, Both)

AUDIT 명령어 수행 시 Statement, Privilege, Object 의 감사에 대해 감사 대상 문장의 실행이 성공적으로 되었을 때, 실패하였을 때, 성공하거나 실패해도 모두 감사하도록 하는 3가지 옵션이 있습니다.

감사 하려는 문장이 성공적으로 완료되지 않더라도 어떤 작업을 하였는지 모니터링이 가능하기 때문에 사용자들을 더 세밀하게 모니터링 할 수 있습니다.

아래 감사 옵션을 적절하게 사용하면 감사 데이터를 줄이는 데 도움이 되고 특정 작업에 초점을 맞추어 감사를 할 수 도 있습니다.

옵션 사용 방법은 아래와 같습니다.

  • WHENEVER SUCCESSFUL : 감사 하려는 문장이 성공한 경우에만 감사합니다.
  • ENEVER NOT SUCCESSFUL :  감사 하려는 문장이 실패한 경우에만 감사합니다.

실패한 문장을 감사하는 경우에는 SYNTAX 에러 없는 정상적인 SQL 문을 수행하였지만 적절한 권한이 없거나 존재하지 않는 스키마의 테이블을 조회하여 실패하는 경우 감사 데이터가 생성됩니다.

유효하지 않은 SQL문의 경우에는 감사할 수 없습니다.

예를 들어, 실패한 문장을 감사하게 설정한 경우 대상 시스템 권한을 사용하는 문장이 실패하는 경우에도 감사합니다.

예로 CREATE TABLE 감사하도록 설정되었을 경우 지정된 테이블스페이스에 할당량이 충분하지 않아 CREATE TABLE 문이 실패하는 경우가 있습니다.

  • WHENEVER SUCCESSFUL 또는 WHENEVER NOT SUCCESSFUL을 생략하는 경우, 오라클 데이터베이스는 감사된 SQL의 성공, 실패한 문장 모두를 감사합니다.

 

예를 들어:

AUDIT CREATE TABLE BY ACCESS WHENEVER NOT SUCCESSFUL;

 

표준 감사 레코드가 생성되는 방식

표준 감사 레코드가 생성되는 방식은 아래와 같습니다.

  • 감사가 구성된 SQL 문이 실행될 때마다 생성. PL/SQL 프로시저 내에서 SQL문이 실행될 때도 포함됩니다.
  • 감사가 구성된 권한을 사용할 때마다 생성
  • 감사가 구성된 객체에 작용할 때마다 생성

 

표준 감사 레코드가 커서 내에서 생성되는 방식

오라클은 커서 내에서 감사 가능한 작업의 각 실행에 대해서 감사 레코드 하나를 삽입합니다. 커서 재사용을 유발하는 이벤트는 다음과 같습니다.

  • Oracle Forms와 같은 응용 프로그램이 커서를 재사용하기 위해 열어 두었을 때
  • 새로운 바인드 변수를 사용하여 커서를 다시 실행하는 경우
  • PL/SQL Loop 내에서 실행된 SQL문을 최적화하여 단일 커서를 재사용하는 경우

감사는 커서가 공유되는지 여부에 영향을 받지 않습니다. 각 사용자는 커서를 처음 실행할 때 자체 감사 데이터를 만듭니다.

 

AUDIT 문의 BY ACCESS 절 사용의 이점

오라클은 기본적으로 감사 이벤트마다 새로운 감사 데이터를 기록하며 BY ACCESS 절 기능을 사용합니다. 이 기능을 사용하려면 AUDIT 문에 BY ACCESS를 명시해주어도 되며 명시하지 않아도 default 값이라 생략 가능합니다. (오라클 11g Release 2 (11.2.0.2)부터 BY ACCESS 절이 기본 설정입니다.)

오라클에서는 AUDIT 문에서 BY SESSION 대신 BY ACCESS를 권장합니다. BY ACCESS 절을 사용하는 것의 이점은 다음과 같습니다:

  • BY ACCESS 감사 옵션을 통해 생성된 감사 레코드에는 실행 상태(RETURN CODE), 실행 날짜 및 시간, 사용된 권한, 액세스 감사된 객체, SQL 텍스트 자체 및 해당 바인드 값과 같은 더 많은 정보가 포함됩니다. 또한 BY ACCESS 감사 옵션은 각 실행에 대한 SCN을 캡처하며 이것은 flashback 쿼리에 도움이 될 수 있습니다.
  • 오라클은 각 SQL 문의 실행, 권한 사용, 감사된 객체에 대한 작업마다 감사 레코드를 별도로 생성합니다. 반환 코드, 타임스탬프, 기록된 SQL 텍스트는 각 실행에 정확하게 기록되므로 얼마나 자주 작업이 수행되었는지 확인하는 데 도움이 됩니다.
  • BY ACCESS 감사 레코드에는 각 LOGON및 LOGOFF 항목이 별도로 포함되며 각각의 세부적인 타임스탬프가 있습니다.

예 :

AUDIT SELECT TABLE BY ACCESS;

위 예에서 :

  • 사용자 jward가 데이터베이스에 접속하고 departments 테이블을 조회하는 5개의 SELECT 문을 수행한 다음 데이터베이스에서 LOGOFF 합니다.
  • 이후에 사용자 swilliams가 데이터베이스에 접속하고 departments 테이블을 조회하는 3개의 SELECT 문을 수행한 다음 데이터베이스에서 LOGOFF 합니다.

위의 경우 감사 트레일에는 각 SELECT 문에 대한 8개의 레코드가 포함됩니다.

 

특정 사용자가 수행한 작업 감사

Statment와 Privilige 감사 옵션은 모든 사용자가 수행한 문장 또는 특정 사용자가 수행한 문장을 감사할 수 있습니다. 특정 사용자에 Audit 을 수행해두면 생성되는 감사 레코드 수를 최소화할 수 있습니다.

예제 9-6은 사용자 scott와 blake가 TABLE, VIEW를 SELECT 하거나 UPDATE 할 경우를 감사하는 방법입니다.

예제 9-6) 특정 사용자의 작업을 감사하는 AUDIT 문

AUDIT SELECT TABLE, UPDATE TABLE BY scott, blake BY ACCESS;

사용자별 감사에 대한 추가 정보는 Oracle Database SQL 문서를 확인하세요.

 

NOAUDIT SQL 문을 사용하여 감사 옵션 제거

NOAUDIT 문은 감사 옵션을 제거합니다. NOAUDIT 문을 사용하여 SQL, Privilege 감사 옵션 및 Object 감사 옵션을 재설정할 수 있습니다. SQL 및 권한 감사 옵션을 설정하는 NOAUDIT 문은 SQL 및 Privilege 감사 옵션의 범위를 제한하려면 BY user 절을 포함할 수 있습니다.

NOAUDIT 문을 사용하여 감사 옵션을 제거하려면 WHENEVER 절을 사용해야합니다. WHENEVER 절이 지정되지 않으면 감사 옵션은 성공적이든 실패하든 모두 비활성화됩니다.

NOAUDIT 문은 BY ACCESS 절을 지원하지 않습니다. 적절한 NOAUDIT 문을 사용하여 수행되고 있는 감사 옵션을 제거할 수 있습니다.

 

같이 읽으면 좋은 글

> Oracle 보안 관리 Audit 5편 (UNIX SYSLOG Audit)

> Oracle 보안 관리 Audit 4편 (OS Audit Trail 2)

Oracle 보안 관리 Audit 3편 (OS Audit Trail 1)

Oracle 보안 관리 Audit 2편 (표준감사를 통한 활동 감사)

> Oracle 보안 관리 Audit 1편 (감사란 ?)

 

1 thought on “Oracle 보안 관리 Audit 6편 (Audit 명령문)”

Comments are closed.