민감한 데이터에 대한 액세스를 관리하기 위해 인증 및 액세스 제어 메커니즘을 사용하여 데이터 액세스에 대한 규칙 및 제어를 설정할 수 있습니다. 그러나 알 수 없거나 허용되지 않는 동작을 방지하고 발견하기 위해 Db2® 감사 기능을 사용하여 데이터 액세스를 모니터할 수 있습니다.
원하지 않는 데이터 액세스 및 후속 분석을 성공적으로 모니터링하면 데이터 액세스 제어가 향상되며, 궁극적으로 데이터에 대해 악의적이거나 부주의한 무단 액세스를 방지할 수 있습니다. 시스템 관리 조치를 포함하여 애플리케이션 및 각 사용자 액세스의 모니터링은 사용자 데이터베이스 시스템에서의 활동의 실행기록 레코드를 제공할 수 있습니다.
- 감사(AUDIT)
- 감사 설정이 변경될 때 또는 감사 로그가 액세스될 때 레코드를 생성합니다.
- 권한 확인(CHECKING)
- Db2 데이터베이스 오브젝트 또는 기능에 액세스하거나 조작하려는 시도의 권한 부여 검사 중에 레코드를 생성합니다.
- 오브젝트 유지보수(OBJMAINT)
- 데이터 오브젝트를 작성 또는 삭제할 때 또는 특정 오브젝트를 변경하는 경우 레코드를 생성합니다.
- 보안 유지 관리(SECMAINT)
- 다음 조건에 대한 레코드를 생성합니다.
- 오브젝트 특권 또는 데이터베이스 권한을 부여하거나 취소합니다.
- 보안 레이블 또는 면제를 부여하거나 취소합니다.
- 그룹 권한 부여, 역할 권한 부여 또는 LBAC 보안 정책의 속성 대체 또는 제한
- SETSESSIONUSER 특권을 부여하거나 취소합니다.
- SYSADM_GROUP, SYSCTRL_GROUP, SYSMAINT_GROUP 또는 SYSMON_GROUP 구성 매개변수를 수정하는 경우.
- 시스템 관리(SYSADMIN)
- SYSADM, SYSMAINT 또는 SYSCTRL 권한이 필요한 조작이 수행될 때 레코드를 생성합니다.
- 사용자 유효성 검증(VALIDATE)
- 사용자를 인증하거나 시스템 보안 정보를 검색할 때 레코드를 생성합니다.
- Operation Context(CONTEXT)
- 데이터베이스 조작이 수행될 때 조작 컨텍스트를 표시하기 위해 레코드를 생성합니다. 이 범주를 사용하면 감사 로그 파일을 더 잘 해석할 수 있습니다. 로그의 이벤트 상관자 필드를 사용할 때, 이벤트 그룹은 다시 하나의 데이터베이스 조작에 연관될 수 있습니다. 예를 들어, 동적 쿼리에 대한 쿼리 명령문, 정적 쿼리를 위한 패키지 ID 또는 CONNECT와 같이 수행되는 조작 유형의 표시기는 감사 결과를 분석할 때 필요한 컨텍스트를 제공할 수 있습니다.
- 실행(EXECUTE)
- SQL문 실행 중 레코드를 생성합니다.
나열된 범주에 대해 실패 또는 성공 중 하나를 감사하거나 둘 다 감사할 수 있습니다.
데이터베이스 서버에 대한 조작을 수행하면 여러 개의 레코드가 생성될 수 있습니다. 감사 로그에 생성되는 실제 레코드 수는 감사 기능 구성에 지정된 기록할 이벤트 범주 수에 따라 달라집니다. 또한 성공, 실패 또는 둘 다 감사되는지 여부에 따라 다릅니다. 감사할 이벤트를 선택하는 것이 중요합니다.
이 기능에서 생성된 레코드는 각 테이블이 각 카테고리에 해당하는 AUDIT 테이블 세트에서 볼 수 있습니다. 이러한 레코드의 분석은 시스템 오용을 식별할 수 있는 사용 패턴을 표시할 수 있습니다. 오용이 식별되면 시스템 오용을 줄이거나 제거하기 위해 조치를 취할 수 있습니다.
감사 기능은 데이터베이스 레벨에서 감사하는 기능을 제공합니다. 관리자 그룹의 모든 멤버는 이러한 감사 정보가 수집되는 시기(예: 권한 부여 ID, 데이터베이스 권한, 트러스트된 컨텍스트 또는 특정 테이블)를 제어하도록 감사 정책을 구성할 수 있습니다.
빠른 시작
- AUDIT_ALL은 배치 중에 구성되는 사전정의된 정책입니다. 이 정책은 감사 레코드의 모든 카테고리에 대한 모든 성공 및 실패를 감사합니다. 사용자 요구에 맞는 사용자 정의 정책을 작성하는 것이 좋습니다.
- AUDIT_UPDATE는 감사 레코드를 추출하여 AUDIT.* 테이블로 로드하는 사전정의된 프로시저입니다. tables.
- AUDIT문에서는 사용자가 SECADM 권한을 가져야 합니다. AUDIT.* 테이블의 데이터를 보기 위해 SELECT 권한이 부여된 사용자는 테이블에 액세스할 수 있습니다.
- AUDIT가 각 역할에 대한 서비스의 모든 이벤트를 캡처하도록 함
AUDIT ROLE DV_ADMIN USING POLICY AUDIT_ALL; AUDIT ROLE DV_ENGINEER USING POLICY AUDIT_ALL; AUDIT ROLE DV_STEWARD USING POLICY AUDIT_ALL; AUDIT ROLE DV_WORKER USING POLICY AUDIT_ALL;
- 스케줄된 감사 레코드를 감사 테이블로 15분마다 가져오도록 스케줄된 감사 업데이트 태스크를 작성하려면(업데이트 사이의 최소 간격)
CALL SYSPROC.ADMIN_TASK_ADD( 'AUDIT_UPDATE', NULL, NULL, NULL, '*/15 * * * *', 'AUDIT', 'UPDATE', NULL, NULL, 'Periodically update to audit tables' );
- 8개의 감사 이벤트 카테고리에서 감사 레코드를 보려면 다음을 수행하십시오.
select * from AUDIT.AUDIT;
select * from AUDIT.CHECKING;
select * from AUDIT.CONTEXT;
select * from AUDIT.EXCUTE;
select * from AUDIT.OBJMAINT;
select * from AUDIT.SECMAINT;
select * from AUDIT.SYSADMIN;
select * from AUDIT.VALIDATE;
자세한 정보는 감사 정책의 내용을 참조하십시오.
감사 정책 작성
CREATE AUDIT POLICY policy_name CATEGORIES category or ALL STATUS status ERROR TYPE NORMAL;
자세한 정보는 CREATE AUDIT POLICY 문의 내용을 참조하십시오.
- 감사 규정 이름
- 이름이 고유하고 해당 용도를 쉽게 식별할 수 있는지 확인하십시오(예:
AUDIT_SOC2_COMPLIANCE
또는AUDIT_LOGIN_ONLY
). 데이터베이스의 내부 시스템 이름에 예약되어 있으므로SYS
(으)로 이름을 시작하지 마십시오. - 감사할 카테고리
- 정책은 감사할 카테고리를 판별합니다. 이 정책을 다른 데이터베이스 오브젝트에 적용하여 해당 오브젝트 사용을 감사하는 방법을 판별할 수 있습니다. 감사에는 사용 가능한 카테고리가 8개 있습니다. 구성된 카테고리가 많을수록 더 많은 정보가 감사되고 계산 공간을 차지하는 감사 버퍼에 누적됩니다. 사용자의 목적에 필요한 사항을 이해하는 것은 시스템의 계산 공간을 과부하하는 것을 방지하는 데 중요합니다. 요약은 각 사용 가능한 카테고리를 설명합니다.
ALL
이(가) 카테고리 옵션으로 지정된 경우 다른 카테고리를 지정할 수 없습니다.대부분의 보안 표준을 준수하기 위해 다음 목록에서 권장되는 카테고리는 액세스 제어, 인증 및 권한 부여된 액세스 모니터링을 처리합니다. 이러한 카테고리를 사용하여 정책을 구성하면 보안을 유지하는 동안 최소한의 오버헤드가 발생합니다.EXECUTE WITHOUT DATA
- 액세스 제어VALIDATE
- 인증SECMAINT
- 권한 부여된 액세스 모니터링
또한 각 카테고리에 대해 성공 및 실패 시나리오를 모두 감사해야 하며 오류 유형은 SQL 코드 오류만 로그해야 합니다.STATUS BOTH
ERROR TYPE NORMAL
사용자 정의 감사 정책 구성
사용자 정의된 감사 정책을 구성하여 인증 요청을 캡처하고 SQL 명령을 성공적으로 실행하고 이를 사용으로 설정할 수 있습니다.
CREATE AUDIT POLICY AUDIT_VALIDATE_EXECUTE CATEGORIES VALIDATE STATUS BOTH, EXECUTE STATUS SUCCESS ERROR TYPE NORMAL;
- 감사할 데이터베이스 오브젝트
- 전체 데이터베이스를 감사하면 계산 공간 과부하가 발생합니다. 권장사항은 정책을 적용할 테이블 및 연관된 구체화된 쿼리 테이블(MQT)을 식별하는 것입니다.주: 테이블에 적용되는 감사 규정은 해당 테이블을 기반으로 하는 구체화된 쿼리 테이블 (MQT) 에 적용되지 않습니다. 감사 정책을 테이블과 연관시키는 경우 해당 정책을 해당 테이블을 기반으로 하는 임의의 MQT와 연관시키는 것이 권장됩니다. 컴파일러는 SQL문이 기본 테이블을 참조한다고 해도 MQT를 자동으로 사용할 수 있습니다. 그러나, 기본 테이블에 사용 중인 감사 정책은 여전히 효력이 있습니다.
다른 권장 구성은 그룹 또는 역할에 정책을 적용하는 것입니다. 이 구성을 사용하여 예기치 않은 조치를 수행하는 그룹 및 역할의 사용자를 모니터할 수 있습니다. 전체 데이터베이스에 정책을 적용하도록 선택하는 경우, 정책이 모든 카테고리의 레코드를 보존하지 않는지 확인하십시오.
- 테이블에 대한 감사 정책 사용
AUDIT TABLE CUSTOMTABLE USING POLICY AUDIT_VALIDATE_EXECUTE;
또한 인증 요청 (성공 및 실패 모두) 만 캡처하고 이를 사용하도록 사용자 정의된 감사 정책을 구성할 수 있습니다.
CREATE AUDIT POLICY AUDIT_VALIDATE_ONLY CATEGORIES VALIDATE STATUS BOTH ERROR TYPE NORMAL;
작성된 모든 감사 정책 보기
select * from SYSCAT.AUDITPOLICIES;
AUDITPOLICYNAME AUDITPOLICYID CREATE_TIME ALTER_TIME AUDITSTATUS CONTEXTSTATUS VALIDATESTATUS CHECKINGSTATUS SECMAINTSTATUS OBJMAINTSTATUS SYSADMINSTATUS EXECUTESTATUS EXECUTEWITHDATA ERRORTYPE REMARKS
---------------------------- ------------- -------------------------- -------------------------- ----------- ------------- -------------- -------------- -------------- -------------- -------------- ------------- --------------- --------- -------
AUDIT_VALIDATE_ONLY 108 2018-07-23-21.00.57.024758 2018-07-23-21.00.57.024758 N N B N N N N N N N -
AUDIT_ALL 106 2018-07-23-20.51.18.017062 2018-07-23-20.51.18.017062 B B B B B B B B N N -
2 record(s) selected.
현재 사용 중인 감사 정책을 확인하십시오.
select * from SYSCAT.AUDITUSE;
AUDITPOLICYNAME AUDITPOLICYID OBJECTTYPE SUBOBJECTTYPE OBJECTSCHEMA OBJECTNAME AUDITEXCEPTIONENABLED
------------------------- ------------- ---------- ------------- ------------- ----------------- ---------------------
AUDIT_VALIDATE_ONLY 108 - CURRENT SERVER N
1 record(s) selected.
데이터베이스 엔티티에 대한 감사 중지
데이터베이스 엔티티에서 감사를 중지하려면 정책을 제거해야 합니다.
AUDIT database_entity REMOVE POLICY;
자세한 정보는 AUDIT 문의 내용을 참조하십시오.
그룹에 대한 감사 중지
AUDIT GROUP BLUUSERS REMOVE POLICY;
스케줄된 태스크 작성
자세한 정보는 ADMIN_TASK_ADD 프로시저-새 태스크 스케줄의 내용을 참조하십시오.
- 스케줄된 감사 레코드를 20분마다 감사 테이블로 가져오기 위해 스케줄된 감사 업데이트 태스크를 작성하려면 다음을 수행하십시오.
CALL SYSPROC.ADMIN_TASK_ADD( 'AUDIT_UPDATE', NULL, NULL, NULL, '*/20 * * * *', 'AUDIT', 'UPDATE', NULL, NULL, 'Periodically update to audit tables' );
- 스케줄 빈도
- 감사 로그를 아카이브하는 사전 정의된 태스크를 실행하는 빈도는 이 테스트의 범위를 벗어났지만 실제 고객 상황에서 수집되는 권장사항을 참고할 가치가 있습니다. 데이터베이스가 더 큰 경우 권장사항은 매일 15분 동안 아카이브 태스크를 실행하는 것입니다. 이로 인해 예기치 않은 성능 문제가 발생하는 경우 데이터베이스가 복구될 수 있습니다. 정책이 권장되는 대로 구성된 경우 감사 버퍼는 해당 시간 프레임 내에 워크로드를 포함할 수 있어야 합니다. 성능 테스트가 표시되면, 복잡한 쿼리가 감사 레코드의 아카이브와 동시에 실행되는 경우 성능 문제가 예상됩니다.
스케줄된 태스크 수정하기
자세한 정보는 ADMIN_TASK_UPDATE 프로시저 - 기존 태스크 업데이트의 내용을 참조하십시오.
- 스케줄된 감사 업데이트 태스크를 수정하여 매 20분마다 최신 감사 레코드를 감사 테이블로 가져오십시오.
CALL SYSPROC.ADMIN_TASK_UPDATE( 'AUDIT_UPDATE', NULL, NULL, NULL, '*/20 * * * *', 'Periodically update to audit tables every 20 minutes' );
- 스케줄된 감사 갱신 태스크를 제거하려면 다음을 수행하십시오.
CALL SYSPROC.ADMIN_TASK_REMOVE( 'AUDIT_UPDATE', NULL );
스케줄된 감사 업데이트 태스크의 상태 모니터
select * from SYSTOOLS.ADMIN_TASK_STATUS;
NAME TASKID STATUS AGENT_ID INVOCATION BEGIN_TIME END_TIME SQLCODE SQLSTATE SQLERRMC RC
------------- ------- ---------- ------------ ----------- -------------------------- -------------------------- -------- -------- -------- -----
AUDIT_UPDATE 1 COMPLETE 16433 1 2018-07-23-21.50.00.135211 2018-07-23-21.50.10.584127 0 x'' 0
AUDIT_UPDATE 1 RUNNING 16448 2 2018-07-23-21.55.00.608060 - - - - -
2 record(s) selected.
가장 최근의 감사 레코드를 AUDIT.* 즉시 테이블
CALL AUDIT.UPDATE();
SQL1307N 보안 감사 기능 호출 중에 오류가 발생했습니다. Reason Code: "9".
이 메시지는 마지막으로 감사 테이블에 데이터가 로드된 이후 활동이 없음을 표시합니다. 시스템 오류는 표시하지 않습니다.