본문 바로가기
ORACLE/관리

오라클 데이터베이스 감사(audit)

by 딘스톤 2023. 10. 2.

I. 데이터베이스 보안

    1. 데이터 및 서비스에 대한 액세스 제한

    2. 유저 인증

    3. 의심스러운 작업 모니터

II. 준수 여부 모니터

    1. 필수 감사

    2. 표준 데이터베이스 감사

    3. 값 기준 갑사

    4. FGA

    5. SYSDBA 감사

III. 감사 옵션 지정

    1. SQL 문 감사

    2. 시스템 권한 감사

    3. 객체 권한 감사

IV. Audit Trail 구성

V. Audit Trail 균일화

VI. Audit Trail 유지 관리

VII. 표준 데이터베이스 감사

VIII. 기본 감사

IX. 값 기준 감사

X. SYSDBA 감사

XI. Fine-Grained Auditing

XII. FGA 정책

    1. 정책 이름

    2. 감사 조건

    3. 감사 열

    4. 객체

    5. 처리기

    6. 상태

XIII. FGA 지침

XIV. 감사(Audit)된 DML 문: 고려 사항


I. 데이터베이스 보안

1. 데이터 및 서비스에 대한 액세스 제한

    • 모든 유저가 모든 데이터에 액세스 할 수 있도록 해서는 안됩니다.

    • 데이터베이스에 저장된 내용에 따라 다르지만 보통 업무 요구 사항, 고객의 기대치 및 법적 제재에 따라 제한된 액세스 권한을

      부여할 수 있습니다.

    • 오라클 데이터베이스는 매우 상세한 권한 부여 제어를 제공하여 데이터베이스 액세스를 제한합니다.

    • 액세스 제한에는 최소 권한의 원칙 적용이 포함되어야 합니다.

2. 유저 인증

    • 중요한 데이터에 대한 액세스를 제어하려면 먼저 시스템에서 누가 데이터에 액세스 하려고 하는지 확인해야 합니다.

    • 인증 정보가 노출되면 다른 모든 보안 예방책은 소용없게 됩니다.

    • 가장 기본적인 형태의 유저 인증은 유저에게 암호와 같이 유저가 알고 있는 정보를 제공하도록 하는 것입니다.

    • 훨씬 더 강력한 형태의 인증은 지문, 홍채 스캔, 뼈 구조 형태 등 고유한 생물 통계학적 특징을 통해 특정 유저를 식별하는 것

       입니다.

    • 사용하지 않는 유저 계정은 인증이 노출되지 않도록 lock 해 두어야 합니다.

3. 의심스러운 작업 모니터

    • 권한이 부여되어 있으며 인증된 유저도 시스템을 손상시킬 수 있습니다.

    • 오라클 데이터베이스는 우저 작업을 추적하고 의심이 가는 경향을 식별할 수 있도록 다양한 감사도구를 제공합니다.

II. 준수 여부 모니터

    • 감사 과정에서는 시스템에서 발생하는 일에 대한 정보를 캡처하고 저장하게 되어 시스템에서 처리할 작업량이 증가하므로

       원하는 이벤트만 캡처되도록 감사를 제한해야 합니다.

    • 적절하게 감사를 제한하면 시스템 성능에 미치는 영향을 최소화할 수 있습니다.

1. 필수 감사

    • 모든 오라클 데이터베이스는 다른 감사 옵션이나 파라미터에 관계없이 특정 작업을 감사합니다.

    • 필수 감사 로그가 필요한 이유는 데이터베이스가 권한이 있는 유저의 연결과 같은 일부 데이터베이스 작업을 기록할 필요가

      있기 때문입니다.

2. 표준 데이터베이스 감사

    • AUDIT_TRAIL초기화 파라미터를 사용하여 시스템 레빌에서 활성화됩니다.

    • 감사를 활성화하고 나면 감사할 객체 및 권한을 선택하고 AUDIT 명령을 사용하여 감사 속성을 설정합니다.

3. 값 기준 감사

    • 표준 데이터베이스 감사의 확장된 감사 기능이며, 감사한 이벤트 발생 사실뿐만 아니라 삽입, 갱신 또는 삭제된 실제 값을

      캡처합니다.

    • 값 기준 감사는 데이터베이스 트리거를 통해 구현됩니다.

