본문으로 건너뛰기

Audit 도메인 모델

엔티티

AuditLog

감사 로그는 시스템 내에서 발생한 중요 이벤트를 기록하는 엔티티입니다.

속성

속성타입설명
idUUID감사 로그 고유 식별자
timestampDateTime이벤트 발생 시간
eventTypeString이벤트 유형 (예: USER_LOGIN, DATA_CHANGE)
sourceString이벤트 발생 소스 (도메인/서비스 이름)
actorActorReference이벤트를 발생시킨 주체
targetTargetReference이벤트의 대상
actionString수행된 작업 (예: CREATE, UPDATE, DELETE)
detailsMap<String, Object>이벤트 상세 정보
metadataAuditMetadata감사 관련 메타데이터
statusAuditStatus감사 로그 상태 (SUCCESS, FAILURE)

불변식

  • timestamp는 null이 될 수 없음
  • eventType은 null이 될 수 없음
  • source는 null이 될 수 없음
  • actor 또는 target 중 최소 하나는 값이 존재해야 함

AuditPolicy

감사 정책은 어떤 이벤트를 기록할지를 정의하는 규칙입니다.

속성

속성타입설명
idUUID정책 고유 식별자
nameString정책 이름
descriptionString정책 설명
eventTypesSet<String>수집할 이벤트 유형 목록
sourcesSet<String>대상 소스 목록
enabledboolean정책 활성화 여부
retentionPeriodDuration데이터 보존 기간
createdAtDateTime정책 생성 시간
updatedAtDateTime정책 수정 시간

불변식

  • name은 null이 될 수 없으며 고유해야 함
  • eventTypes는 비어있을 수 없음
  • retentionPeriod는 양수여야 함

값 객체

ActorReference

이벤트를 발생시킨 주체에 대한 참조입니다.

속성

속성타입설명
typeActorType주체 유형 (USER, SYSTEM, SERVICE)
idString주체 식별자
nameString주체 이름
attributesMap<String, String>추가 속성

TargetReference

이벤트의 영향을 받는 대상에 대한 참조입니다.

속성

속성타입설명
typeTargetType대상 유형 (USER, RESOURCE, SYSTEM)
idString대상 식별자
nameString대상 이름
resourceTypeString리소스 유형 (USER, ROLE, PERMISSION 등)
attributesMap<String, String>추가 속성

AuditMetadata

감사 로그와 관련된 메타데이터입니다.

속성

속성타입설명
correlationIdString연관 이벤트를 추적하기 위한 ID
requestIdString요청 식별자
ipAddressString이벤트 발생 IP 주소
userAgentString사용자 에이전트 정보
sessionIdString클라이언트에서 생성한 세션 식별자. JWT 기반 인증 환경에서 서버는 세션을 관리하지 않지만, 클라이언트(특히 Mobile)에서 생성한 UUID로 사용자 활동의 연속성 추적에 사용됨

집계

AuditEventAggregate

감사 이벤트를 생성하고 관리하는 집계입니다.

책임

  • 감사 이벤트 생성 및 유효성 검증
  • 감사 정책에 따른 이벤트 필터링
  • 이벤트 저장소 저장 관리

연관 엔티티

  • AuditLog (루트 엔티티)
  • AuditPolicy (참조)

도메인 서비스

AuditService

감사 로그 생성 및 조회를 위한 도메인 서비스입니다.

책임

  • 감사 이벤트 생성 및 저장
  • 감사 로그 조회 및 검색
  • 감사 정책 적용

메서드

  • createAuditLog(AuditLogRequest): AuditLog
  • queryAuditLogs(AuditLogQuery): List<AuditLog>
  • getAuditTrail(TrailCriteria): AuditTrail
  • findBySessionId(sessionId, PaginationOptions): PaginatedResponse<AuditLog>

RetentionService

감사 데이터 보존 정책을 관리하는 서비스입니다.

책임

  • 보존 기간이 만료된 데이터 정리
  • 보관 정책 적용
  • 데이터 아카이빙 관리

메서드

  • applyRetentionPolicy(PolicyId): RetentionResult
  • archiveAuditData(ArchiveRequest): ArchiveResult
  • purgeExpiredData(): PurgeResult

도메인 이벤트

AuditLogCreated

새로운 감사 로그가 생성되었을 때 발행되는 이벤트입니다.

속성

  • auditLogId: 생성된 감사 로그 ID
  • timestamp: 이벤트 발생 시간
  • eventType: 감사 이벤트 유형
  • source: 이벤트 소스

RetentionPolicyApplied

보존 정책이 적용되었을 때 발행되는 이벤트입니다.

속성

  • policyId: 적용된 정책 ID
  • appliedAt: 정책 적용 시간
  • affectedLogsCount: 영향을 받은 로그 수
  • retentionPeriod: 적용된 보존 기간

구현 정보

데이터 저장소

BigQuery 구현

Audit 도메인의 AuditLog 엔티티는 BigQuery에 저장되어 분석 및 장기 보관됩니다.

데이터셋: log
테이블: audit
위치: europe-west3 (프랑크푸르트)

스키마:

필드명BigQuery 타입모드도메인 모델 속성설명
timestampTIMESTAMPREQUIREDtimestamp이벤트 발생 시간
user_idSTRINGNULLABLEactor.id사용자 ID
actionSTRINGREQUIREDaction수행된 작업
resourceSTRINGREQUIREDtarget.id접근한 리소스
statusSTRINGREQUIREDstatus작업 상태
detailsJSONNULLABLEdetails추가 상세 정보

파티셔닝: 일별 파티셔닝 (timestamp 필드 기준)
클러스터링: user_id, action 필드 기준
보존 기간: 1년 (365일)

Terraform 관리:

  • 모듈 위치: /infrastructure/terraform/modules/bigquery
  • Terragrunt 설정: /infrastructure/terragrunt/[env]/bigquery/terragrunt.hcl

변경 이력

버전날짜작성자변경 내용
0.1.02025-03-19bok@weltcorp.com최초 작성
0.2.02025-03-28bok@weltcorp.comBigQuery 구현 정보 추가