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

안녕하세요 Thinking Man 입니다.

이번 글에서는 “표준감사를 통한 활동 감사” 중 OS 감사(OS Audit Trail)에 대한 내용을 작성해 보았습니다.

운영 체제 감사와 운영 체제 감사 레코드가 보이는 형식에 대해서 알아보았습니다.

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

 

 

표준 감사를 통한 활동 감사

 

OS Audit Trail

 

운영 체제와 데이터베이스 활동 감사의 공통점

운영 체제 및 데이터베이스 감사는 많은 유형의 동작을 동시에 캡처합니다.

표 9-2 에서는 운영 체제 감사 레코드를 나열하고 있으며 대부분은 DBA_AUDIT_TRAIL View의 컬럼과 매핑됩니다.

“표 9-2 운영 체제 및 데이터베이스 감사 항목 매핑”

Operating System Audit Record

DBA_AUDIT_TRAIL View Column

SESSIONID SESSIONID
ENTRYID ENTRYID
STATEMENT STATEMENTID
USERID USERNAME
USERHOST USERHOST
TERMINAL TERMINAL
ACTION ACTION
SYS$OPTIONS AUDIT 또는 NOAUDIT로 설정된 감사 옵션 또는 부여 또는 취소된 권한을 나타냅니다. “주석 1”
RETURNCODE RETURNCODE
OBJ$CREATOR OWNER
OBJ$NAME OBJ_NAME
OBJ$PRIVILEGES OBJ_PRIVILEGE
AUTH$GRANTEE GRANTEE
NEW$OWNER NEW_OWNER
NEW$NAME NEW_NAME
SES$ACTIONS SES_ACTIONS
LOGOFF$PREAD LOGOFF_PREAD
LOGOFF$LWRITE LOGOFF_LWRITE
COMMENT$TEXT COMMENT_TEXT
OS$USERID OS_USERNAME
PRIV$USED PRIV_USED
SES$LABEL CLIENT_ID
SES$TID DBA_AUDIT_TRAIL 뷰에서 해당 항목이 없지만 SYS.AUD$ 테이블에 나타납니다.
SPARE2 DBA_AUDIT_TRAIL 뷰에서 해당 항목이 없지만 SYS.AUD$ 테이블에 나타납니다.

 

“주석 1” 예를 들어, ACTION 값이 104 (AUDIT) 또는 105 (NOAUDIT)인 경우 SYS$OPTIONS 숫자는 STMT_AUDIT_OPTION_MAP 테이블에 나열된 감사 옵션을 나타냅니다.

ACTION 값이 108 (GRANT) 또는 109 (REVOKE)인 경우 숫자는 SYSTEM_PRIVILEGE_MAP 테이블에 나열된 권한을 나타냅니다.

 

운영 체제 감사 추적

이 섹션에서는 아래 내용이 포함되어 있습니다:

  • 운영 체제 감사
  • 운영 체제 감사 레코드가 보이는 형식
  • 운영 체제 감사의 장점
  • 운영 체제 감사 작동 방식
  • 운영 체제 감사를 위한 디렉터리 지정

 

운영 체제 감사 

DBA_AUDIT_TRAIL(SYS.AUD$ 테이블)에 표준 감사 레코드를 생성하는 대신 운영 체제 파일에 표준 감사 레코드를 생성할 수 있습니다.

감사 추적을 포함하는 운영 체제 파일에는 다음과 같은 데이터가 포함될 수 있습니다

  • 데이터베이스 감사 추적 레코드
  • 의무 감사 레코드 (즉, 항상 감사되는 데이터베이스 동작)
  • 관리자 사용자(SYS)에 대한 감사 레코드

운영 체제 감사 레코드를 텍스트 파일 또는 XML 파일로 작성할 수 있습니다.

 

운영 체제 감사 레코드가 보이는 형식

운영 체제 감사 레코드를 텍스트 또는 XML 파일 형식으로 저장할 수 있습니다.

텍스트 및 XML 운영 체제 파일의 내용에 차이가 있고 형식은 다른 릴리스 간에 변경될 수 있음에 유의해야 합니다.

텍스트 운영 체제 파일에는 타임스탬프의 표현이 있습니다.

예) 수 5월 6일 00시 57분 36초 2009 -07:00

이러한 타임스탬프는 이벤트 로그나 syslog에 나타나지 않으며 자체적으로 타임스탬프 형식을 가지고 있습니다. 타임스탬프 문자열은 텍스트 운영 체제 감사 파일에만 나타납니다.

예제 9-3은 Windows에 설치된 오라클 DB에서 로그인 작업을 위한 텍스트 운영 체제 감사의 일반적인 예입니다.

예제 9-3 텍스트 파일 운영 체제 감사

