docs: add 51124 signature handling fix and deployment verification

This commit is contained in:
Claude 2026-02-27 03:43:12 +09:00
parent 942981df54
commit aacc365598

View File

@ -2,7 +2,7 @@
**작성일**: 2026-02-27 **작성일**: 2026-02-27
**작성자**: Codex **작성자**: Codex
**상태**: 진행 중 (부분 해결) **상태**: 진행 중 (핵심 버그 2건 반영 완료, 최종 모니터링 필요)
## 문제 요약 ## 문제 요약
@ -44,7 +44,7 @@
2. **2순위**: `gateway /slack/events` 본문 재직렬화(`json=`)로 인한 서명 불일치 가능성 2. **2순위**: `gateway /slack/events` 본문 재직렬화(`json=`)로 인한 서명 불일치 가능성
3. **보조 요인 아님**: DB/환경변수 변경은 이번 트리거 직접 증거가 약함 3. **보조 요인 아님**: DB/환경변수 변경은 이번 트리거 직접 증거가 약함
## 이번에 반영된 수정 (51123) ## 이번에 반영된 수정 (51123)
### A. 헤더 전달 보강 ### A. 헤더 전달 보강
- `X-Slack-Signature`, `X-Slack-Request-Timestamp` 전달 - `X-Slack-Signature`, `X-Slack-Request-Timestamp` 전달
@ -56,15 +56,37 @@
- `Content-Type` 전달 추가 - `Content-Type` 전달 추가
- 커밋: `12c06ca` (`fix(slack): preserve raw event body for signature verification`) - 커밋: `12c06ca` (`fix(slack): preserve raw event body for signature verification`)
## 아직 남은 조치 (미해결 항목) ## 이번에 반영된 수정 (51124, Codex)
1. **rb8001에서 403을 500으로 바꾸지 않도록 예외 분기 수정 필요** ### C. timestamp 파싱 가드 추가
- `except HTTPException as e: raise e` 또는 동등한 분기 필요 - 파일: `rb8001/app/router/slack_endpoint.py`
- 현재는 이 미조치로 인증 실패가 계속 500으로 관측됨 - 변경: `timestamp` 빈값/비정상값(`''`, non-numeric)에서 `float()` 예외가 나지 않도록 방어
- 커밋: `c1321a7` (`fix(slack): guard invalid slack timestamp parsing`)
2. **실유입 기준 최종 검증** ### D. 403 -> 500 재매핑 제거
- 기대 결과: 인증 실패면 `403`, 정상 서명이면 `200` - 파일: `rb8001/app/router/slack_endpoint.py`
- 더 이상 `/gateway/slack/events`에서 일괄 `500`이 나오지 않아야 함 - 변경: `except HTTPException: raise` 분기 추가로 인증 실패 상태코드(403) 보존
- 커밋: `b19abbd` (`fix(slack): preserve HTTP status for signature failures`)
## 51124 배포/검증 결과 (2026-02-27)
1. **자동배포 반영 확인**
- `git push origin main``docker ps`에서 `rb8001` 재시작 확인 (`Up 52 seconds (healthy)` 시점 확인)
- `curl http://localhost:8001/health``200`
2. **상태코드 동작 확인**
- 무서명 테스트 요청: `POST /api/slack/events``403 {"detail":"Invalid signature"}`
- 기존처럼 `500`으로 재매핑되지 않음
3. **실유입 로그 확인**
- `docker logs rb8001` 최근 구간에서 `192.168.219.45 -> POST /api/slack/events``200 OK` 다건 확인
- `could not convert string to float``/api/slack/events 500` 재발 로그 미확인
## 아직 남은 조치 (최종 운영 확인)
1. **서명 검증 안정화 최종 모니터링**
- `/gateway/slack/events` 실유입 기준으로 200/403 분포를 24시간 관찰
- 재발 시 게이트웨이 원문 body 전달(`content=raw_body`) 경로와 nginx 로그를 시각 동기화해 재검증
## 관련 파일 ## 관련 파일
@ -73,4 +95,3 @@
- `rb8001/app/router/slack_endpoint.py` - `rb8001/app/router/slack_endpoint.py`
- `/var/log/nginx/access.json` - `/var/log/nginx/access.json`
- `/mnt/hdd/logs/51124-server/rb8001/rb8001.log` - `/mnt/hdd/logs/51124-server/rb8001/rb8001.log`