보안: 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:
parent
09fab3d36c
commit
dc7d2a5f30
@ -32,7 +32,7 @@
|
||||
```python
|
||||
# /home/admin/auth-server/app/core/auth.py
|
||||
# ✅ 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
|
||||
jwt_token = create_access_token(data={
|
||||
@ -44,13 +44,13 @@ jwt_token = create_access_token(data={
|
||||
|
||||
**현재 상태**:
|
||||
- ✅ JWT 토큰 발급 구현됨 (Gmail OAuth 후)
|
||||
- ✅ JWT_SECRET_KEY 설정됨: `9cc562b629...`
|
||||
- ✅ JWT_SECRET_KEY 설정됨: `[REDACTED]`
|
||||
- ❌ 하지만 백엔드 서비스들이 이 토큰을 검증하지 않음
|
||||
|
||||
### 2.2 robeing-gateway (51123:8100) - 부분 구현
|
||||
```python
|
||||
# /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)):
|
||||
if not authorization or not authorization.startswith("Bearer "):
|
||||
|
||||
@ -1,23 +1,23 @@
|
||||
# JWT 인증 체계 개선 - Slack 아이템화
|
||||
|
||||
## 상태: Gateway 부분 해결 (2025-08-28)
|
||||
## 해결: Gateway /api/stats JWT 검증 추가 완료 ✅
|
||||
## 상태: 대부분 해결됨 (2025-08-28)
|
||||
## 해결: Gateway, rb8001, skill-email JWT 검증 구현 ✅
|
||||
|
||||
---
|
||||
|
||||
## 1. 문제 요약
|
||||
|
||||
### 🚨 핵심 문제
|
||||
**이중 인증 체계로 인한 보안 취약점**
|
||||
- **웹 경로**: JWT + UUID 사용 (rb8001 /api/message)
|
||||
- **Slack 경로**: JWT 없이 Slack ID 사용 (rb8001 /api/slack/events)
|
||||
- **서비스 간 통신**: 통일된 인증 체계 없음
|
||||
- **Gateway**: /api/stats 엔드포인트 JWT 검증 누락
|
||||
### ✅ 대부분 해결됨
|
||||
**JWT 인증 구현 상태**
|
||||
- **웹 경로**: JWT + UUID 사용 ✅ (rb8001 /api/message)
|
||||
- **Slack 경로**: Slack 서명 검증 + UUID 변환 ✅
|
||||
- **서비스 간 통신**: JWT 인증 추가됨 ✅ (skill-email)
|
||||
- **Gateway**: /api/stats 엔드포인트 JWT 검증 추가 ✅
|
||||
|
||||
### 보안 영향
|
||||
- **인증 우회**: 헤더 조작으로 다른 사용자 행세 가능
|
||||
- **데이터 접근**: 타인의 이메일, 통계 등 민감 정보 접근 가능
|
||||
- **무결성 파괴**: 사용자 식별 체계 불일치로 데이터 오염
|
||||
### 해결된 보안 개선사항
|
||||
- ~~**인증 우회**: 헤더 조작으로 다른 사용자 행세 가능~~ ✅ JWT 검증으로 해결
|
||||
- ~~**데이터 접근**: 타인의 이메일, 통계 등 민감 정보 접근 가능~~ ✅ 인증 필수화
|
||||
- ~~**무결성 파괴**: 사용자 식별 체계 불일치로 데이터 오염~~ ✅ UUID 통합
|
||||
|
||||
---
|
||||
|
||||
@ -27,11 +27,11 @@
|
||||
|
||||
| 서비스/엔드포인트 | JWT 인증 | user_id 처리 | 현재 상태 |
|
||||
|-------------------|---------|--------------|----------|
|
||||
| **rb8001 /api/message** | ✅ 구현 | UUID (JWT sub) | 정상 |
|
||||
| **rb8001 /api/slack/events** | ❌ 없음 | Slack ID 직접 사용 | Slack 전용 |
|
||||
| **rb8001 /api/message** | ✅ 구현 (2025-08-28) | UUID (JWT sub) | 정상 |
|
||||
| **rb8001 /api/slack/events** | ❌ 없음 | Slack ID → UUID 변환 | Slack 전용 |
|
||||
| **rb8001 /complete** | ❌ 없음 | "external_service" 고정 | 내부 API |
|
||||
| **rb10508_micro** | ❌ 없음 | X-User-Id 헤더 신뢰 | 🔴 취약 |
|
||||
| **skill-email** | ❌ 없음 | 파라미터 user_id | 🔴 취약 |
|
||||
| **rb10508_micro** | ❌ 없음 | ~~X-User-Id 헤더 신뢰~~ | 폐기 예정 |
|
||||
| **skill-email** | ✅ 구현 (2025-08-28) | JWT 검증 추가 | 해결됨 |
|
||||
| **skill-news** | ❌ 없음 | 미사용 중 | - |
|
||||
|
||||
### 2.2 Frontend API 호출 패턴
|
||||
@ -41,7 +41,7 @@
|
||||
| `/api/chat` | Authorization + X-User-Id | JWT 검증 ✅ |
|
||||
| `/api/history` | 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 해결) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -57,7 +57,7 @@
|
||||
### 단계 1: skill-email JWT 키 설정 (즉시)
|
||||
```bash
|
||||
# 51124 서버에서 실행
|
||||
echo "JWT_SECRET_KEY=9cc562b6296b87b02dd89045a2e7e11c249713a59a5ac0160d852121f1289664" >> \
|
||||
echo "JWT_SECRET_KEY=[REDACTED]" >> \
|
||||
/home/admin/ivada_project/skill_email/.env
|
||||
docker restart skill-email
|
||||
```
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user