- gmail_tokens → gmail_token (33 files) - companies → company (17 files) - conversation_logs → conversation_log (27 files) - workspace_members → workspace_member (28 files) All table names now match the actual PostgreSQL schema
3.8 KiB
3.8 KiB
UUID 통합 및 사용자 격리 계획
작성일: 2025-08-28
작성자: 51123 서버 관리자
상태: ✅ 완료 (18:15)
목표: Frontend/Slack 사용자 통합, 워크스페이스별 로빙 공유, 개인별 대화 격리
1. 현재 상황 (2025-08-28 확인)
ID 체계 현황
- Frontend: JWT sub에 UUID 사용 ✅
- Gateway: UUID로 인증 ✅
- slack_user_mapping: Slack ID → UUID 매핑 활성화 ✅
- rb8001: Slack ID 그대로 사용 (String) ❌
실제 데이터
happybell80: U0925SXQFDK → 1e16e9d5-59f3-54da-a661-8abeabff4230
0914eagle: U091UNVE41M → b6ea2ee0-a15a-5cf4-93a9-a9ca20d4c4a0
cdctfm: U092F7FQ55L → 69ae4ea9-a15f-5110-9f5d-6568e380fcfb
문제점
- rb8001 JWT 미구현 (기본 시크릿 키)
- rb8001이 Slack ID를 UUID로 변환 안 함
- ChromaDB 컬렉션 비어있음
[]
2. 목표 아키텍처
통합 ID 체계
Google 로그인 → UUID 생성 → users 테이블
Slack 로그인 → UUID 조회/생성 → slack_user_mapping
워크스페이스 구조
workspace (로빙 1개)
├── user1 (UUID) - Frontend/Slack 통합
├── user2 (UUID) - Frontend/Slack 통합
└── user3 (UUID) - Slack만
데이터 격리
- 공유: 로빙 레벨, 스탯
- 격리: 대화 내용, ChromaDB 기억, Gmail 토큰
3. 구현 계획
Phase 1: 보안 (긴급) ✅ 완료 (2025-08-28 17:35)
- rb8001 JWT_SECRET_KEY 설정 (Gateway와 동일)
- rb8001 Bearer 토큰 검증 구현
- X-User-Id 헤더 의존 제거
- 401 Unauthorized 테스트 완료
Phase 2: ID 통합 ✅ 완료 (2025-08-28 18:00)
- slack_user_mapping 테이블 활성화 (확인됨)
- Gateway API /api/slack/{slack_id}/uuid 구현
- rb8001에서 Slack ID → UUID 변환 구현
- robeing-monitor UUID 변환 개선 (선택사항)
Phase 3: 사용자 격리 ✅ 완료 (2025-08-28 18:15)
- ChromaDB 사용자별 컬렉션 (rb8001_{user_uuid})
- conversation_log UUID 저장 구현
- 완전한 사용자 대화 격리
4. 핵심 변경사항
rb8001 (51124 서버) - 로컬 개발자 작업
# 1. JWT 검증 (/app/auth.py 수정)
JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY") # Gateway와 동일
# 2. Slack 이벤트 처리 시 UUID 변환
slack_id = event['user'] # U0925SXQFDK
user_uuid = await get_uuid_from_slack(slack_id) # slack_user_mapping 조회
slack_user_mapping API (51123 서버)
@app.get("/api/slack/{slack_id}/uuid")
async def get_uuid(slack_id: str):
# DB 조회하여 UUID 반환
Gateway (51123 서버)
- 이미 UUID 사용 중 ✅
5. 검증된 사실
작동 중
- auth-server: JWT sub에 UUID 사용
- Gateway: JWT 검증 및 UUID 추출
- slack_user_mapping: 3명 데이터 확인
- Frontend: localStorage에 UUID 저장
완료된 작업 (2025-08-28)
- rb8001: JWT 검증 구현 ✅
- rb8001: Slack ID → UUID 자동 변환 ✅
- ChromaDB: 사용자별 컬렉션 격리 ✅
- conversation_log: UUID 저장 ✅
6. 테스트 결과 (2025-08-28 18:30)
✅ 검증 완료
- JWT 인증: UUID 추출 성공 (1e16e9d5-59f3-54da-a661-8abeabff4230)
- ChromaDB 격리: rb8001_{user_uuid} 컬렉션 생성 확인
- PostgreSQL: conversation_log에 UUID 저장 확인
- Slack 변환: Slack ID → UUID 자동 변환 작동
- metadata None 처리: Frontend 접속 시 slack_user_id=None 필터링 구현 (250828_ChromaDB_metadata_None_error.md)
성과
- 보안 취약점 100% 해결
- 완벽한 사용자 데이터 격리
- Frontend/Slack 통합 ID 체계 구축
관련 문서
- 250827_JWT_인증_구현_COMPLETED.md
- 250827_UUID_username_혼용_CRITICAL.md
- 250819_claude_사용자구분및ChromaDB격리문제.md