4. FGA

    • 표준 데이터베이스 감사의 확장된 감사 기능이며, 이벤트 발생 사실만이 아니라 실행된 실제 SQL 문을 캡처합니다.

5. SYSDBA 감사

    • DBA와 운영체제 Audit Trail에서 DBA 작업을 모니터 하는 감사자 또는 보안 관리자 간에 감사 책임을 구분합니다.

III. 감사 옵션 지정

1. SQL 문 감사

    • create table, drop table, truncate table 등을 포함하여 테이블에 영향을 주는 모든 DDL문을 감사할 수 있습니다.

    • username 또는 Success/Failure를 사용하여 SQL 문 감사를 제한할 수 있습니다.

2. 시스템 권한 감사

    • DROP ANY TABLE과 같은 시스템 권한 행사를 감사하는 데 사용되며 username 또는 Success/Failure를 사용하여 제한

      할 수 있습니다.

    • 기본적으로 감사는 BY ACCESS입니다.

    • 감사한 시스템 권한을 행사할 때마다 감사 레코드가 생성됩니다.

    • BY SESSION절을 사용하여 세션별로 하나의 레코드만 생성되도록 해당 레코드를 그룹화할 수 있습니다.

    • 유저가 다른 유저가 소유한 테이블에 대해 여러 개의 update문을 실행할 경우 하나의 감사 레코드만 수집할 수 있습니다.

    • 시스템 권한 감사가 성능 및 저장 영역에 미치는 영향을 제한하려면 BY SESSION절을 사용하는 것이 좋습니다.

3. 객체 권한 감사

    • 테이블, 뷰, 프로시저, 시퀀스, 디렉토리 및 유저 정의 데이터 유형에 대한 작업을 감사하는 데 사용할 수 있습니다.

    • Succes/Failure를 사용하여 제한할 수 있으며 세션 또는 액세스 별로 그룹화할 수 있습니다.

    • 시스템 권한 감사와 달리 기본적으로 세션별로 그룹화됩니다.

    • 각 작업마다 Audit Trail 레코드라 별도로 생성되도록 하려면 BY ACCESS를 명시적으로 지정해야 합니다.

IV. Audit Trail 구성

    • Enterprise Manager 또는 SQL*Plus의 ALTER SYSTEM SET 명령을 사용하여 AUDIT_TRAIL 파라미터를 설정할 수

      있습니다.

    • AUDIT_TRAIL 파라미터는 정적 파리미터로 변경 사항을 적용하려면 데이터베이스를 재 시작해야 합니다.

    • DBCA를 사용하여 데이터베이스를 생성한 경우 기본적으로 AUDIT_TRAIL 파라미터가 DB로 설정됩니다.

    • AUDIT_TRAIL이 DB로 설정된 경우 기본 동작은 Audit Trail을 데이터베이서 AUD$ 테이블에 기록하는 것입니다.

    • 이 감사는 대부분의 사이트에서 데이터베이스 성능에 큰 영향을 주지 않아야 합니다.

    • 오라클은 OS Audit Trail 파일을 사용할 것을 권장합니다.

    • 데이터베이스를 수동으로 생성한 경우 AUDIT_TRAIL이 기본적으로 NONE으로 설정됩니다.

V. Audit Trail 균일화

    • 오라클 데이터베이스는 표준 및 Fine-Grained Auditing에 대해 동일한 필드를 추적하므로 데이터베이스 작업을 쉽게 분석할

      수 있습니다.

    • 표준 Audit Trail과 Fine-Grained Audit Trail은 서로를 보완하는 속성을 가지고 있습니다.

    • 표준 감사를 통해 수집되는 추가 정보에는 다음이 포함됩니다.

       ৹ 시스템의 변경 사항을 기록하는 SCN( 시스템 변경 번호 ) 

       ৹ 유저가 실행한 정확한 SQL 텍스트 및 이 SQL 텍스트와 함께 사용된 바인드 변수, 이 열들은 AUDIT_TRAIL=DB,

          EXTENDED를 지정한 경우에만 표시됩니다.

    • Fine-Grained Auditing을 통해 수집되는 추가 정보에는 다음이 포함됩니다.

       ৹ 각 감사 레코드에 대한 일련번호

       ৹ 단일 명령문으로 발생되는 다중 감사 항목에 연결되는 명령문 번호

    • 공통 속성에는 다음이 포함됩니다.

       ৹ UTC (협정 세계 표준시)로 표시된 세계 시간 기록, 이 필드는 지리적으로 다른 위치, 다른 시간대에 있는 여러 서버를 모니터

         할 때 유용합니다.

       ৹ 각 RAC Instance에 대한 고유한 Instance 번호

       ৹ 단일 트랜잭션의 여러 감사 레코드를 그룹화할 수 있는 트랜잭션 식별자

    •  DBA_COMMON_AUDIT_TRAIL 뷰는 표준 감사 로그 레코드와 Fine-Grained Audit 로그 레코드를 결합합니다.  

