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 |