1
0
forked from baron/baron-sso
Files
baron-sso/docs/data-integrity-management.md

2.5 KiB

데이터 정합성 검증 관리

개요

adminfront의 데이터 정합성 메뉴는 Baron SSO backend DB read model의 이상 징후를 super_admin 전용으로 확인하는 관리 화면입니다.

Baron SSO의 신원/권한 SoT는 Ory Stack(Kratos, Keto, Hydra)입니다. 이 기능은 SoT를 직접 수정하지 않고, backend PostgreSQL read model에서 운영자가 확인해야 할 불일치만 리포트합니다.

API

  • Method: GET
  • Path: /api/v1/admin/integrity
  • 권한: super_admin

응답은 전체 상태, 검사 시각, 요약, 섹션별 검사 결과를 포함합니다.

검사 항목

테넌트 정합성

  • duplicate_tenant_slugs: 삭제되지 않은 tenant의 LOWER(TRIM(slug)) 기준 중복을 검사합니다.
  • orphan_tenant_parents: tenants.parent_id가 존재하지 않거나 soft-deleted tenant를 참조하는지 검사합니다.

사용자 정합성

  • orphan_user_tenant_memberships: users.tenant_id가 존재하지 않거나 soft-deleted tenant를 참조하는지 검사합니다.
  • orphan_user_login_id_tenants: user_login_ids.tenant_id가 존재하지 않거나 soft-deleted tenant를 참조하는지 검사합니다.
  • orphan_user_login_id_users: user_login_ids.user_id가 존재하지 않거나 soft-deleted user를 참조하는지 검사합니다.

adminfront 동작

  • super_admin은 사이드바의 데이터 정합성 메뉴에서 리포트를 볼 수 있습니다.
  • super_admin은 adminfront 개요 화면 하단에서도 최종 검증 상태, 실패 건수, 검사 시각, 섹션별 상태 요약을 볼 수 있습니다.
  • tenant_admin 등 non-super role은 화면 접근 시 권한 없음 메시지만 봅니다.
  • 개요 화면의 전체 테넌트 수는 fetchAllTenants()로 실제 cursor pagination을 끝까지 수집한 리스트 수를 우선 사용합니다. 이로써 super가 보는 전체 테넌트 수와 리스트 기반 수치가 같은 소스에서 나오도록 맞춥니다.
  • 개요 화면은 super_admin에게 전체 사용자 수(totalUsers)도 표시합니다. 이 값은 Kratos user projection 상태의 projectedUsers 기준입니다.

운영 주의

현재 기능은 read-only 검증입니다. 자동 정리 작업은 별도 이슈와 승인된 maintenance action으로 분리해야 합니다.

이미 존재하는 orphan 사용자 소속 정리 경로는 다음과 같습니다.

  • CLI: backend/cmd/adminctl clear-orphan-user-tenant-memberships
  • SQL: scripts/clear_orphan_user_tenant_memberships.sql