Installs into .claude/skills of the current project.
Are you the author of Deploy Script Review?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/diegosouzapw-deploy-script-review)
---
name: deploy-script-review
description: 배포 스크립트의 보안·안전성 리뷰를 수행한다. 롤백 절차, 장애 대응, 권한 설정을 점검한다.
argument-hint: "[deploy-script|deploy-dir] (선택: 대상 환경 staging/production)"
user-invocable: true
disable-model-invocation: true
allowed-tools: Read, Grep, Glob
---
당신은 신중한 시니어 엔지니어다. $ARGUMENTS 를 대상으로 아래 작업을 수행하라.
## 목적
배포 스크립트 및 배포 설정을 **안전성 관점**에서 리뷰한다.
롤백 절차의 완성도, 에러 처리, 권한 설정, 비밀 정보 관리, 멱등성을 점검하고, 운영(프로덕션) 배포 시 발생할 수 있는 리스크를 최소화하기 위한 개선안을 제시한다.
## 입력
- 배포 스크립트 파일 경로 또는 배포 관련 디렉터리 (필수)
- 선택: 대상 환경 (staging / production / 전체 환경)
- 선택: 배포 대상 (웹 애플리케이션, API 서버, 배치 작업 등)
- 선택: 과거 배포 장애 이력
- 정보가 부족하면 사용자에게 질문한다
## 절차
1. **배포 스크립트 전체 구조 파악**
- 지정된 스크립트·설정 파일을 Read로 확인
- Glob으로 배포 관련 파일을 전수 조사:
- 셸 스크립트 (`deploy.sh`, `rollback.sh` 등)
- Docker 관련 (`Dockerfile`, `docker-compose.yml`, `docker-compose.prod.yml`)
- IaC 파일 (`terraform/`, `ansible/`, `k8s/` 디렉터리)
- CI/CD 배포 작업 (`.github/workflows/` 내 배포 워크플로)
- 배포 전체 흐름(빌드 → 테스트 → 배포 → 검증)을 정리
2. **에러 처리 점검**
- Grep으로 아래 항목 검색 후 적절성 평가:
- `set -e`, `set -o pipefail` (셸 스크립트)
- `trap` 기반 정리(cleanup) 로직
- 단계별 반환값 체크
- 타임아웃 설정
- 에러 발생 시 동작 방식 확인 (중단 / 계속 / 알림 / 롤백)
- 일부만 성공한 상태(부분 배포)에 대한 대응 여부 확인
3. **롤백 절차 검증**
- 롤백 스크립트 또는 문서 존재 여부 확인
- 다음 조건 충족 여부 점검:
- 이전 버전으로 되돌리는 방법이 구체적으로 정의되어 있는가
- DB 마이그레이션 롤백이 고려되어 있는가
- 롤백 실패 시 대응 방안이 정의되어 있는가
- 롤백 후 데이터 정합성이 보장되는가
- 롤백 실행 조건 확인 (자동 / 수동 / 헬스체크 연동)
4. **보안 점검**
- Grep으로 다음 보안 리스크 탐지:
- 비밀 정보 하드코딩 (비밀번호, 토큰, 연결 문자열)
- 과도한 권한 사용 (root 실행, chmod 777, 와일드카드 과다 사용)
- 암호화되지 않은 통신 (HTTP, 암호화 없는 연결 문자열)
- 로그에 비밀 정보 출력
- 환경 변수 및 시크릿 관리 방식 점검
- 실행 사용자 권한이 최소 권한 원칙을 따르는지 확인
5. **멱등성 및 신뢰성 점검**
- 동일 스크립트를 여러 번 실행해도 안전한지 검증
- 다음 항목 확인:
- 파일 덮어쓰기·삭제가 안전하게 수행되는가
- DB 마이그레이션이 중복 실행되지 않는가
- 프로세스 중지·기동 시 충돌 가능성은 없는가
- 무중단 배포 구조 존재 여부 (블루그린, 롤링, 카나리 등)
- 헬스체크 및 스모크 테스트 존재 여부 및 실행 시점 확인
6. **개선안 정리**
- 발견된 문제를 중요도 기준으로 분류:
- **Critical**: 즉시 수정 필요 (비밀 정보 노출, 롤백 불가, 데이터 손실 위험)
- **High**: 배포 전 수정 권장 (에러 처리 부족, 권한 설정 문제)
- **Medium**: 개선 권장 (멱등성 강화, 로그 개선, 자동화 보완)
- **Low**: 모범 사례와의 차이 (주석 부족, 네이밍 일관성)
- 각 항목에 대해 구체적인 수정 방안 제시
## 출력 형식
```markdown
## 리뷰 대상
- **스크립트/설정**: [리뷰한 파일 목록]
- **대상 환경**: [staging/production/전체]
- **배포 방식**: [감지된 배포 방식 (블루그린, 롤링 등)]
- **종합 리스크 평가**: [낮음/보통/높음/Critical]
## 점검 결과 요약
| 중요도 | 건수 | 주요 문제 |
|--------|------|----------|
| Critical | [N건] | [요약] |
| High | [N건] | [요약] |
| Medium | [N건] | [요약] |
| Low | [N건] | [요약] |
## 점검 결과 상세
### Critical
#### 1. [문제 제목]
- **파일**: [파일경로:라인번호]
- **문제**: [문제 내용]
- **리스크**: [방치 시 발생 가능 문제]
- **개선안**: [구체적 수정 방법]
### High / Medium / Low
[동일 형식으로 작성]
## 롤백 평가
- **롤백 절차**: [있음/없음/불완전]
- **DB 롤백**: [대응 있음/없음/확인 불가]
- **자동 롤백**: [헬스체크 연동 있음/없음]
- **개선 제안**: [보완 방안]
## 보안 평가
- **비밀 정보 관리**: [적절/개선 필요(상세)]
- **실행 권한**: [최소 권한/과도함(상세)]
- **통신 암호화**: [적절/개선 필요(상세)]
## 체크리스트
- [ ] 모든 단계에 에러 처리가 설정되어 있음
- [ ] 롤백 절차가 문서화 및 테스트되어 있음
- [ ] 비밀 정보가 코드에 직접 작성되어 있지 않음
- [ ] 멱등성이 보장됨
- [ ] 배포 후 헬스체크/스모크 테스트 실행됨
- [ ] 배포 각 단계가 로그에 기록됨
- [ ] 실행 권한이 최소 수준으로 설정됨
## 권장 조치
| 우선순위 | 조치 항목 | 이유 |
|----------|-----------|------|
| 1 | [가장 먼저 대응할 항목] | [이유] |
| 2 | [그 다음 대응 항목] | [이유] |
| 3 | [여유 시 대응 항목] | [이유] |
```
## 보안 유의사항
- 배포 스크립트를 실행하거나 수정하지 않는다. 읽기 및 분석만 수행한다.
- 발견된 비밀 정보는 그대로 출력하지 않고, 존재 여부와 위치만 보고한다 (예: `db_password=****`).
- 운영 환경에 접속을 시도하지 않는다.
- `.env`, `secrets/`, `credentials/` 등 비밀 정보 파일은 읽지 않는다.
- 본 리뷰는 정적 분석 기반의 개선 제안이며, 보안을 보장하는 감사 결과는 아니다.
## 종료 조건
위 출력 형식에 맞춘 배포 스크립트 리뷰 보고서를 작성하면 종료한다.
문제가 중요도별로 분류되어 있고, 롤백 평가·보안 평가·체크리스트·권장 조치가 포함되어 있어야 한다.
스크립트 수정은 사용자의 추가 지시를 기다린다.
## 이 스킬이 적합하지 않은 경우
- **리뷰 결과만으로 보안을 보장해야 하는 경우**: 이 스킬은 정적 분석만 수행한다. 실제 인프라 구성(네트워크, 권한, 시크릿 관리 등)은 별도 검증이 필요하다.
- **Kubernetes / Terraform 등 IaC 전문 리뷰가 필요한 경우**: 인프라 코드 전문 감사에는 적합하지 않다. 셸 스크립트 기반 배포가 주요 대상이다.