VI. Audit Trail 유지 관리

    •  기본 유지 관리에는 데이터베이스 또는 운영 체제에서 감사 레코드를 검토하고 오래된 레코드를 제거하는 작업이 포함됩니다.

    •  Audit Trail을 늘려 사용 가능한 저장 영역을 채울 수 있습니다.

    •  파일 시스템이 가득 차면 시스템 고장 또는 단순한 성능 문제가 발생할 수 있습니다.

    •  데이터베이스는 Audit Trail이 테이블스페이스를 채운 경우 감사된 작업이 완료되지 않습니다.

    •  Audit Trail이 시스템 테이블스페이스를 채운 경우 감사 작업이 종료되기 전에 다른 작업의 성능에 영향을 줍니다.

    •  표준 감사의 Audit Trail은 AUD$ 테이블에 저장됩니다.

    •  FGA의 Audit Trail은 FGA_LOG$ 테이블에 저장됩니다.

    •  두 테이블 모두 기본적으로 SYSTEM 테이블스페이스에 생성됩니다.

    •  Data Pump Export/Import 유틸리티를 사용하여 이러한 테이블을 다른 테이블스페이스로 이동할 수 있습니다.

VII. 표준 데이터베이스 감사

    •  데이터베이스 감사를 사용하려면 먼저 정적 AUDIT_TRAIL 파라미터가 감사 레코드의 저장 영역 위치를 가리키도록

       설정해야 합니다,

    •  데이터베이스 감사를 활성화하고 감사 옵션을 지정하면 데이터베이스가 감사 정보를 수집하기 시작합니다.

    •  AUDIT_TRAIL을 OS로 설정하면 감사 레코드가 운영 체제의 감사 시스템에 저장되고, 윈도우 환경에서는 이벤트 로그에, 

      리눅스 환경에서는 AUDIT_FILE_DEST 파라미터로 지정되는 파일에 저장됩니다.

    •  AUDIT_TRAIL 파라미터가 DB 또는 DB, EXTENDED로 설정된 경우 SYS 스키마의 일부인 DBA_AUDIT_TRAIL부에서 감사

      레코드를 검토할 수 있습니다.

    •  AUDIT_TRAIL이 XML 또는 XML, EXTENDED로 설정된 경우 AUDIT_FILE_DEST 파라미터가 가리키는 디렉토리의

       XML파일에 감사 레코드가 기록됩니다.

    •  V$XML_AUDIT_TRAIL 뷰를 사용하면 이 디렉토리의 모든 XML 파일을 볼 수 있습니다.

    •  감사 옵션 포커스에 따라 Audit Trail이 매우 빠르고 크게 확장될 수 있습니다.

    •  잘못 유지 관리하면 Audit trail이 너무 많은 레코드를 생성하여 시스템 성능에 영향을 미칠 수 있습니다.

    •  감사 오버헤드는 생성되는 레코드 수에 직접적으로 관련되어 있습니다.

VIII. 기본 감사

    •  Oracle Database 11g에서 감사가 활성화된 경우 보안에 매우 중요한 명령문 및 특정 권한이 기본적으로 감사됩니다.

    •  성공 및 Failure 시 액세스를 기준으로 모든 유저에 대해 감사됩니다.