Audit trail: 
LENGTH: "349" 
SESSIONID:[5] "43464" 
ENTRYID:[1] "1" 
STATEMENT:[1] "1" 
USERID:[6] "DBSNMP" 
USERHOST:[7] "SHOBEEN" 
TERMINAL:[3] "MAU" 
ACTION:[3] "100" 
RETURNCODE:[1] "0" 
COMMENT$TEXT:[97] "Authenticated by: DATABASE; Client address: 
(ADDRESS=(PROTOCOL=tcp)(HOST=192.0.2.4)(PORT=2955))" 
OS$USERID:[19] "NT AUTHORITY\SYSTEM" 
DBID:[10] "1212547373" 
PRIV$USED:[1] "5"

항목에 대한 설명:

– LENGTH는 이 감사 레코드에서 사용된 바이트의 총 수를 나타냅니다. 이 숫자는 감사 레코드의 끝에 있는 경우 줄 바꿈 바이트 (\n)도 포함됩니다.

– [] 괄호는 각 감사 항목의 값의 길이를 나타냅니다. 예를 들어 USERID 항목인 DBSNMP는 6바이트입니다.

– SESSIONID는 감사 세션 ID 번호를 나타냅니다. 세션 ID는 V$SESSION 뷰를 조회하여 AUDSID 컬럼으로 확인할 수 있습니다.

– ENTRYID는 각 감사 추적 레코드에 할당된 현재 감사 항목 번호를 나타냅니다. 감사 ENTRYID 시퀀스 번호는 세부 감사 레코드와 일반 감사 레코드 사이에서 공유됩니다.

– STATEMENT는 사용자가 실행하는 SQL문에 할당된 숫자 ID입니다. 사용자의 세션에서 여러 SQL이 수행될 경우 여러개의 감사 레코드로 이어질 수 있기 때문에 숫자를 할당하는 것으로 보입니다.

– ACTION은 사용자가 수행한 ACTION을 나타내는 숫자 값입니다. 해당 유형의 이름은 AUDIT_ACTIONS 테이블을 조회하여 확인 가능합니다 . 예로 ACTION 100은 LOGON을 나타냅니다.

– RETURNCODE는 감사된 동작이 성공했는지 여부를 나타냅니다. 0은 성공을 나타냅니다. 동작이 실패하면 반환 코드에는 Oracle Database 오류 번호가 나열됩니다. 예를 들어, 존재하지 않는 테이블을 삭제하려고 하면 오류 번호가 ‘ORA-00903 무효한 테이블 이름’이 되며 RETURNCODE 에는 903으로 출력됩니다.

– COMMENT$TEXT는 감사 레코드에 대한 추가적인 주석을 나타냅니다. 예를 들어, LOGON 감사 레코드에 대한 인증 방법을 나타낼 수 있습니다. 이것은 DBA_COMMON_AUDIT_TRAIL 뷰의 COMENT_TEXT 컬럼과 동일합니다.

– DBID는 데이터베이스 생성 시에 매겨지는 데이터베이스 식별자입니다. 이것은 V$DATABASE 뷰의 DBID 컬럼과 동일합니다.

– ECONTEXT_ID는 응용 프로그램 실행 컨텍스트 식별자를 나타냅니다.

– PRIVS$USED는 동작을 수행하는 데 사용된 권한을 나타냅니다. 권한을 찾으려면 SYSTEM_PRIVILEGE_MAP 테이블을 조회하십시오. 예를 들어, 권한 5는 이 테이블에서 -5로 표시되며 CREATE SESSION을 의미합니다. PRIVS$USED는 PRIV_USED 컬럼과 동일합니다.

 

추가적으로 확인 가능한 값

– SCN (예: SCN:8934328925)은 시스템 변경 번호 (SCN)를 나타냅니다. 이 값을 사용하여 과거 시점의 설정(예: 컬럼) 값을 찾으려면 플래시백 쿼리를 수행할 수 있습니다. 예를 들어, SCN 번호를 기반으로 OE.ORDERS 테이블의 ORDER_TOTAL 컬럼의 값을 찾으려면 다음 SELECT 문을 사용하여 확인 가능합니다.

SELECT ORDER_TOTAL 
FROM OE.ORDERS
AS OF SCN = 8934328925
WHERE ORDER_TOTAL = 86;

– SES_ACTIONS는 세션 동안 발생한 동작을 나타냅니다. 이 필드는 BY SESSION 절로 감사 이벤트가 구성된 경우에만 존재합니다. 이 필드는 세션 동안 발생한 동작을 자세히 설명하지 않으므로 BY ACCESS 절로 감사 이벤트를 구성해야 합니다.

