RAG 기반 문서 검색 시스템 - 11(문서 분류 및 권한 기반 접근 제어 구현)

2025. 7. 23. 11:40·사이드 프로젝트

개요

이전 글에서는 문서 메타데이터 관리 및 버전 관리 시스템 구현 작업 을 진행하였다. 변경 이력 추적, 권한 기반 문서 접근, 실시간 알림 기능까지 포함한 종합적인 문서 관리 백엔드를 완성했다. 이번 글에서는 문서 분류 및 권한 기반 접근 제어 기능(RBAC: Role-Based Access Control)의 전체 구현 과정을 다룬다. 카테고리 기반 분류 시스템과 사용자 권한 매트릭스를 연계하여, 검색 및 UI 제어, 알림 시스템까지 완전한 역할 기반 접근제어를 구축했다.

문서 분류 및 권한 기반 접근제어 구현 작업흐름

1. 문서 분류 시스템

  • Category 모델 설계: 색상, 계층 구조, 생성자 정보 포함
  • 문서 다중 분류를 위한 다대다 관계 설계
  • 카테고리 API: 생성/조회/수정/비활성화
  • 프론트엔드: CategorySelect, CategoryFilter 컴포넌트 구현

2. 역할 기반 접근 제어(RBAC)

  • UserRole Enum: ADMIN / EDITOR / VIEWER 정의
  • PermissionService: can_view / can_edit / can_delete 등 권한 매트릭스 구현
  • 문서 접근 API 보호: 권한 검증 미들웨어 적용
  • 프론트엔드 UI 제어: usePermissions 훅 및 PermissionGuard 적용

3. 권한 변경 이력 및 감사 로그

  • permission_changes 테이블 및 DocumentChangeHistory 모델 설계
  • 이전/신규 값, 사유, 변경자, 변경 시각 저장
  • 자동 변경 요약: LLM 기반 변경점 설명 생성

4. 권한/카테고리 변경 알림 시스템

  • NotificationService 구현: Slack / 이메일 연동
  • ROLE_CHANGE, OWNER_CHANGE 등 이벤트 트리거 기반 전송
  • 실패 시 재시도 및 예외처리 로직 포함

5. 프론트엔드 기능

  • CategoryManager: 카테고리 CRUD UI
  • Permission UI: 문서별 권한 부여 및 변경 UI
  • 문서 목록 필터링: 카테고리별 필터링 UI + 페이징/정렬 기능
  • 권한에 따라 UI 요소 노출/비노출 처리

6. 테스트 및 통합 검증

  • 단위 테스트: 서비스 및 API 로직 단독 테스트
  • 통합 테스트: 권한과 카테고리 조합 시나리오 검증
  • E2E 테스트: 전체 권한/분류 흐름 시나리오 자동화
  • 성능 테스트: 대용량 문서 필터링 처리 성능 확인

결과 요약

주요 성과

  • 역할 기반 문서 접근제어 완전 구현
  • 카테고리 기반 문서 분류 및 검색 시스템 완성
  • 권한 변경 시 실시간 반영 및 알림 시스템 적용
  • 통합 E2E 테스트 통해 전체 시나리오 검증 완료

기술적 지표

  • API 응답 시간: 권한 검증 기준 50ms 이하
  • 테스트 커버리지: 권한/분류 관련 코드 95% 이상
  • UI 반응 속도: 권한 변경 후 반영까지 200ms 이내
  • 데이터 정확성: 권한-카테고리 연동 100% 일관성 유지

파일 구조 요약

  • backend/models/category.py: 카테고리 및 권한 모델 정의
  • backend/services/permission_service.py: 접근 제어 로직
  • backend/services/notification_service.py: 알림 발송 로직
  • backend/api/categories.py: 카테고리 관련 API
  • frontend/components/CategoryManager.tsx: 카테고리 관리 UI
  • frontend/hooks/usePermissions.ts: 권한 계산 훅

용어 정리

용어 설명
RBAC Role-Based Access Control, 사용자 역할에 따라 접근 권한을 제한하는 방식
Category 문서를 주제별로 분류하기 위한 메타데이터 단위
PermissionService 문서 접근 가능 여부를 판단하는 서비스 로직
PermissionGuard 권한에 따라 프론트엔드 UI 노출 여부를 제어하는 컴포넌트
NotificationService 권한 변경 등 이벤트 발생 시 알림을 전송하는 백엔드 서비스
OWNER_CHANGE 문서 업로더가 변경될 때 발생하는 알림 이벤트 타입
권한 변경 이력 누가 어떤 권한을 언제 어떻게 바꾸었는지에 대한 감사 로그

마무리

이번 글에서는 RAG 기반 문서 검색 시스템의 문서 분류 및 권한 기반 접근 제어 기능의 전체 구현 과정을 정리했다. 백엔드에서 카테고리 및 RBAC 시스템을 통해 안정적인 권한 검증 구조를 마련했다. 다음 글에서는 OCR 기반 문서 자동 텍스트 인식 및 저장 기능 구현 내용을 다룰 예정이다.

'사이드 프로젝트' 카테고리의 다른 글

RAG 기반 문서 검색 시스템 - 13(복합 질문 및 문서 요약 기능 구현)  (1) 2025.07.23
RAG 기반 문서 검색 시스템 - 12(OCR 기반 문서 자동 텍스트 인식 및 저장 기능 구현)  (0) 2025.07.23
RAG 기반 문서 검색 시스템 - 10(문서 메타데이터 및 버전 관리 기능 구현)  (1) 2025.07.23
RAG 기반 문서 검색 시스템 - 9(근거 문장 UI 콜랩스/확장 구현)  (3) 2025.07.22
RAG 기반 문서 검색 시스템 - 8(샘플 문서 초기 탑재 작업)  (2) 2025.07.21
'사이드 프로젝트' 카테고리의 다른 글
  • RAG 기반 문서 검색 시스템 - 13(복합 질문 및 문서 요약 기능 구현)
  • RAG 기반 문서 검색 시스템 - 12(OCR 기반 문서 자동 텍스트 인식 및 저장 기능 구현)
  • RAG 기반 문서 검색 시스템 - 10(문서 메타데이터 및 버전 관리 기능 구현)
  • RAG 기반 문서 검색 시스템 - 9(근거 문장 UI 콜랩스/확장 구현)
moo-n
moo-n
개발관련 기록 블로그
  • moo-n
    moo-n 님의 블로그
    moo-n
  • 전체
    오늘
    어제
    • 분류 전체보기 (48)
      • Cursor AI 교육관련 (4)
      • Cursor AI 사용하기(JAVA) (3)
      • Cursor AI 사용하기(C#) (1)
      • MCP 사용하기 (2)
      • IT 관련 정리 (15)
      • 사이드 프로젝트 (15)
      • 장애대응 매뉴얼 (3)
      • 업무관련 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    nextjs
    청킹
    Chunk
    AI
    Agent
    C#
    OCR
    임베딩
    notion
    방화벽
    notion mcp
    LLM
    vb6.0
    Chunking
    ClaudeCode
    에이전트
    oracleClient
    SVN
    Cursor
    바이브코딩
    Rag
    Claude
    mcp
    claude code
    포트포워딩
    벡터db
    conTeXt
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
moo-n
RAG 기반 문서 검색 시스템 - 11(문서 분류 및 권한 기반 접근 제어 구현)
상단으로

티스토리툴바