IX. 값 기준 감사

    •  데이터베이스 감사는 감사된 객체에서 삽입, 갱신 및 삭제가 발생했다는 사실을 기록하지만 이렇게 변경된 실제 값을

       캡처하지는 않습니다.

    •  데이터베이스 감사 기능을 확장하기 위해 값 기준 감사는 데이터베이스 트리거를 활용하여 변경된 값을 캡처합니다.

    •  유저가 적절한 트리거를 연결하여 테이블에서 데이터를 삽입, 갱신 또는 삭제하려면 트리거는 백그라운드에서 감사 정보를

       포함하도록 설계된 테이블에 감사 정보를 복사합니다.

    •  값 기준 감사는 삽입, 갱신 또는 삭제 작업이 발생할 때마다 감사 트리거 코드를 실행해야 하므로 표준 데이터베이스 감사에

        비해 성능이 저하되는 경향이 있습니다.

    •  값 기준 감사는 표준 데이터베이스 감사를 캡처한 정보가 불충분할 때만 사용해야 합니다.

    •  값 기준 감사는 유저 또는 Third-party 코드에 의해 구현됩니다.

    •  오라클 데이터베이스는 값 기준 감사 시스템을 작성할 수 있도록 하는 PL/SQL 생성자를 제공합니다.

    •  값 기준 감사의 핵심 요소는 감사 정보를 캡처하기 위해서 생성되는 단순한 PL/SQL 트리거인 감사 트리거입니다.

    •  표준 데이터베이스 감사를 통해 데이터를 충분히 수집할 수 없는 경우에도 데이터베이스 트리거를 사용하여 유저 연결 정보를

       캡처할 수 있습니다. 

    •  관리자는 로그인 트리거를 사용하여 데이터베이스에 연결 중이 유저를 식별하는 데이터를 캡처할 수 있습니다.

X. SYSDBA 감사

    •  SYSDBA 및 SYSOPER 유저는 데이터베이스 시작 및 종료 권한을 가지고 있습니다.

    •  두 유저는 데이터베이스가 닫혀 있는 동안 데이터베이스의 내용을 변경할 수 있으므로 이 권한에 대한 Audit Trail은

       데이터베이스 부에 저장해야 합니다.

    •  오라클 데이터베이스는 SYSDBA 및 SYSOPER 유저에 의한 로그인 이벤트를 자동으로 캡처합니다.

    •  권한 여부에 관계없이 SYSDBA 및 SYSOPER 작업을 추적할 수 있지만 OS Audit Trail을 검토하는 경우에만 유용합니다.

    •  오라클 데이터베이스는 항상 권한이 있는 유저의 로그인 이벤트를 캡처합니다.

    •   다른 작업은 DBA  감사를 명시적으로 활성화한 경우에만 캡처됩니다.

    •  SYSDBA 및 SYSOPER 유저에 대한 감사는 다음 초기화 파라미터를 설정하여 활성화할 수 있습니다.

    •  SYS 작업이 감사되는 경우 AUDIT_FILE_DEST 초기화 파라미터는 감사 레코드의 저장 영역 위치를 제어합니다.

XI. Fine-Grained Auditing

    •  데이터베이스 감사는 작업이 발생했다는 사실은 기록하지만 이 작업을 발생했다는 사실은 기록하지만 이 작업을 발생시킨

       명령문에 대한 정보는 캡처하지 않습니다.

    •  FGA는 이러한 기능을 확장한 것으로 데이터를 query 또는 조작하는 실제 SQL 문을 캡처할 수 있습니다.

    •  FGA는 표준 또는 값 기준 데이터베이스 감사보다 좁은 범위에서 감사를 수행하도록 제한할 수 있습니다.

    •  FGA 옵션을 사용하면 테이블 또는 뷰 내에 있는 개별 열을 중심적으로 감사할 수 있으며 특정 관리자가 정의한 사양을

      만족시키는 경우 감사를 캡처하도록 조건을 지정할 수도 있습니다.

    •   두 개 이상의 관련된 열이 FGA 정책에 지원됩니다.

    •  기본적으로 SQL 문에 표시된 열은 감사됩니다.

    •  관련된 열 중에서 임의의 열 또는 모든 열이 명령문에서 사용되는지 여부에 따라 감사하도록 DBMS_FGA.ALL_COLUMNS

       및 DBMS_FGA.ANY_COLUMNS가 제공됩니다.

    •  DBMS_FGA PL/SQL 패키지를 사용하여 대상 테이블 또는 뷰에 감사 정책을 생성합니다.

    •  query 블록에서 반환된 행이 감사된 열 및 지정된 감사조건과 일치하면 감사 이벤트는 감사 레코드를 생성하고 이를

        Audit Trail에 저장합니다.

    •   선택적으로 감사 이벤트로 프로시저를 실행할 수 있습니다.

    •  FGA는 자동으로 감사를 명령문 레벨로 제한합니다.

    • 수천 개의 행을 반환하는 Select 문의 경우에도 감사 레코드는 하나만 생성합니다.

