피드로 돌아가기
DevSecOps in Practice: Tools That Actually Catch Vulnerabilities - Part 2 - SAST with Bandit
Dev.toDev.to
Security

Bandit 기반 SAST 도입을 통한 High Severity 취약점 차단 파이프라인 구축

DevSecOps in Practice: Tools That Actually Catch Vulnerabilities - Part 2 - SAST with Bandit

Hariharan2026년 4월 26일4intermediate

Context

Secret Scanning만으로는 SQL Injection, eval() 호출 등 코드 내부의 논리적 보안 취약점 탐지가 불가능한 한계 존재. 런타임 실행 없이 소스 코드 패턴을 분석하여 보안 약점을 식별하는 Static Application Security Testing(SAST) 레이어 추가 필요성 대두.

Technical Solution

  • Python 보안 커뮤니티 표준인 Bandit을 도입하여 CWE(Common Weakness Enumeration) 기반의 취약점 매핑 체계 구축
  • --severity-level high 옵션을 통한 빌드 게이트 설정으로 Low/Medium 이슈는 가시성을 확보하되 High 이슈 발생 시에만 파이프라인을 중단시키는 전략적 필터링 적용
  • GitHub Actions 워크플로우 내 if: always() 구문을 적용하여 스캔 실패 시에도 분석 리포트(JSON)를 Artifact로 저장함으로써 디버깅 효율성 증대
  • Gitleaks(Pre-commit/Push)와 Bandit(Push)을 계층적으로 배치하여 시점별로 서로 다른 공격 벡터를 차단하는 다층 방어 구조 설계
  • JSON 포맷 출력을 통한 머신 리더블 데이터 확보 및 .gitignore 설정을 통해 리포트 내 포함된 민감 정보의 2차 유출 방지

1. SAST 도구 도입 시 Severity Level을 구분하여 CI/CD 파이프라인의 Fail 조건 설정 여부 검토

2. JSON 리포트 생성 시 코드 스니펫에 포함된 민감 정보가 저장소에 커밋되지 않도록 .gitignore 설정 확인

3. Secret Scanning과 SAST의 탐지 영역 중첩 구간을 파악하여 중복 알림 최적화

원문 읽기