개요
이전 글에서는 문서 메타데이터 관리 및 버전 관리 시스템 구현 작업 을 진행하였다. 변경 이력 추적, 권한 기반 문서 접근, 실시간 알림 기능까지 포함한 종합적인 문서 관리 백엔드를 완성했다. 이번 글에서는 문서 분류 및 권한 기반 접근 제어 기능(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: 카테고리 관련 APIfrontend/components/CategoryManager.tsx: 카테고리 관리 UIfrontend/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 |