배포 버튼 누르기 전 5분만 투자하자
바이브코딩으로 앱을 만들 때의 흐름은 빠르다. 프롬프트 작성 → AI 코드 생성 → 테스트 → 배포. 이 과정에서 보안 점검은 보통 생략된다. 그리고 사고는 배포 직후에 일어난다.
5분이면 충분하다. 이 다섯 가지만 확인해도 흔한 보안 사고의 80%를 막을 수 있다.
점검 항목 5가지
1. .env 파일이 공개 저장소에 올라가지 않았는가
cat .gitignore | grep .env
# 아무것도 안 나오면 즉시 추가
echo ".env" >> .gitignore
echo ".env.local" >> .gitignore
echo ".env.production" >> .gitignore
이미 커밋했다면 git history에 남아있으니 GitHub의 "Secret scanning" 알림을 확인하고, 해당 API 키를 즉시 재발급해야 한다.
2. Supabase RLS가 켜져 있는가
Supabase 대시보드에서 각 테이블 옆 방패 아이콘이 켜져(초록) 있는지 확인한다. 꺼진 테이블이 있으면 RLS를 활성화하고 필요한 정책을 추가한다.
3. 디버그/개발 모드가 꺼져 있는가
# Next.js: .env.production 확인
NODE_ENV=production
# Django: settings.py 또는 환경변수 확인
DEBUG=False
# Flask
app.config['DEBUG'] = False
4. 열려있으면 안 되는 포트가 노출되지 않았는가
클라우드 보안 그룹(AWS Security Group, GCP Firewall)에서 다음 포트가 0.0.0.0/0으로 열려있지 않은지 확인한다.
- 3306 (MySQL), 5432 (PostgreSQL): DB 직접 접근
- 6379 (Redis): 인증 없으면 즉시 탈취 가능
- 27017 (MongoDB): 인증 미설정이면 공개 DB가 됨
- 22 (SSH): 특정 IP만 허용 필요
5. URL 하나로 전체 점검
위 4가지를 확인했다면, 마지막으로 배포된 URL을 스캐너에 돌려서 설정 레벨의 취약점을 확인한다.
배포 후에도 정기 점검이 필요하다
한 번 점검했다고 끝이 아니다. SSL 인증서 만료, 새로 추가된 API의 인증 누락, 의존성 패키지의 신규 취약점 — 배포 후에도 주기적인 모니터링이 필요하다.