Docker 기반 프로젝트의 보안 설정을 수집하는 Windows CLI 도구입니다.
.env, Dockerfile, Docker Compose 파일을 스캔하고, 민감 정보를 자동으로 마스킹한 결과물을 로컬에 저장하거나 백엔드로 업로드합니다.
- Windows 10/11
- Python 3.10 이상
- Docker Desktop (Docker Compose v2 포함)
- Trivy (선택사항, Dockerfile 취약점 스캔 시 필요)
pip install git+https://github.com/ydh0318/ssafer-cli.git설치 확인:
ssafer versionDockerfile 취약점 스캔이 필요하다면 Trivy를 함께 설치하세요.
ssafer install-tools설치 후 터미널을 새로 열고 확인합니다.
trivy --versionssafer doctorPython, Docker, Docker Compose, Trivy 등 필요한 도구가 준비됐는지 확인합니다.
ssafer run --path .\my-projectssafer report --path .\my-project결과 파일 위치, 스캔 대상, 업로드/AI 분석에 들어갈 artifact 목록까지 보려면:
ssafer report --path .\my-project --detailsssafer upload --path .\my-project --api-url http://your-backend:8080| 명령어 | 설명 |
|---|---|
ssafer version |
CLI 버전 출력 |
ssafer doctor |
로컬 환경 점검 |
ssafer install-tools |
Trivy 자동 설치 (winget) |
ssafer run |
스캔 실행 및 결과 저장 |
ssafer report |
마지막 스캔 결과 요약/상세 출력 |
ssafer upload |
스캔 결과 백엔드 업로드 |
ssafer run --path .\my-project [옵션]| 옵션 | 설명 | 기본값 |
|---|---|---|
--path, -p |
스캔할 프로젝트 경로 | 현재 디렉터리 |
--upload |
스캔 후 자동 업로드 | false |
--api-url |
업로드할 백엔드 URL | http://localhost:8080 |
--save-raw |
원본 Compose 출력 로컬 저장 (주의) | false |
스캔과 업로드를 한 번에:
ssafer run --path .\my-project --upload --api-url http://your-backend:8080ssafer report --path .\my-project --details| 옵션 | 설명 | 기본값 |
|---|---|---|
--path, -p |
결과를 확인할 프로젝트 경로 | 현재 디렉터리 |
--details, -d |
결과 파일, 대상, artifact 목록 출력 | false |
SSAfer는 프로젝트 루트를 재귀적으로 탐색해 아래 파일을 수집합니다.
.env,.env.*Dockerfile,Containerfiledocker-compose.yml / yaml,compose.yml / yamldocker-compose.override.yml,compose.override.ymldocker-compose.*.yml,compose.*.yml
node_modules, .git, dist, build 등 불필요한 디렉터리는 자동으로 제외됩니다.
SSAfer는 원본 비밀값이 외부로 유출되지 않도록 설계되어 있습니다.
.env값은 원본 대신 해시 + 메타데이터로 저장- Compose
environment의 민감한 값 자동 마스킹 (PASSWORD,SECRET,TOKEN,API_KEY등) - URL에 포함된 인증 정보 제거 (
mysql://user:password@host→mysql://user:***MASKED***@host) --save-raw옵션 없이는 원본 Compose 출력이 저장되지 않음
ssafer run 실행 시 프로젝트 내 .ssafer 디렉터리에 결과가 저장됩니다.
my-project/
└── .ssafer/
├── results/
│ ├── local-scan-<timestamp>.json # 전체 스캔 패키지
│ └── last_scan.txt # 마지막 스캔 파일 경로
├── effective/
│ └── sanitized/ # 마스킹된 Compose 파일
└── trivy/ # Trivy 스캔 결과 (설치 시)
.ssafer 디렉터리는 .gitignore에 추가하는 것을 권장합니다.
# .gitignore
.ssafer/
ssafer report --path .\my-project --details주요 확인 항목:
Status:SUCCESS,PARTIAL,FAILED중 하나입니다.Output files: 생성된 scan package, sanitized Compose, Trivy 결과 경로입니다.Targets: SSAfer가 발견한.env, Dockerfile, Compose 세트입니다.Artifacts: 백엔드 업로드와 AI 분석에 들어갈 산출물 목록입니다.Finding count: Trivy artifact 안의 finding 개수입니다.
정상적으로 생성되어야 하는 artifact 타입:
sanitized-effective-compose: 마스킹된 effective Compose 설정env-metadata:.env키 목록과 마스킹/해시 메타데이터trivy-json: Trivy가 생성한 Dockerfile/config 스캔 결과
report, upload 실행 전에 반드시 스캔을 먼저 해야 합니다.
ssafer run --path .\my-projectDocker Desktop을 설치하고 실행한 후 확인합니다.
docker --version
docker compose versionTrivy가 없으면 Dockerfile 스캔이 건너뜁니다. 설치하려면:
ssafer install-tools설치 후 터미널을 새로 열고 재시도하세요.
백엔드 서버가 실행 중인지 확인하고, --api-url로 정확한 주소를 지정하세요.
ssafer upload --path .\my-project --api-url http://your-backend:8080백엔드는 POST /api/scans 엔드포인트를 지원해야 합니다.
# 소스에서 설치 (개발 모드)
git clone https://github.com/ydh0318/ssafer-cli.git
cd ssafer-cli
pip install -e .[dev]
# 테스트 실행
python -m pytest주요 모듈:
ssafer/main.py— CLI 명령어 정의ssafer/core/result_store.py— 스캔 흐름 제어ssafer/core/sanitize.py— 민감정보 마스킹ssafer/core/compose.py— Compose 세트 구성ssafer/core/finder.py— 파일 탐색ssafer/core/trivy.py— Trivy 통합