안녕하세요 Thinking Man 입니다.
이번 글에서는 기타 Object(Directory, Function, Procedure, Package)와 Network Audit을 하는 방법에 대해 알아보도록 하겠습니다.
이번 글을 읽게 되면 기타 Object 및 Network 에 대한 감사 방법과 특징, 감사를 제거하는 방법에 대해서 알 수 있습니다.
이 글은 Oracle 11gR2 공식 문서를 참고하여 작성하였습니다.
DIRECTORY AUDIT
DIRECTORY 감사 정보
Oracle의 Directory Object 도 감사할 수 있습니다.
사용자가 생성한 디렉토리에 파일을 읽고 쓰는 프로그램이 있을 때 해당 디렉토리를 사용하는 프로그램의 사용자를 감사할 수 있습니다.
DIRECTORY 감사 수행
AUDIT 문을 사용하여 디렉토리를 감사 할 수 있습니다. 아래 예제는 export 라는 디렉토리에 EXECUTE 권한을 감사하는 예제입니다.
예제) DIRECTORY 감사
AUDIT EXECUTE ON DIRECTORY export BY ACCESS;
DIRECTORY 감사 중지
감사 중인 디렉토리를 감사 중단하려면 아래 예제와 같이 NOAUDIT 을 사용합니다.
NOAUDIT EXECUTE ON DIRECTORY export;
FUNCTION, PROCEDURE, PACKAGE, TRIGGER AUDIT
FUNCTION, PROCEDURE, PACKAGE, TRIGGER 감사 정보
Oracle의 Function, Procedure, Package, Trigger 또한 감사할 수 있으며 특징은 아래와 같습니다.
- 독립적인 함수, 독립적인 프로시져, 독립적인 PL/SQL 패키지를 개별적으로 감사 가능합니다.
- PL/SQL 패키지를 감사할 경우에는 패키지 내부의 모든 함수와 프로시져 또한 감사합니다.
- 모든 EXECUTE 를 감사할 경우 Oracle DB의 모든 함수, 프로시져, 패키지, 트리거를 감사합니다.
- PL/SQL 패키지 내부에 있는 개별 함수나 프로시져만 감사하는것은 불가능합니다.
※ Oracle Virtual Private 정책과 관련된 함수를 감사하려면 아래 내용을 참고하세요
Dynamic Policy : Oracle DB는 정책 함수를 SQL 문 구문 분석 중, 실행 중에 두 번 평가합니다. 그 결과 각 평가에 대해 두 개의 감사 레코드가 생성됩니다.
Static Policy : Oracle DB는 정책 함수를 한 번 평가한 다음 SGA에 Caching합니다. 그 결과 한 번의 감사 레코드만 생성됩니다.
Context Sensitive Policy : Oracle DB는 정책 함수를 SQL 문 구문 분석 중에 한 번 실행합니다. 그 결과 한 번의 감사 레코드만 생성됩니다.
FUNCTION, PROCEDURE, PACKAGE, TRIGGER Audit 설정
아래는 데이터베이스 내의 모든 사용자가 수행하는 모든 함수, 프로시져, 패키지, 트리거를 감사하는 예제입니다.
예제)
AUDIT EXECUTE PROCEDURE BY ACCESS;
아래는 사용자 thinker가 수행하는 함수, 프로시저, 패키지, 트리거의 성공과 실패한 실행을 모두 감사하는 예제입니다.
예제)
AUDIT EXECUTE PROCEDURE BY thinker BY ACCESS;
아래는 예제 9-20은 thinker 스키마 내에 있는 test_audit라는 개별 프로시저의 성공적인 수행만 감사하는 예제입니다. 아래 예제는 개별 함수, 트리거에도 동일하게 적용됩니다.
예제)
AUDIT EXECUTE ON thinker.test_audit BY ACCESS WHENEVER SUCCESSFUL;
FUNCTION, PROCEDURE, PACKAGE, TRIGGER Audit 제거
함수, 프로시저, 및 트리거 감사를 제거하려면 NOAUDIT 문을 사용하면 됩니다.
NOAUDIT EXECUTE PROCEDURE; NOAUDIT EXECUTE PROCEDURE BY thinker; NOAUDIT EXECUTE ON thinker.test_audit;
NETWORK AUDIT
NETWORK AUDIT의 정보
Oracle에서는 네트워크 프로토콜의 예상치 못한 오류나 네트워크의 내부적인 오류를 AUDIT을 사용하여 감사할 수 있습니다.
이 네트워크 감사는 클라이언트와의 네트워크 통신 중 발생하는 오류를 파악할 수 있습니다. 이런 오류는 SQL*Net 드라이버에서 발생한 경우입니다.
네트워크 오류는 원인이 여러가지가 있을 수 있습니다.
예를 들어, 데이터베이스 엔지니어가 테스트 목적으로 설정한 내부 이벤트가 네트워크 오류를 발생시킬 수 있습니다.
다른 원인으로는 암호화를 위한 충돌하는 구성 설정, 예상된 암호화를 생성하거나 처리하기 위해 필요한 정보를 찾지 못한 네트워크와 같은 것이 있습니다.
네트워크 감사에서 DBA_AUDIT_TRAIL의 ACTION = 122 (NETWORK ERROR) 는 연결 실패가 아닙니다.
네트워크 감사는 데이터가 네트워크를 통해 전송되는 과정에 포커스 되어 있습니다.
네트워크의 감사 레코드는 DBA_AUDIT_TRAIL View의 COMMENT_TEXT 컬럼에 클라이언트의 인증 유형 및 SQL*Net 주소(사용 가능한 경우)를 아래와 같은 형식으로 표시됩니다.
Authenticated by: authentication_type; Client Address: SQLNetAddress_of_client
Authenticated by : DATABASE, NETWORK, PROXY 3가지 값 중 하나가 표시됩니다.
Client Address : SQLNetAddress_of_client 부분은 이 정보를 사용할 수 있는 경우에만 나타납니다.
아래 표는 네트워크 오류의 케이스 별 원인과 해결 방법을 나타내며 대표적인 네 가지 오류에 대해 보여주고 있습니다.
표) 감사 가능한 네트워크 오류 조건
Error | Cause | Action |
TNS-02507 암호화 알고리즘이 설치되지 않음 |
알고리즘을 선택한 후 서버는 해당 알고리즘의 인덱스를 찾지 못했습니다. 이는 알고리즘이 (간접적으로) 그 목록에서 선택되었기 때문에 불가능해야 합니다. | 자세한 내용은 추적을 활성화하고 작업을 다시 실행하십시오. (이 오류는 일반적으로 사용자에게 표시되지 않습니다.) 오류가 지속되면 Oracle 서비스에 문의 필요. |
TNS-12648 암호화 또는 데이터 무결성 알고리즘 목록이 비어 있음 |
Oracle Advanced Security 알고리즘 목록 매개변수가 비어 있었습니다. | 최소한 하나의 설치된 알고리즘의 이름을 포함하도록 목록을 변경하거나 모든 설치된 알고리즘을 허용하지 않는 경우 목록을 제거하십시오. |
TNS-12649 알려지지 않은 암호화 또는 데이터 무결성 알고리즘 |
Oracle Advanced Security 알고리즘 목록에 인식되지 않는 알고리즘 이름이 포함되어 있었습니다. | 해당 알고리즘 이름을 제거하거나, 철자가 틀렸다면 수정하거나, 누락된 알고리즘을 위한 드라이버를 설치하십시오. |
TNS-12650 공통 암호화 또는 데이터 무결성 알고리즘이 없음 |
클라이언트와 서버는 암호화 또는 데이터 무결성에 대한 공통 알고리즘을 가지고 있지 않습니다. | 중첩되는 알고리즘 세트를 선택하십시오. 다시 말해, 클라이언트 알고리즘 선택 중 하나를 서버 목록에 추가하거나, 서버 목록 선택 중 하나를 클라이언트 알고리즘에 추가하십시오. |
NETWORK AUDIT 설정
AUDIT 문을 사용하여 네트워크 감사를 설정할 수 있습니다.
예제)
AUDIT NETWORK BY ACCESS;
NETWORK AUDIT 제거
NOAUDIT 문을 사용하여 감사중인 네트워크 감사를 제거할 수 있습니다.
예제)
NOAUDIT NETWORK;
같이 읽으면 좋은 글
> Oracle 보안 관리 Audit 9편 (Schema Object Audit)
> Oracle 보안 관리 Audit 8편 (SQL & Audit Privileges)
> Oracle 보안 관리 Audit 7편 (SQL Audit)
1 thought on “Oracle 보안 관리 Audit 10편 (Directory, Function, Procedure, Package, Trigger, Network Audit)”
Comments are closed.