📌 개요

초기 배포 프로세스에서는 GitHub Actions + Self-hosted Runner 활용을 계획했으나, 보안 시나리오 분석 과정에서 구조적 취약점을 반복적으로 발견하며 설계를 여러 차례 재수정함.


🔄 설계 변천 과정

1단계 : Self-hosted Runner 방식 (초기 계획 → 철거)

구조

커밋 → GitHub Actions(Self-hosted Runner) → 배포

문제 발견

봇과 배포 서버를 분리한 이유

  1. 보안 : Discord 계정 탈취 시, 배포 서버는 Docker 소켓 접근 권한을 가지므로 호스트 OS까지 위협받을 수 있음. 봇과 배포 서버를 분리하고 Docker Compose 내부망으로만 연결하여, 탈취되더라도 배포 요청 범위로만 피해를 한정
  2. 확장성 : Discord 봇은 임시방편이며, 추후 대시보드로 교체 예정. 분리 구조로 배포 서비스 교체를 용이하게 설계

2단계 : Webhook 방식 (검토 → 폐기)

구조

GitHub → Webhook → Discord 봇 → 배포 서버

배포 워크플로우를 GitHub에 올리지 않기 위해 Webhook 방식 검토

문제 발견