docs: add server-specific mount runbook and ufw dependency guardrails

This commit is contained in:
Claude 2026-03-03 11:57:47 +09:00
parent 458f16ddb6
commit da81d69712
2 changed files with 49 additions and 2 deletions

View File

@ -98,8 +98,34 @@ sudo ufw allow from 172.16.0.0/12 to any port 5432 proto tcp
- `완료 전`: 핵심 서비스 헬스 + 최근 오류로그 교차 확인 - `완료 전`: 핵심 서비스 헬스 + 최근 오류로그 교차 확인
3. UFW 정책 원칙 3. UFW 정책 원칙
- 전면 허용(`Anywhere`) 대신 서버 단위 허용으로 운영 - 전면 허용(`Anywhere`) 대신 **의존 출발지 단위 최소 허용**으로 운영
- 예: `5432``192.168.219.52`만 허용 - `5432`는 최소 `192.168.219.52` + Docker 브리지 `172.16.0.0/12`를 포함해야 함
## 운영 보강: 서버별 마운트 아키텍처 분기
NAS 관련 장애 점검은 51123/51124가 서로 다른 구조임을 전제로 수행해야 함.
- 51123: NAS/fallback 구조
- `/mnt/nas`, `/mnt/hdd/nas-fallback`
- `/etc/fstab`에 CIFS 항목(`//192.168.219.51/home /mnt/nas cifs ...`)
- 51124: sshfs 연계 구조
- `/mnt/51123data`, `/mnt/51123logs` (sshfs)
- NAS CIFS/fallback 항목 없음
즉, 같은 NAS 불통이어도 "경로가 다르다"는 사실 자체는 장애가 아니라 서버별 아키텍처 차이임.
### NAS 실패 판정 규칙
- `No route to host``Timeout`은 둘 다 **연결 실패**로 동일 분류한다.
- 에러 문구 차이는 시점/라우팅 상태에 따라 달라질 수 있으므로, 원인 분류 키로 사용하지 않는다.
### 완료 전 필수 게이트 (고정)
1. 컨테이너 env 기반 의존성 스캔
2. 51124 -> 51123 포트 매트릭스 (`5432/9000/8100/7687`)
3. 핵심 API 실호출
- `auth-server /auth/naverworks/passport/refresh`
- `skill-email /messages*`
4. 서버별 스토리지 분기 점검
- 51123: NAS/fallback 경로
- 51124: sshfs 경로
## 명령어 체크리스트 ## 명령어 체크리스트
```bash ```bash

View File

@ -47,3 +47,24 @@ sudo ufw --force delete allow 7474/tcp
## 후속 권장 ## 후속 권장
- Docker 퍼블리시 포트(`8000/8100/8200/9000/9200/9600`)의 외부 노출 축소(가능한 `127.0.0.1` 또는 내부 네트워크만 사용) - Docker 퍼블리시 포트(`8000/8100/8200/9000/9200/9600`)의 외부 노출 축소(가능한 `127.0.0.1` 또는 내부 네트워크만 사용)
- PostgreSQL `listen_addresses`, `pg_hba.conf`를 내부 대역 기반으로 추가 제한 - PostgreSQL `listen_addresses`, `pg_hba.conf`를 내부 대역 기반으로 추가 제한
## 사후 정정 (2026-03-03 11:40 KST)
초기 차단 조치만으로는 충분하지 않았고, 실제 운영 의존 경로를 일부 누락한 상태였다.
- 누락된 의존 경로:
- 51124 직접 경로: `192.168.219.52 -> 51123:5432`
- Docker 브리지 경로: `172.16.0.0/12 -> 51123:5432` (예: auth-server `host.docker.internal:5432`)
- 결과:
- `auth-server /auth/naverworks/passport/refresh` 타임아웃
- `skill-email /messages*` 연쇄 500
복구 시 최종 반영한 규칙:
```bash
sudo ufw allow from 192.168.219.52 to any port 5432 proto tcp
sudo ufw allow from 172.16.0.0/12 to any port 5432 proto tcp
```
최종 정책(정정):
- "5432는 무조건 전체 차단"이 아니라, **실제 의존 출발지 단위 최소 허용**이 원칙.
- 하드닝 변경 시 반드시 컨테이너 env 기반 의존성 스캔 + 변경 직후 연계 API 실호출을 완료해야 한다.