안녕하세요 Thinking Man 입니다.
저는 현재 약 13년째 IT 업계에서 Oracle DBA로 일하고 있습니다.
DBA로 일해오면서 audit 관리는 생소하였는데 기회가 되어 audit 데이터를 Archiving & Purge 작업을 하면서 Audit 기록하는 방법 및 관리 방법에 대해서 알아보게 되었습니다.
이번 글에서는 Oracle 보안 기능 중 Audit 에 대해서 알아보려고 합니다.
이 글은 Oracle 공식 문서를 참고하여 작성하였습니다.
감사 정보
감사란 무엇인가?
감사는 데이터베이스 사용자와 비 데이터베이스(어플리케이션) 사용자로부터 데이터베이스 사용을 모니터링하고 기록하는 것입니다.
감사를 SQL문의 유형별로 개별적으로 수행 할 수 있고 사용자 이름, 응용 프로그램, 시간 등과 같은 데이터 조합에 기반하여 수행할 수 있습니다.
성공적인 조치와 실패한 조치 모두를 감사할 수 있습니다. 감사를 사용하려면 감사를 활성화하고 감사해야 할 내용을 구성해야 합니다.
감사한 내용은 Oracle 내의 Dictionary 테이블 또는 DB 서버의 OS 파일 중 하나에 기록됩니다.
Oracle은 감사를 활성화하고 구성하는 것을 권장합니다.
감사는 강력한 내부 통제를 시행하는 효과적인 방법이며, 이를 통해 회사가 규정 준수 요구 사항을 충족할 수 있습니다.
이를 통해 비즈니스 운영을 모니터링하고 회사 정책에서 벗어날 수 있는 활동을 찾을 수 있습니다.
이렇게 함으로써 데이터베이스 및 응용 프로그램에 대한 엄격한 접근이 제어되며 임시 변경이 방지됩니다.
감사를 기본적으로 활성화하면 감사 및 규정 준수 인원을 위한 감사 기록을 생성할 수 있습니다.
감사에 대해 선택적으로 사용하고 비즈니스 규정 준수 요구 사항을 충족시키는지 확인해 보시길 바랍니다.
왜 감사를 사용하는가?
일반적으로 감사는 아래와 같은 활동을 수행하기 위해 사용됩니다:
– 작업한 내용에 대해 책임을 활성화합니다. 특정 스키마, 테이블 또는 행에 수행한 작업 또는 특정 내용에 영향을 미치는 작업을 포함합니다.
– 사용자(또는 침입자와 같은 다른 사용자)가 책임을 기반으로 부적절한 행동을 취하는 것을 방지 할 수 있습니다.
– 의심스러운 활동을 조사할 수 있습니다. 예를 들어, 사용자가 테이블에서 데이터를 삭제하면 보안 관리자는 데이터베이스에 대한 모든 연결 및 모든 테이블에서 성공 및 실패한 삭제를 감사하기로 결정할 수 있습니다.
– 권한이 없는 사용자의 조치를 관리자에게 알릴 수 있습니다. 예를 들어, 권한이 없는 사용자가 데이터를 변경 또는 삭제하거나 사용자가 예상보다 더 많은 권한을 가지고 있으면 사용자 권한을 재검토 할 수 있습니다.
– 특정 데이터베이스 활동에 대한 데이터를 모니터링하고 수집할 수 있습니다. 데이터베이스 관리자는 어떤 테이블이 업데이트 되고 있는지, 얼마나 많은 논리 I/O가 수행되었는지 또는 얼마나 많은 사용자가 연결 하는지에 대한 통계를 수집할 수 있습니다.
– 권한 또는 액세스 제어 구현 문제를 감지할 수 있습니다. 예를 들어, 다른 방법으로 데이터가 보호되어 있는 경우 예상대로 감사 레코드를 생성하지 않아야 하는 감사 정책을 만들 수 있습니다. 그러나 이러한 정책이 감사 레코드를 생성하면 다른 보안 제어가 올바르게 구현되지 않았음을 알게됩니다.
– 규정 준수를 위한 감사 요구 사항을 해결할 수 있습니다. 다음과 같은 규정은 공통 감사 관련 요구 사항을 갖고 있습니다:
사르반스-옥슬리법 / 건강보험 이동성 및 책임법 (HIPAA) / 자본 측정 및 자본 표준의 국제 수렴: 개정된 프레임워크 (Basel II) / 일본 개인 정보 법
데이터베이스 감사 트레일(Audit Trail) 보호
의심스러운 데이터베이스 활동을 기록하기 때문에, Audit 레코드의 무결성을 보호해야 합니다.
오라클 데이터베이스는 데이터베이스 감사 데이터를 SYS.AUD$ 및 SYS.FGA_LOG$ 테이블에 기록합니다.
SYS.AUD$ 및 SYS.FGA_LOG$ 테이블을 위한 객체 감사 옵션으로 생성된 감사 레코드는 관리자 권한으로 연결한 사용자에 의해만 감사 트레일에서 삭제할 수 있습니다.
관리자도 권한 없는 사용으로 감사됩니다.
데이터베이스 감사 트레일을 보호하는 다른 방법은 다음과 같습니다:
O7_DICTIONARY_ACCESSIBILITY 초기화 매개변수를 FALSE(기본값)로 설정합니다.
이러면 SYSDBA 권한을 가진 사용자만 SYS.AUD$ 및 SYS.FGA_LOG$ 테이블의 감사 데이터에 DML 조치를 수행할 수 있습니다.
기본 설치 시 O7_DICTIONARY_ACCESSIBILITY는 FALSE로 설정됩니다.
모든 플랫폼에서 항상 감사되는 활동
오라클 데이터베이스는 항상 특정 데이터베이스 관련 조치를 감사하고 해당 조치를 운영 체제 감사 파일에 기록합니다.
이 작업은 SYSDBA 또는 SYSOPER 권한으로 로그인한 모든 사용자의 조치를 포함합니다. 이를 의무 감사라고 합니다.
데이터베이스 감사 트레일을 활성화하더라도 (즉, AUDIT_TRAIL 매개변수를 DB로 설정한 경우) 오라클 데이터베이스는 여전히 의무 레코드를 운영 체제 파일에 기록합니다.
기본적으로 UNIX 및 Windows 시스템의 경우 파일은 $ORACLE_BASE/admin/$ORACLE_SID/adump 디렉터리에 생성 됩니다.
Windows 시스템에서는 Oracle 데이터베이스가 이 정보를 Windows 이벤트 뷰어에 기록합니다.
이 디렉토리의 위치를 AUDIT_FILE_DEST 초기화 매개변수로 변경할 수 있습니다.
최상의 감사 실천법
일반적인 규칙으로 감사 전략을 설계할 때는 규정 준수 요구 사항을 충족하기 위해 필요한 정보를 수집하되, 가장 큰 보안 우려를 일으키는 활동에 중점을 두어야 합니다.
예를 들어, 데이터베이스의 모든 테이블을 감사하는 것은 현실적이지 않지만 급여와 같은 민감한 데이터를 포함하는 테이블 열을 감사하는 것이 실용적입니다.
표준 및 세밀한 감사 모두 특정 활동에 중점을 둔 감사 정책을 설계하는 데 사용할 수 있는 메커니즘이 있습니다.
그리고 정기적으로 감사 추적 데이터를 보관하고 정리해야 합니다.
마치며
이번 글에서는 Audit이 무엇인지, 사용하는 이유 등의 기본적인 정보에 대해서 알아보았습니다.
다음글에서는 Audit에 대해 좀 더 상세한 내용으로 찾아뵙겠습니다.
감사합니다.
추가로 읽어봐야 할 글 목록
1 thought on “Oracle 보안 관리 Audit 1편 (감사란 ?)”
Comments are closed.