GitHub Actions + Security Scanning: 파이프라인에 Trivy와 Checkov를 통합하는 방법
I’m ready to translate the article for you, but I need the text you’d like translated. Could you please provide the content (the article body) you want converted into Korean? Once I have that, I’ll keep the source line unchanged and translate the rest while preserving the original formatting.
🛡️ 솔루션: GitHub Actions에 보안 스캔 통합
그 경험 이후, 나는 취약점이 다시는 프로덕션에 배포되지 않도록 절대 파이프라인을 만들겠다고 결심했다. 이렇게 오늘 여러분과 공유하는 프로젝트가 탄생했다.
🔍 우리가 해결하는 문제
# Así era nuestro workflow ANTES:
- name: Build Docker Image
run: docker build -t mi-app .
- name: Push to Registry
run: docker push mi-app:latest
# ¡Sin validaciones de seguridad!
결과: 취약점, 노출된 비밀, 안전하지 않은 구성… 모두 프로덕션에 배포됩니다.
🚀 우리의 안전한 파이프라인 아키텍처
우리의 새로운 파이프라인은 4개의 핵심 단계로 구성됩니다:
1️⃣ 스마트 태그를 활용한 빌드
# Tags únicos por commit + ambiente
IMAGE_TAG_SHA: "sha-${GITHUB_SHA::7}"
IMAGE_TAG_ENV: "${{ inputs.target_env }}-latest"
2️⃣ Trivy 로 취약점 스캔
- name: Security Scan con Trivy
run: |
docker run --rm \
-v $(pwd):/src \
aquasec/trivy:latest \
image --severity CRITICAL,HIGH \
mi-imagen:${TAG}
Trivy는 다음을 찾아줍니다:
- 시스템 패키지의 취약점
- 알려진 CVE가 있는 의존성
- 실수로 노출된 비밀 정보
- 보안에 취약한 설정
3️⃣ Checkov 으로 Dockerfile 검증
- name: IaC Security con Checkov
run: |
docker run --rm \
bridgecrew/checkov \
--file Dockerfile \
--framework dockerfile
Checkov는 Dockerfile이 모범 사례를 따르는지 확인합니다:
- 루트 사용자 사용? ❌
- 업데이트되지 않은 패키지? ❌
- 하드코딩된 비밀 정보? ❌
4️⃣ 실패 시 자동 차단
핵심은 여기입니다: CRITICAL 또는 HIGH 수준의 취약점이 있으면 파이프라인이 즉시 중단됩니다.
if [ "$VULNERABILIDADES" -gt 0 ]; then
echo "❌ WORKFLOW BLOQUEADO"
echo "Hay $VULNERABILIDADES problemas de seguridad"
exit 1
fi
📊 실시간 보안 대시보드
모든 것이 자동으로 GitHub Actions Summary에 표시됩니다:
🐳 Reporte de Escaneo - Trivy
══════════════════════════════
📊 Resumen General
──────────────────
| Tipo | Severidad | Cantidad |
|--------------------|-----------|----------|
| Vulnerabilidades | 🔴 CRÍTICA| 2 |
| Vulnerabilidades | 🟠 ALTA | 9 |
| Total | | 11 |
🏗️ Checkov Security Scan
══════════════════════════
✅ Todos los checks pasaron (22 passed, 0 failed)
🎯 결과: 자동화된 신뢰
전
- “취약점이 없기를 바랍니다”
- 3개월마다 수동 감사
- 반복되는 보안 사고
후
- ✅ 각 커밋 자동으로 검증
- ✅ 각 이미지 배포 전 스캔
- ✅ 각 배포 보안 보고서와 함께
- ✅ 제로 구현 이후 프로덕션에서 취약점이 없습니다
예시 이미지
💡 배운 교훈
-
보안 ≠ 느려짐
많은 사람들이 보안 스캔을 추가하면 파이프라인이 느려진다고 생각합니다. 틀렸습니다! 우리의 스캔은 단지 2‑3 분만 추가합니다. -
Fail Fast가 Production에서 Fail보다 낫다
파이프라인이 실패하고(개발자에게 알림) 생산 환경에서 실패하여 사용자에게 영향을 주는 것보다 더 좋습니다. -
보고서는 최고의 동료
명확하고 자동화된 보고서는 팀이 문제를 이해하고 해결하도록 도와주며, 단순히 “패치”하는 것이 아닙니다.
🚀 3단계 간단 구현
1단계: 복제하고 탐색하기
git clone https://github.com/francotel/docker-image-security-scan
cd docker-image-security-scan
2단계: 워크플로우 확인
.github/workflows/ci.yml 파일(또는 해당 파일명)을 열고 위에 설명된 각 단계들을 검토하세요.
3단계: 조정하고 배포하기
- 프로젝트에 맞게 tags와 variables를 수정합니다.
- Docker 레지스트리 자격증명을 GitHub의 secrets에 추가합니다.
- 커밋하고 Pull Request를 열어 파이프라인이 실행되는 모습을 확인합니다.
예시 파일
github/workflows/publish-nginx-image.yml – 모든 것이 준비되었습니다!
3단계: 상황에 맞게 조정하세요
이미지 이름, 레지스트리 및 정책을 스택에 맞게 수정하십시오.
완료! 이제 파이프라인이 각 Docker 이미지의 보안을 프로덕션에 배포되기 전에 검증합니다. 🎉
📈 즉각적인 영향
- 감지: 분기별에서 각 커밋마다
- 커버리지: 샘플에서 이미지 100 %
- 신뢰: “기대한다”에서 “검증되었다는 것을 안다”
🤝 어떻게 기여할 수 있나요?
프로젝트는 github.com/francotel/docker-image-security-scan 에서 활발히 진행되고 있습니다.
개선 아이디어?
- Slack/Teams 알림
- 히스토리 대시보드
- 기본 이미지 자동 스캔
- 맞춤형 Policy as Code
🎯 오늘 바로 해보세요!
주요 장점
- ✅ 무료 (open source)
- ✅ 간단 (YAML 파일 하나)
- ✅ 효과적 (실제 문제 차단)
즉시 행동
- ⭐ 레포에 스타 달기
- 🐑 포크하고 맞춤화
- 💬 이슈에 댓글 달기
자동 보안 준비가 되셨나요? 👉 github.com/francotel/docker-image-security-scan
#DevSecOps #GitHubActions #DockerSecurity
놓치지 마세요! 모든 업데이트와 향후 기사 소식을 받으려면 LinkedIn에서 저를 팔로우하세요:
☕ 커피 한 잔으로 지원해 주세요
이 내용이 도움이 되었고 더 많은 콘텐츠를 만들 수 있도록 저를 지원하고 싶다면, 커피 한 잔을 사주세요. 여러분의 지원이 차이를 만듭니다! 🥰
읽어 주셔서 감사합니다. 다음에 또 만나요! 👋