SES_ACTIONS 필드는 16자리를 포함합니다. 위치 14, 15 및 16은 미래 사용을 위해 예약되어 있습니다. 처음 12자리에서 각 위치는 동작의 결과를 나타냅니다. 이것들은 ALTER, AUDIT, COMMENT, DELETE, GRANT, INDEX, INSERT, LOCK, RENAME, SELECT, UPDATE 및 FLASHBACK입니다. 예를 들어, 사용자가 ALTER 문을 성공적으로 실행한 경우 SES_ACTIONS 설정은 다음과 같습니다.

S---------------

첫 번째 위치(ALTER에 대한)의 S는 성공을 나타냅니다. ALTER 문이 실패한 경우 해당 위치에 F가 나타났을 것입니다. 동작이 성공과 실패 양쪽에서 결과를 얻는 경우 해당 위치에 B가 나타납니다.

– SES$TID는 감사 동작에 영향을 받는 객체의 ID를 나타냅니다.

– SPARE2는 사용자가 SYS.AUD$ 테이블을 수정했는지 여부를 나타냅니다. 0은 사용자가 SYS.AUD$를 수정했음을 나타내며 그렇지 않은 경우 값이 NULL입니다.

비슷한 방식으로, 예제 9-4는 XML 감사 레코드가 나타나는 방식을 보여줍니다.

예제 9-4 XML 파일 운영 체제 감사 레코드

<?xml version="1.0" encoding="UTF-8"?>  
 <Audit xmlns="http://xmlns.oracle.com/oracleas/schema/dbserver_audittrail-11_2.xsd"   
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  xsi:schemaLocation="http://xmlns.oracle.com/oracleas/schema/dbserver_audittrail-11_2.xsd">   
  <Version>11.2</Version>   
  <AuditRecord>     
   <Audit_Type>1</Audit_Type>
       <Session_Id>43535</Session_Id>
       <StatementId>1</StatementId>
       <EntryId>1</EntryId>
       <Extended_Timestamp>2009-04-29T18:32:26.062000Z</Extended_Timestamp>
       <DB_User>SYSMAN</DB_User>
       <OS_User>SYSTEM</OS_User>
       <Userhost>shobeen</Userhost>
       <OS_Process>3164:3648</OS_Process>
       <Terminal>mau</Terminal>
       <Instance_Number>0</Instance_Number>
       <Action>100</Action>
       <TransactionId>0000000000000000</TransactionId>
       <Returncode>0</Returncode>
       <Comment_Text>Authenticated by: DATABASE; Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.0.2.4)(PORT=3536))</Comment_Text>
       <Priv_Used>5</Priv_Used>
</AuditRecord>
</Audit>

항목에 대한 설명:

– AuditRecord 항목에는 전체 감사 레코드가 포함되어 있습니다. (Audit_Record 항목에 대한 자세한 정보는 예제 9-3을 참조하십시오.)

– Audit_Type는 감사 추적의 유형을 나타냅니다.

1: 표준 감사 레코드

2: 세분화된 감사 레코드

4: SYS 감사 레코드

8: 의무 감사 레코드

이 필드는 XML 감사 파일에서만 나타납니다. 텍스트 운영 체제 감사 파일에는 나타나지 않습니다.

– Extended_Timestamp은 작업의 시간을 나타내며 (AUDIT SESSION에 의해 생성된 항목의 사용자 로그인 타임스탬프), 협정 세계 시간 (UTC) 또는 그리니치 표준시 (GMT)로 표시됩니다. 이 필드는 XML 감사 파일에만 나타납니다. OS 텍스트 감사 파일에는 표시되지 않습니다.

– Instance_Number는 Oracle Real Application Clusters 환경에 대한 사용자가 연결된 인스턴스 번호를 나타냅니다. 이 예에서 숫자는 0이며, 이는 단일 인스턴스 데이터베이스를 의미합니다.

– Sql_Bind(예: <Sql_Bind>#1(5):89</Sql_Bind>)는 바인드 변수의 값을 표시합니다. 구문은 VariablePosition(LengthOfVariableValue):ValueofBindVariable 이렇습니다.

의미 : #1(5):89은 바인드 변수가 1개 있고, 그 값은 5자리이며 바인드 변수의 값은 89임을 나타냅니다.

이 항목은 AUDIT_TRAIL 매개변수를 XML, EXTENDED로 설정한 경우에만 값이 나타날 수 있습니다. 이 값은 DBA_COMMON_AUDIT_TRAIL 뷰에서 확인 가능합니다.

– Sql_Text(예: <Sql_Text>begin procedure_one(:num); end; </Sql_Text>)는 AUDIT_TRAIL 매개변수를 XML, EXTENDED로 설정한 경우에 나타납니다. 이는 사용자가 입력한 SQL 텍스트를 보여줍니다.

 

추가로 읽어봐야 할 글 목록

> 표준활동 감사를 통한 활동 감사

> Oracle Audit의 기본내용. Audit 이란 ?

2 thoughts on “Oracle 보안 관리 Audit 3편 (OS Audit Trail 1)”

Comments are closed.