XII. FGA 정책

    • DBMS_FGA.ADD_POLICY 프로시저를 사용하여 Fine-Grained Auditing 정책을 생성하는 방법으로 다음 인수를

      받아들입니다. 

1. 정책 이름

    • FGA 정책을 생성하는 경우 정책마다 이름을 지정합니다.

    • policy_name 인수를 사용하여 정책의 이름을 지정합니다.

2. 감사 조건

    • 감사 조건은 감사 이벤트의 실행 시기를 정의하는 SQL 술어입니다.

    • audit_condition 조건 인수를 사용하여 감사합니다.

3. 감사 열

    • 감사 열은 감사할 데이터를 정의합니다.

    • 감사 이벤트는 이 열이 select 문에 포함되거나 감사 조건을 선택할 수 있는 경우 발생합니다.

    • audit_column 인수를 사용하여 열을 감사합니다.

    • audit_column 인수는 선택적으로 지정하고, 지정하지 않으면 audit_condition인수로 감사 이벤트 발생 여부를

      결정합니다.

4. 객체

    • 객체는 감사될 테이블 또는 뷰이며 다음의 두 인수로 전달됩니다.

        ৹ object_schema ( 객체를 포함하는 스키마 )

        ৹ object_name ( 객체 이름 )

5. 처리기

    • 선택적 이벤트 처리기는 감사 중 추가로 수행해야 하는 작업을 정의하는 PL/SQL 프로시저입니다.

    • 이벤트 처리가 정의되지 않은 경우에는 감사 이벤트 항목이 Audit Trail에 삽입됩니다.

    • 감사 이벤트 처리가 정의된 경우에는 감사 항복이 Audit Trail에 삽입되고 감사 이벤트 처리기가 실행됩니다.

    • 감사 이벤트 항목에는 이벤트를 발생시킨 FGA 정책, SQL 문을 실행하는 유저, SQL문 및 해당 바인드 변수가 있습니다.

    • 이벤트 처리기는 다음 두 인수로 전달됩니다.

        ৹ handler_schema ( PL/SQL 프로그램 단위를 포함하는 스키마 )

        ৹ handler_module ( PL/SQL프로그램 단위의 이름 )

    • 기본적으로 Audit Trail 은 항상 LOG의 SQL 텍스트와 SQL 바인드 정보를 기록합니다.

6. 상태

    • FGA 정책의 활성화 여부를 표시합니다.

    • enable 인수로 정책을 활성화합니다.

XIII. FGA 지침

    • SELECT문의 경우 FGA는 실제 행이 아니라 명령문 자체를 캡처합니다.

    • FGA가 Flashback Query와 결합된 경우 해당 시점에서 행이 존재하기 때문에 행이 재구성될 수 있습니다.

XIV. 감사된 DML 문: 고려 사항

    • 조작 중인 데이터 행이 정책 술어 조건을 충족하는 경우 DML 문에 대해 정의된 FGA 정책을 사용하여 DML 문이 감사됩니다.

    • 관련 열이 정책 정의에도 지정되어 있으면 데이터가 FGA 정책 술어를 충족하고 명령문이 정의된 관련 열을 참조하는 경우에 

      명령문이 감사됩니다.

    • DELETE 문의 경우 테이블의 모든 열이 DELETE 문에 의해 처리되기 때문에 정책 정의 시 관련된 열을 지정하는 것은

      바람직하지 않습니다.

    • DELETE 문은 관련된 열에 관계없이 항상 감사됩니다.

    • MERGE문은 FGA에 의해 지원됩니다.

    • 기본 insert, update 및 delete 문은 정의된 insert, update 또는 delete FGA 정책을 충족하는 경우에 감사됩니다.

 

 

'ORACLE > 관리' 카테고리의 다른 글

데이터베이스 유지 관리  (0) 2023.10.04
언두 데이터 관리  (1) 2023.10.02
데이터 동시성 관리  (0) 2023.09.22
유저 보안 관리  (0) 2023.09.21
데이터베이스 저장 영역 구조 관리  (0) 2023.09.19