목표
Prod DB의 전체 dump와 binlog를 S3에 보관하여 목표 RPO 5분을 만족하는 백업 파이프라인을 구성합니다.
권한 관리 원칙
- 백업에 필요한 IAM Role, IAM Policy, IAM User와 권한 연결은 AWS에서 수동으로 구성합니다.
- Terraform 코드에는 IAM 권한 정의와 연결 정보를 선언하지 않습니다.
- Terraform에서는 수동으로 생성된 Instance Profile이나 역할의 이름 등 필요한 식별자만 변수로 전달해 참조합니다.
- 구체적인 권한 내용은 저장소 이슈와 코드에 노출하지 않고 별도 운영 문서에서 관리합니다.
백업 구성 배포 구조
백업 스크립트와 systemd 설정은 DB EC2에 SSM Endpoint를 추가하지 않고 다음 경로로 배포합니다.
GitHub Actions
├─ 일회용 SSH 키 생성
├─ EC2 Instance Connect로 공개 키를 DB 메타데이터에 등록
├─ API EC2를 대상으로 SSM 포트 포워딩 시작
└─ SSH 터널을 통해 DB EC2에서 설치 스크립트 실행
API EC2
└─ TCP 터널 역할만 수행
DB EC2
├─ 공개 키는 60초 후 자동 만료
└─ systemd가 mysqldump/binlog 백업을 독립 실행
- GitHub Actions Runner에만 일회용 SSH 개인 키를 생성하고 작업 종료 시 삭제합니다.
- API EC2에는 SSH 개인 키와 AWS CLI를 추가하지 않으며 DB EC2까지의 TCP 터널만 제공합니다.
- DB EC2의 SSH Host Key를 고정하여 접속 대상을 검증합니다.
- DB EC2의 22번 포트는 API EC2 Security Group에서만 접근할 수 있도록 제한합니다.
작업 내용
완료 조건
- 전체 dump와 binlog가 자동으로 S3에 저장됩니다.
- dump와 binlog의 복구 기준점 및 체크섬을 확인할 수 있습니다.
- 마지막 성공 binlog 업로드가 5분을 넘기거나 파일이 누락되면 알림이 발생합니다.
- 백업 파일 보관 및 삭제가 S3 Lifecycle에 의해 관리됩니다.
- IAM 역할·정책·사용자 권한이 Terraform 코드에 포함되지 않고 수동으로 관리됩니다.
- DB EC2에 SSM Endpoint나 장기 SSH 개인 키를 두지 않고 백업 구성을 배포할 수 있습니다.
목표
Prod DB의 전체 dump와 binlog를 S3에 보관하여 목표 RPO 5분을 만족하는 백업 파이프라인을 구성합니다.
권한 관리 원칙
백업 구성 배포 구조
백업 스크립트와 systemd 설정은 DB EC2에 SSM Endpoint를 추가하지 않고 다음 경로로 배포합니다.
작업 내용
완료 조건