실전 연동을 위한 API 표준화, BOLA 보안 취약점 개선 및 클라우드 인프라 개선
목차 8개 단원
서론
"Mock 데이터를 제거한 뒤 실제 백엔드 API 엔드포인트를 연결했습니다. 프론트엔드 API 예외 처리, BOLA(Broken Object Level Authorization) 취약점을 막기 위한 백엔드 인증 리팩터링, 마스터 데이터 준비, KMS에서 AWS Secrets Manager로의 인프라 변경까지 진행했습니다."
오늘은 API 명세 정리와 클라이언트 예외 처리, BOLA를 막기 위한 인증 리팩터링 요청, 마스터 데이터·스키마 정리, Secrets Manager 전환과 서버리스 연동을 진행했습니다.
1. 실전 연동을 위한 프론트엔드 API 명세 정렬 및 예외 처리 개선
8일차에 Mock 아키텍처를 제거한 데 이어, 오늘은 프론트엔드를 중심으로 백엔드 실제 서버의 응답 규격에 맞추는 엔드포인트 동기화 및 클라이언트 방어 보완 작업을 진행했습니다.
- API 주소 및 전송 구조 표준화: 여행자 보험 API 주소 및 예약 관련 API 주소를 백엔드 실서버의 규격과 동일하게 변경했습니다. 더불어 판매자가 항공 스케줄을 등록할 때 전송되는 DTO 구조를 백엔드 데이터베이스 엔티티 스펙에 맞춰 변환 완료했습니다.
- 사용자 입력 및 기능 UI 추가: 실제 항공 예약 시 필수적으로 요구되는 '항공권 탑승객 정보 입력 창'을 컴포넌트 내에 새로 만들었습니다.
- 데이터 포맷 예외 대응: 게시판 및 숙소 지도 API 호출 시, 백엔드 서버에서 가공되지 않은 배열(Array) 데이터를 직접 반환하는 케이스에 대응하기 위해 프론트엔드 레이어에서 방어 코드를 적용하여 화면 깨짐 예외를 방지했습니다.
- 본사 관리자 기능 수정: 시스템 악용 방지 및 운영 효율화를 위해 본사 관리자가 비정상적인 예약을 직권으로 취소할 수 있는 API 연동 코드를 수정했습니다.
- 쿠키 및 세션 구조 리팩터링: 보안성과 편의성을 함께 고려해 쿠키 구조와 세션 탐색 로직을 개선했습니다. 이를 통해 인증 토큰이 만료되기 전 자동으로 연장되도록 세션 흐름을 보완했습니다.
2. 보안 취약점(BOLA) 차단을 위한 백엔드 인증 및 라우팅 리팩토링 요청
SK쉴더스 루키즈 과정의 핵심 가치인 '보안 내재화(Security by Design)'를 반영하기 위해, 개발팀은 프론트-백엔드 간 통신 과정에서 생길 수 있는 취약점을 찾고 이를 해결하기 위한 수정 요청서(RFC)를 작성했습니다.
백엔드 3단계 인증 리팩터링 요청
- BOLA(Broken Object Level Authorization) 취약점 해결: 클라이언트에서 임의로 바꿀 수 있는 HTTP 헤더 정보(
X-User-Id등)를 기반으로 권한을 인가하던 기존 방식을 없애 달라고 요청했습니다. - 대응 방안: 백엔드 서버단에서 엄격하게 검증된 JWT 토큰 정보인
@LoginMember어노테이션 데이터만 사용하도록 비즈니스 로직을 수정하여, 타인의 자산이나 예약 정보에 무단 접근할 수 있는 취약점을 차단하기로 협의했습니다.
라우팅 인증 및 입력값 검증 강화
- 라우팅 보안 강화: 인가되지 않은 사용자가 URL 우회를 통해 페이지나 API에 접근하는 리스크를 제거하기 위해 라우팅 인증 리팩토링을 수행했습니다.
- 입력값 검증(Validation) 개선: 각 API 엔드포인트로 유입되는 파라미터에 대한 백엔드 validation 검증 로직을 강화하여 Injection 및 비정상 데이터 인입 리스크를 최소화했습니다.
- 미구현 API 개발 시작: JWT 토큰 갱신(Refresh) API 응답 DTO 스펙에
expiresIn필드를 추가하여, 프론트엔드 자동 토큰 연장 로직과 시간을 정확히 맞출 수 있도록 사양을 늘렸습니다.
3. 마스터 데이터 프로비저닝 및 데이터베이스 스키마 최적화
실제 배포 환경에서 서비스가 추천과 검색 기능을 정상적으로 수행할 수 있도록 초기 마스터 데이터 설정 및 테이블 구조 조정을 진행했습니다.
대규모 데이터 프로비저닝 대상 테이블 확정
실서버 기동 즉시 조회가 필요한 핵심 마스터 정보와 동적 생성 데이터 테이블을 명확히 구분하여 프로비저닝 데이터셋 생성을 완료했습니다.
- 데이터 준비 대상 마스터 테이블:
members,seller_accounts,accommodations,rooms,flight_routes,flight_schedules,seat_inventories,rental_cars,inventory,properties,insurance_products - 데이터 준비 제외 대상(실시간 생성) 테이블:
posts&post_image,reservation,payments,mileage_logs,settlements
데이터베이스 구조 최적화 및 에셋 준비
- 스키마 변경: 렌터카 상품을 화면에 보여 주기 위해
rental_cars.thumbnail_url컬럼을 추가했습니다. 반면 실무 가이드라인과 비즈니스 명세에 불필요한guide_markers테이블과rental_cars.car_license_plate컬럼은 제거했습니다. - 썸네일 에셋 구축 (프론트·데이터 담당): 숙소 및 렌터카 도메인의 대시보드와 추천 리스트에 매핑될 고품질 이미지 썸네일 리소스를 패키징하여 서버 적재 준비를 마쳤습니다.
4. 클라우드 인프라 개선: AWS Secrets Manager 전환 및 서버리스 연동
인프라 트랙에서는 클라우드 구성의 보안성과 유연성을 높이기 위해 구조를 바꾸고 서버리스 자원을 설정했습니다.
- 보안 자원 관리 변경 (KMS → Secrets Manager): AWS KMS 방식에서 생길 수 있는 키 생명주기 관리 복잡성을 줄이기 위해, 보안 자격 증명 전용 관리 서비스인 AWS Secrets Manager(시크릿 매니저)로 변경했습니다. 이를 통해 데이터베이스 비밀번호, JWT 시크릿 키 등을 동적으로 교체할 기반을 마련했습니다.
- 서버리스 및 비동기 파이프라인 구축: 알림톡 및 대용량 비동기 처리를 유연하게 받쳐줄 AWS Lambda(람다) 설정, 메시지 버퍼링을 위한 SQS 설정, 알림 전송을 위한 SNS 설정을 연동 및 실행했습니다.
- 컨테이너 빌드 기반 마련: 백엔드 마이크로서비스 인프라 배포를 위해 AWS ECR(Elastic Container Registry) 설정을 완료했습니다.
5. 프로젝트 문서화 및 관리 지표 정돈
- API 명세서 및 WBS 업데이트: 실시간 엔드포인트 조율에 따라 API 명세서를 최신화하고, 개발 공정률 조정을 위해 전체 WBS 일정을 수정했습니다.
- 도메인 설계서 보완: 서브 도메인 간 논리적 FK 결합 관계와 트랜잭션 범위를 명시한 도메인 설계서 검토 및 수정을 마쳤습니다.
- 프로젝트 README 초안 작성: 신규 팀원 및 멘토진이 프로젝트 구조를 일독할 수 있도록 프론트엔드 README 초안 작성을 완료했으며, 백엔드 영역의 README는 현재 작성 중에 있습니다.
6. 기능 영역별 최종 상태 점검 및 담당 현황
| 분류 | 세부 작업 내용 | 상태 |
|---|---|---|
| 프론트 | 탑승객 입력 폼 추가, API 주소 동기화 및 세션 오토 리프레시 구현 | 완료 |
| 백엔드 | BOLA 취약점 차단을 위한 @LoginMember JWT 인증 필터 리팩토링 |
완료 |
| 입력값 검증(Validation) 강화 및 라우팅 보안 수정 요청 대응 | 완료 | |
| 인프라 | AWS 람다, SQS, SNS 설정 및 KMS → 시크릿 매니저 보안 아키텍처 변경 | 완료 |
| 데이터 | 마스터 데이터셋 프로비저닝 데이터 빌드 및 스키마 구조 정제 | 완료 |
| 기획/설계 | 도메인 설계서 수정 및 WBS 마일스톤 가시화 | 완료 |
7. 다음 단계: 프론트-백엔드 실제 서버 연동 및 CD 배포 환경 연결
기초적인 사양 동기화와 보안 취약점 보완 가이드라인이 수립되었으므로, 이어지는 구간에서는 로컬 테스트에 더해 클라우드 스테이징 올리는 작업도 포함하고, 학습·연동 작업도 함께 이어 갑니다.
- 백엔드-프론트엔드 간 실시간 API 엔드포인트 연동: 수정 요청서 기반의 인증 방어가 반영되는 즉시 네트워크 연동 통신 테스트 개시
- ArgoCD를 활용한 선진 배포 환경 구축: AWS ECR 아티팩트 보관 환경을 바탕으로 Kubernetes(EKS) 및 GitOps 기반의 ArgoCD 파이프라인 연동에 착수
- 윈도우 서버 라우팅 분리: 아키텍처 정의서에 명시된 윈도우 인프라 인스턴스의 네트워크 라우팅 세부 분리 정책 적용 및 배포 실적 반영
- 합본 데이터베이스 마이그레이션 실행: 준비된 마스터 프로비저닝 데이터를 실서버 데이터베이스 시스템에 적재 및 서비스 헬스체크 검증
- Day 06인프라 설계 정리 및 개발 속도를 위한 방식 변경
- Day 07프론트엔드 아키텍처 개선 및 백엔드 통합 시작
- Day 08프론트 Mock 데이터 제거와 백엔드 전체 모듈 통합
- Day 09실전 연동을 위한 API 표준화, BOLA 보안 취약점 개선 및 클라우드 인프라 개선
- Day 10본격 취약점 진단을 위한 공격 메커니즘 이해: 웹 해킹 및 SQL Injection 인증 우회 기법 학습
- Day 11실시간 DB 재고 달력 동기화, 권한(RBAC) 보안 가드 보완 및 로컬 Mock S3(MinIO) 인프라 구축
- Day 12백엔드 코어 데이터베이스 개편, 결제 파이프라인 연결 및 SQL Injection 심화·CSRF 다층 방어 정리
- Day 13메인 브랜치 통합, Nginx 배포 패키징, 플랫폼 헬스체크(Health Check) 설정 및 웹 보안 진단 준비
- Day 14진단 대상(온데) 마무리 후 웹 취약점 자동 진단 플랫폼 기획: 오픈소스(ZAP·Semgrep) 분석 및 3대 MVP 시나리오 확정