보안: JWT_SECRET_KEY 노출 제거 및 인증 상태 업데이트

- 250827_JWT_인증_구현_COMPLETED.md: JWT_SECRET_KEY 값 [REDACTED]로 변경
- 250828_slack_auth_integration_completed.md: 보안 키 노출 제거
- 250827_JWT_인증_보안_취약점_CRITICAL.md: 해결 상태 업데이트
  - rb8001, skill-email JWT 인증 구현 완료
  - rb10508_micro는 폐기 예정으로 표시
  - Gateway /api/stats JWT 검증 추가 완료

보안 개선사항:
- 프로덕션 키 노출 제거
- 대부분의 취약점 해결됨 표시
This commit is contained in:
happybell80 2025-08-28 18:38:21 +09:00
parent 09fab3d36c
commit dc7d2a5f30
3 changed files with 21 additions and 21 deletions

View File

@ -32,7 +32,7 @@
```python ```python
# /home/admin/auth-server/app/core/auth.py # /home/admin/auth-server/app/core/auth.py
# ✅ JWT 생성/검증 코드 구현됨 # ✅ JWT 생성/검증 코드 구현됨
JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY") # 실제: 9cc562b629... JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY") # [REDACTED]
# /home/admin/auth-server/app/providers/gmail.py:208 # /home/admin/auth-server/app/providers/gmail.py:208
jwt_token = create_access_token(data={ jwt_token = create_access_token(data={
@ -44,13 +44,13 @@ jwt_token = create_access_token(data={
**현재 상태**: **현재 상태**:
- ✅ JWT 토큰 발급 구현됨 (Gmail OAuth 후) - ✅ JWT 토큰 발급 구현됨 (Gmail OAuth 후)
- ✅ JWT_SECRET_KEY 설정됨: `9cc562b629...` - ✅ JWT_SECRET_KEY 설정됨: `[REDACTED]`
- ❌ 하지만 백엔드 서비스들이 이 토큰을 검증하지 않음 - ❌ 하지만 백엔드 서비스들이 이 토큰을 검증하지 않음
### 2.2 robeing-gateway (51123:8100) - 부분 구현 ### 2.2 robeing-gateway (51123:8100) - 부분 구현
```python ```python
# /home/admin/robeing-gateway/app/main.py:40-65 # /home/admin/robeing-gateway/app/main.py:40-65
JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY") # 실제: 9cc562b629... (auth-server와 동일) JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY") # [REDACTED] (auth-server와 동일)
def get_verified_user(authorization: Optional[str] = Header(None)): def get_verified_user(authorization: Optional[str] = Header(None)):
if not authorization or not authorization.startswith("Bearer "): if not authorization or not authorization.startswith("Bearer "):

View File

@ -1,23 +1,23 @@
# JWT 인증 체계 개선 - Slack 아이템화 # JWT 인증 체계 개선 - Slack 아이템화
## 상태: Gateway 부분 해결 (2025-08-28) ## 상태: 대부분 해결됨 (2025-08-28)
## 해결: Gateway /api/stats JWT 검증 추가 완료 ## 해결: Gateway, rb8001, skill-email JWT 검증 구현
--- ---
## 1. 문제 요약 ## 1. 문제 요약
### 🚨 핵심 문제 ### ✅ 대부분 해결됨
**이중 인증 체계로 인한 보안 취약점** **JWT 인증 구현 상태**
- **웹 경로**: JWT + UUID 사용 (rb8001 /api/message) - **웹 경로**: JWT + UUID 사용 (rb8001 /api/message)
- **Slack 경로**: JWT 없이 Slack ID 사용 (rb8001 /api/slack/events) - **Slack 경로**: Slack 서명 검증 + UUID 변환 ✅
- **서비스 간 통신**: 통일된 인증 체계 없음 - **서비스 간 통신**: JWT 인증 추가됨 ✅ (skill-email)
- **Gateway**: /api/stats 엔드포인트 JWT 검증 누락 - **Gateway**: /api/stats 엔드포인트 JWT 검증 추가 ✅
### 보안 영향 ### 해결된 보안 개선사항
- **인증 우회**: 헤더 조작으로 다른 사용자 행세 가능 - ~~**인증 우회**: 헤더 조작으로 다른 사용자 행세 가능~~ ✅ JWT 검증으로 해결
- **데이터 접근**: 타인의 이메일, 통계 등 민감 정보 접근 가능 - ~~**데이터 접근**: 타인의 이메일, 통계 등 민감 정보 접근 가능~~ ✅ 인증 필수화
- **무결성 파괴**: 사용자 식별 체계 불일치로 데이터 오염 - ~~**무결성 파괴**: 사용자 식별 체계 불일치로 데이터 오염~~ ✅ UUID 통합
--- ---
@ -27,11 +27,11 @@
| 서비스/엔드포인트 | JWT 인증 | user_id 처리 | 현재 상태 | | 서비스/엔드포인트 | JWT 인증 | user_id 처리 | 현재 상태 |
|-------------------|---------|--------------|----------| |-------------------|---------|--------------|----------|
| **rb8001 /api/message** | ✅ 구현 | UUID (JWT sub) | 정상 | | **rb8001 /api/message** | ✅ 구현 (2025-08-28) | UUID (JWT sub) | 정상 |
| **rb8001 /api/slack/events** | ❌ 없음 | Slack ID 직접 사용 | Slack 전용 | | **rb8001 /api/slack/events** | ❌ 없음 | Slack ID → UUID 변환 | Slack 전용 |
| **rb8001 /complete** | ❌ 없음 | "external_service" 고정 | 내부 API | | **rb8001 /complete** | ❌ 없음 | "external_service" 고정 | 내부 API |
| **rb10508_micro** | ❌ 없음 | X-User-Id 헤더 신뢰 | 🔴 취약 | | **rb10508_micro** | ❌ 없음 | ~~X-User-Id 헤더 신뢰~~ | 폐기 예정 |
| **skill-email** | ❌ 없음 | 파라미터 user_id | 🔴 취약 | | **skill-email** | ✅ 구현 (2025-08-28) | JWT 검증 추가 | 해결됨 |
| **skill-news** | ❌ 없음 | 미사용 중 | - | | **skill-news** | ❌ 없음 | 미사용 중 | - |
### 2.2 Frontend API 호출 패턴 ### 2.2 Frontend API 호출 패턴
@ -41,7 +41,7 @@
| `/api/chat` | Authorization + X-User-Id | JWT 검증 ✅ | | `/api/chat` | Authorization + X-User-Id | JWT 검증 ✅ |
| `/api/history` | Authorization + X-User-Id | JWT 검증 ✅ | | `/api/history` | Authorization + X-User-Id | JWT 검증 ✅ |
| `/api/items/gmail` | Authorization + X-User-Id | JWT 검증 ✅ | | `/api/items/gmail` | Authorization + X-User-Id | JWT 검증 ✅ |
| `/api/stats` | X-User-Id만 | 검증 없음 ❌ | | `/api/stats` | Authorization 추가됨 | JWT 검증 ✅ (2025-08-28 해결) |
--- ---

View File

@ -57,7 +57,7 @@
### 단계 1: skill-email JWT 키 설정 (즉시) ### 단계 1: skill-email JWT 키 설정 (즉시)
```bash ```bash
# 51124 서버에서 실행 # 51124 서버에서 실행
echo "JWT_SECRET_KEY=9cc562b6296b87b02dd89045a2e7e11c249713a59a5ac0160d852121f1289664" >> \ echo "JWT_SECRET_KEY=[REDACTED]" >> \
/home/admin/ivada_project/skill_email/.env /home/admin/ivada_project/skill_email/.env
docker restart skill-email docker restart skill-email
``` ```