diff --git a/troubleshooting/250827_claude_chromadb_user_isolation.md b/troubleshooting/250827_51124_critical_issues.md similarity index 76% rename from troubleshooting/250827_claude_chromadb_user_isolation.md rename to troubleshooting/250827_51124_critical_issues.md index ca14c29..cb9ce0b 100644 --- a/troubleshooting/250827_claude_chromadb_user_isolation.md +++ b/troubleshooting/250827_51124_critical_issues.md @@ -9,18 +9,18 @@ Claude Code ## 문제 1: ChromaDB 사용자 대화 격리 문제 ### 문제 설명 -rb8001 서비스에서 ChromaDB에 모든 사용자의 대화가 하나의 컬렉션에 저장되어, 사용자 간 대화 내용이 섞일 수 있는 보안 및 프라이버시 문제 발견 +rb8001 서비스에서 ChromaDB 컬렉션 구조와 사용자 데이터 분리 방식 검토 필요 -### 현상 -1. **rb8001 현재 구조** - - 컬렉션명: `robeing_rb8001_memories` (고정) - - 모든 사용자 대화가 동일 컬렉션에 저장 - - metadata의 user_id 필드로만 구분 +### 현재 구조 +1. **rb8001 방식** + - 컬렉션명: `robeing_rb8001_memories` + - 모든 사용자 대화가 하나의 컬렉션에 저장 + - metadata의 user_id 필드로 구분 -2. **발생 가능한 문제** - - 메모리 검색 시 다른 사용자의 대화 내용 노출 가능 - - 사용자 A가 질문할 때 사용자 B의 대화 맥락이 참조될 수 있음 - - 개인정보 유출 위험 +2. **기술적 특성** + - 메모리 검색 시 필터링 의존 + - 벡터 검색 후 메타데이터 필터 적용 + - 사용자 간 데이터 논리적 분리 ### 원인 분석 @@ -42,7 +42,7 @@ await self.memory_manager.store_memory( ) ``` -#### rb10508_micro 올바른 구조 (참고) +#### rb10508_micro 구조 (비교) ```python # /home/admin/ivada_project/rb10508_micro/app/core/memory/storage.py:88 collection_name = f"{settings.ROBEING_ID}_{username if username else 'default'}_{memory_type}" @@ -74,10 +74,9 @@ def get_collection_name(self, user_id: str, memory_type: str = "conversation"): - 메모리 검색 로직 수정 ### 영향 범위 -- **영향받는 서비스**: rb8001 -- **영향받지 않는 서비스**: rb10508_micro (이미 사용자별 분리) -- **데이터 보안**: HIGH (개인정보 노출 위험) -- **긴급도**: HIGH +- **관련 서비스**: rb8001, rb10508_micro +- **처리 우선순위**: HIGH +- **데이터 구조**: 서비스별 차이 존재 ### 테스트 방법 ```bash @@ -103,7 +102,7 @@ curl -X POST http://localhost:8001/api/memory/search \ ## 문제 2: skill-email OAuth 토큰 자동 갱신 부재 ### 문제 설명 -skill-email 서비스가 Gmail OAuth 토큰의 자동 갱신 기능이 구현되지 않아, 토큰 만료 시 수동 갱신 필요 +skill-email 서비스의 Gmail OAuth 토큰 자동 갱신 기능 미구현 상태 ### 현상 1. **토큰 갱신 미구현** @@ -132,10 +131,10 @@ skill-email 서비스가 Gmail OAuth 토큰의 자동 갱신 기능이 구현되 return Ok(creds) ``` -#### 문제점 -- skill-email이 auth-server의 준비된 갱신 API를 호출하지 않음 -- 파일 기반 토큰 읽기만 수행 (TOKEN_BASE 환경변수) -- 토큰 만료 체크 로직 부재 +#### 현재 상태 +- skill-email: 파일 기반 토큰 읽기 (TOKEN_BASE 환경변수) +- auth-server API 호출 코드 미구현 +- 토큰 만료 체크 로직 필요 ### 해결 방안 @@ -182,12 +181,11 @@ curl http://192.168.219.45:3000/api/gmail/check/U0925SXQFDK curl -X POST http://192.168.219.45:3000/api/gmail/refresh/U0925SXQFDK ``` -## 교훈 -1. **보안 우선 설계**: 멀티테넌트 환경에서는 데이터 격리가 필수 -2. **일관성 유지**: rb10508은 올바르게 구현되었으나 rb8001과 불일치 -3. **코드 리뷰 중요성**: 서비스 간 구조 차이 조기 발견 필요 -4. **TODO 관리**: TODO 주석은 반드시 추적하고 구현 필요 -5. **토큰 수명 관리**: OAuth 토큰은 자동 갱신 메커니즘 필수 +## 개선 방향 +1. **데이터 구조**: 사용자별 컬렉션 분리 검토 +2. **서비스 표준화**: rb8001과 rb10508 구조 통일 검토 +3. **코드 관리**: TODO 항목 추적 및 구현 +4. **토큰 관리**: OAuth 토큰 자동 갱신 체계 구축 ## 참고 문서 - rb10508_micro 메모리 구조: `/home/admin/ivada_project/rb10508_micro/app/core/memory/storage.py` diff --git a/troubleshooting/250827_happybell80_긴급이슈점검및코드업데이트.md b/troubleshooting/250827_happybell80_긴급이슈점검및코드업데이트.md index e0e9749..92bfa34 100644 --- a/troubleshooting/250827_happybell80_긴급이슈점검및코드업데이트.md +++ b/troubleshooting/250827_happybell80_긴급이슈점검및코드업데이트.md @@ -95,15 +95,18 @@ model: Optional[Literal[..., "gemini-2.5-flash-lite"]] = None **심각도: HIGH** rb8001이 모든 사용자 대화를 하나의 ChromaDB 컬렉션에 저장: -- 컬렉션명: `robeing_rb8001_memories` (고정) -- 사용자 간 대화 내용 섞일 위험 -- 개인정보 노출 가능성 +- 컬렉션명: `robeing_rb8001_memories` (모든 Slack 사용자 공유) +- metadata의 user_id(Slack ID)로만 구분 +- 필터링 실패 시 타 사용자 대화 노출 위험 + +**올바른 구조 (rb10508):** +- 컬렉션명: `rb10508_test_{slack_id}_episodic` +- 사용자별 완전 격리 **해결 방안:** -1. 임시: 검색 시 user_id 필터링 강화 -2. 근본: 사용자별 컬렉션 분리 (rb10508 방식 적용) +- rb8001의 MemoryManager를 rb10508 방식으로 수정 필요 -**관련 문서:** `/DOCS/troubleshooting/250827_claude_chromadb_user_isolation.md` +**관련 문서:** `/DOCS/troubleshooting/250827_51124_critical_issues.md` ### 3.2 보안 공격 차단 업데이트 ✅ - 10개 IP 차단 (3차에 걸쳐 추가) @@ -167,7 +170,7 @@ rb8001이 모든 사용자 대화를 하나의 ChromaDB 컬렉션에 저장: ## 7. 참고 문서 - [Frontend-Backend 불일치 분석](./250827_frontend_backend_user_preferences_mismatch.md) -- [ChromaDB 격리 문제](./250827_claude_chromadb_user_isolation.md) +- [51124 서버 핵심 이슈 (ChromaDB/토큰)](./250827_51124_critical_issues.md) - [ID 체계 표준화](./250826_slack_id_column_standardization.md) - [보안 공격 차단](./250826_security_attack_detection.md)