본문으로 건너뛰기

변경 이력 (ChangeLog)

컴플라이언스 페이지 헤더 우측의 변경 이력 버튼을 누르면 우측에서 슬라이드 인 되는 사이드 패널이 열리며, /api/v1/compliance/ prefix 의 모든 mutation (POST/PUT/PATCH/DELETE) 트래픽이 시간 역순으로 표시됩니다.

설계 요약

  • 별도 ChangeLog 테이블을 두지 않습니다. AuditMiddleware 가 OpenSearch (gend-audit-* index) 로 적재한 기존 감사 로그를 그대로 재사용합니다.
  • 컴플라이언스 페이지에서는 endpoint prefix 필터 (/api/v1/compliance/) + mutation method 필터만 적용한 read-only 뷰입니다.
  • GET 호출은 의도적으로 제외 — 변경 행위만 추적하기 위함입니다.
  • 운영 추적/감사 목적이라 사용자는 read-only 권한도 별도로 부여받지 않습니다 (admin 만 호출 가능).

항목 구조

필드설명
methodHTTP 메서드 — POST (생성, 녹색), PUT/PATCH (수정, 파랑), DELETE (삭제, 빨강) 배지로 표시
timestamp호출 시각 (브라우저 로컬 시간으로 변환)
endpoint원본 path (/api/v1/compliance/assessments/{id}/run 등)
user_idKeycloak sub 또는 표시명. 매핑 누락 시
status_codeHTTP 응답 코드. 4xx/5xx 는 빨강으로 강조

페이지네이션과 필터

GET /api/v1/compliance/changelog 는 다음 쿼리 파라미터를 받습니다.

파라미터기본값설명
page11 부터 시작하는 페이지 번호
page_size50 (UI: 100)페이지 크기. 1 ~ 200
start_dateISO 8601 시작 시간 (선택)
end_dateISO 8601 종료 시간 (선택)

UI 사이드 패널은 기본적으로 최근 100건 (page_size=100) 을 로드합니다. 더 긴 범위가 필요하면 감사 로그 페이지에서 OpenSearch 원본을 조회하세요.

API 엔드포인트

MethodPathDescription
GET/api/v1/compliance/changelog컴플라이언스 mutation 이력 조회 (admin)

응답 예시:

{
"items": [
{
"timestamp": "2026-05-22T08:11:42.591Z",
"user_id": "admin",
"method": "POST",
"endpoint": "/api/v1/compliance/assessments/abc-123/run",
"status_code": 200
}
],
"total": 137,
"page": 1,
"page_size": 50
}

트러블슈팅

증상원인 / 조치
패널 본문에 OpenSearch 인증 실패 — admin 자격증명/role 점검 필요gend-api 가 OpenSearch 에 admin role 로 접속할 수 없음. opensearch-admin Secret (gend namespace) 의 username/password 확인 후 gend-api 재기동
패널 본문에 OpenSearch 연결 실패 — 변경 이력을 조회할 수 없습니다OpenSearch Pod 다운 또는 Service 미해석. kubectl get pod -n gend -l app=opensearch 로 상태 확인
변경 이력이 비어 있음해당 시간 범위에 실제 mutation 호출이 없었거나, OpenSearch index pattern 이 일치하지 않음. Audit Chain 운영 가이드 참조

관련 문서