# 2026년 DevOps 파이프라인 보안: SAST, DAST, 공급망 보안 및 면접 대비 > 2026년 DevOps 파이프라인 보안 모범 사례를 안내합니다. SAST, DAST, SCA 통합 방법, SBOM 생성, SLSA 프로비넌스 구현, 그리고 DevSecOps 면접 질문에 대한 준비 방법을 다룹니다. - Published: 2026-09-15 - Updated: 2026-09-15 - Author: Anthony Fillion-Maillet - Reading time: 12 min --- DevOps 파이프라인 보안은 프리커밋 훅부터 프로덕션 모니터링까지 CI/CD 워크플로우의 모든 단계에 보안 검사를 내장해야 합니다. [Datadog State of DevSecOps Report 2026](https://www.datadoghq.com/state-of-devsecops/)에 따르면 87%의 조직이 최소 하나 이상의 알려진 악용 가능한 취약점을 가진 서비스를 운영하고 있으며, 소프트웨어 공급망 공격으로 인한 전 세계 경제 피해는 연간 800억 달러를 초과합니다. > **보안 도구 우선순위** > > 시크릿 탐지부터 시작하는 것을 권장합니다(영향도가 가장 높고 오탐률이 가장 낮음). 그 다음 알려진 CVE를 위한 SCA를 추가하고, 튜닝된 SAST, IaC 스캔, 마지막으로 DAST를 추가합니다. 각 도구는 다음 도구를 추가하기 전에 가치를 입증해야 합니다. ## SAST: 병합 전 취약점을 탐지하는 정적 분석 정적 애플리케이션 보안 테스트(SAST)는 코드를 실행하지 않고 소스 코드를 분석합니다. 도구는 코드베이스를 파싱하고 추상 구문 트리를 구축하며 알려진 취약점 시그니처와 패턴 매칭을 수행합니다. 모든 풀 리퀘스트에서 SAST를 실행하면 SQL 인젝션, XSS, 하드코딩된 자격 증명을 메인 브랜치에 도달하기 전에 탐지할 수 있습니다. Semgrep은 2026년 현재 사실상의 오픈소스 SAST 도구 표준입니다. 정규식 기반 스캐너와 달리 Semgrep은 코드 구조를 이해하고 YAML로 사용자 정의 규칙을 지원합니다. ```yaml # .github/workflows/sast.yml name: SAST Scan on: pull_request: branches: [main, develop] jobs: semgrep: runs-on: ubuntu-latest container: image: semgrep/semgrep:latest steps: - uses: actions/checkout@v4 - name: Run Semgrep run: semgrep scan --config=auto --sarif --output=semgrep.sarif - name: Upload SARIF uses: github/codeql-action/upload-sarif@v3 with: sarif_file: semgrep.sarif ``` `--config=auto` 플래그는 탐지된 언어에 맞는 커뮤니티 규칙을 로드합니다. SARIF 출력은 GitHub Security 탭과 통합되어 탐지 결과를 시간순으로 추적할 수 있습니다. ## DAST: 정적 분석으로는 찾을 수 없는 취약점을 탐지하는 런타임 테스트 동적 애플리케이션 보안 테스트(DAST)는 실행 중인 애플리케이션을 공격하여 런타임에서만 나타나는 취약점을 탐지합니다. 인증 결함, 권한 부여 결함, 비즈니스 로직 버그는 실제 HTTP 요청을 수행해야만 탐지할 수 있습니다. SAST는 관리자 엔드포인트에 적절한 접근 제어가 없음을 탐지할 수 없지만, DAST는 자격 증명 없이 접근을 시도하고 노출을 보고합니다. [OWASP ZAP](https://www.zaproxy.org/)는 가장 널리 배포된 오픈소스 DAST 도구입니다. 2026년 초에 출시된 ZAP 3.0은 GraphQL 및 gRPC 스캔에 대한 네이티브 지원을 추가했습니다. ```yaml # .github/workflows/dast.yml name: DAST Scan on: deployment: types: [created] jobs: zap-scan: runs-on: ubuntu-latest steps: - name: ZAP Full Scan uses: zaproxy/action-full-scan@v0.12.0 with: target: ${{ secrets.STAGING_URL }} rules_file_name: '.zap/rules.tsv' cmd_options: '-a -j -l WARN -z "-config api.disablekey=true"' - name: Upload Report uses: actions/upload-artifact@v4 with: name: zap-report path: report_html.html ``` DAST는 라이브 대상이 필요하기 때문에 배포 후에 실행됩니다. 스테이징 환경이 테스트 대상이 되며, 프로덕션 환경은 스캔 트래픽으로부터 격리됩니다. > **프로덕션에서의 DAST** > > 프로덕션에 대해 활성 DAST 스캔을 실행하면 속도 제한 트리거, 데이터 손상 또는 보안 모니터링 알림 발생 위험이 있습니다. 프로덕션 구성을 미러링한 스테이징 환경을 사용하십시오. ## SCA: 알려진 취약점을 탐지하는 의존성 스캔 소프트웨어 구성 분석(SCA)은 [National Vulnerability Database](https://nvd.nist.gov/) 및 GitHub Advisory Database와 같은 취약점 데이터베이스에 대해 의존성을 스캔합니다. 단일 취약한 전이적 의존성이 전체 애플리케이션을 위험에 노출시킬 수 있습니다. 2026년 Datadog 보고서에 따르면 42%의 서비스가 더 이상 적극적으로 유지보수되지 않는 라이브러리에 의존하고 있습니다. Trivy는 컨테이너, 파일 시스템, git 저장소의 취약점을 단일 바이너리로 스캔합니다. CycloneDX 및 SPDX 형식으로 SBOM 출력을 생성할 수 있습니다. ```yaml # .github/workflows/sca.yml name: Dependency Scan on: push: branches: [main] schedule: - cron: '0 6 * * *' # Daily at 6 AM jobs: trivy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run Trivy vulnerability scanner uses: aquasecurity/trivy-action@0.28.0 with: scan-type: 'fs' scan-ref: '.' format: 'sarif' output: 'trivy-results.sarif' severity: 'CRITICAL,HIGH' - name: Upload Trivy scan results uses: github/codeql-action/upload-sarif@v3 with: sarif_file: 'trivy-results.sarif' ``` 예약된 일일 스캔은 코드 변경 없이도 새로 공개된 CVE를 탐지합니다. CRITICAL 및 HIGH 심각도로 필터링하면 저위험 발견으로 인한 알림 피로를 방지할 수 있습니다. ## 공급망 보안: SBOM 및 SLSA 프로비넌스 [EU 사이버 복원력법](https://digital-strategy.ec.europa.eu/en/policies/cyber-resilience-act)은 2026년 9월부터 보고 의무가 발효되어 EU 내에서 판매되는 제품에 소프트웨어 자재 명세서(SBOM) 생성을 의무화합니다. SBOM은 직접 의존성, 전이적 의존성 및 해당 버전을 포함하여 소프트웨어의 모든 구성 요소를 나열합니다. [SLSA](https://slsa.dev/)(Supply-chain Levels for Software Artifacts)는 소프트웨어가 어떻게 빌드되었는지 검증하여 SBOM을 보완합니다. SBOM은 "이 소프트웨어에 어떤 구성 요소가 포함되어 있는가?"에 답하고, SLSA는 "빌드 프로세스를 신뢰할 수 있는가?"에 답합니다. ```yaml # .github/workflows/supply-chain.yml name: Supply Chain Security on: push: tags: - 'v*' jobs: build-with-provenance: runs-on: ubuntu-latest permissions: contents: read id-token: write attestations: write steps: - uses: actions/checkout@v4 - name: Build container image run: docker build -t myapp:${{ github.ref_name }} . - name: Generate SBOM uses: anchore/sbom-action@v0.17.0 with: image: myapp:${{ github.ref_name }} format: cyclonedx-json output-file: sbom.json - name: Sign with Cosign uses: sigstore/cosign-installer@v3.7.0 - name: Sign image and attach SBOM run: | cosign sign --yes myapp:${{ github.ref_name }} cosign attach sbom --sbom sbom.json myapp:${{ github.ref_name }} cosign sign --yes --attachment sbom myapp:${{ github.ref_name }} ``` Sigstore의 Cosign은 Fulcio 인증 기관이 뒷받침하는 키리스 서명을 사용하여 아티팩트에 서명합니다. 서명은 아티팩트를 이를 생성한 CI 워크플로우에 바인딩하여 이미지가 신뢰할 수 있는 파이프라인에서 왔는지 검증할 수 있습니다. ## 시크릿 탐지: 첫 번째 방어선 하드코딩된 시크릿은 코드베이스에서 가장 흔한 보안 발견 사항입니다. 버전 제어에 커밋된 AWS 액세스 키, 데이터베이스 비밀번호, API 토큰은 모든 규모에서 침해를 일으켜 왔습니다. 시크릿 탐지는 프리커밋에서 실행되어 자격 증명이 저장소에 들어가기 전에 차단합니다. [Gitleaks](https://github.com/gitleaks/gitleaks)는 정규식 패턴과 엔트로피 분석을 사용하여 시크릿을 탐지합니다. 프리커밋 훅은 시크릿이 커밋되는 것을 방지합니다. ```yaml # .pre-commit-config.yaml repos: - repo: https://github.com/gitleaks/gitleaks rev: v8.21.2 hooks: - id: gitleaks args: ['--verbose'] ``` ```yaml # .github/workflows/secrets.yml name: Secrets Detection on: pull_request: jobs: gitleaks: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Gitleaks scan uses: gitleaks/gitleaks-action@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ``` `fetch-depth: 0` 옵션은 전체 기록을 클론하여 Gitleaks가 최신 커밋뿐만 아니라 PR의 모든 커밋을 스캔할 수 있게 합니다. ## DevSecOps 면접 질문: 채용 담당자가 묻는 내용 DevSecOps 면접에서는 보안 지식과 실무 CI/CD 경험 모두를 평가합니다. 아래 질문들은 시니어 DevOps 및 플랫폼 엔지니어링 직무의 2026년 면접에서 자주 출제됩니다. 더 많은 파이프라인 보안 질문은 [CI/CD 파이프라인 보안 면접 모듈](/technologies/devops/interview-questions/cicd-pipeline-security)에서 확인할 수 있습니다. ### "기존 파이프라인에 시프트-레프트 보안을 어떻게 구현하겠습니까?" 시프트-레프트 보안은 테스트를 개발 주기 초기로 이동시키는 것입니다. 실무적 구현에는 시크릿 탐지를 위한 프리커밋 훅, 풀 리퀘스트에서의 SAST 스캔, 빌드 단계에서의 SCA 검사 추가가 포함됩니다. 핵심은 점진적 도입입니다: 시크릿 탐지부터 시작합니다(오탐률이 가장 낮고 신호가 가장 높기 때문). 그 다음 알려진 CVE를 위한 SCA를 추가하고, SAST 규칙을 튜닝하여 노이즈를 줄인 후 차단 검사로 활성화합니다. ### "SAST와 DAST의 차이점을 설명하십시오. 각각 언제 사용하겠습니까?" SAST는 실행 없이 소스 코드를 분석합니다. 코드 구조에 대한 패턴 매칭을 통해 SQL 인젝션, XSS, 안전하지 않은 암호화를 탐지합니다. SAST는 코드만 필요하므로 모든 PR에서 초기에 실행됩니다. DAST는 실행 중인 애플리케이션을 공격합니다. 인증 우회, 접근 제어 결함, 런타임에서만 나타나는 인젝션 취약점을 탐지합니다. DAST는 스테이징 환경에 대해 배포 후 실행됩니다. 두 가지는 서로를 보완합니다. SAST는 병합 전 코딩 오류를 탐지하고, DAST는 배포된 애플리케이션이 안전하게 동작하는지 검증합니다. 성숙한 파이프라인에서는 두 가지 모두 실행합니다. ### "SBOM이란 무엇이며 왜 필요합니까?" 소프트웨어 자재 명세서는 정확한 버전을 포함하여 직접 및 전이적 의존성을 포함한 소프트웨어의 모든 구성 요소를 나열합니다. EU 사이버 복원력법과 같은 규제 요구 사항으로 인해 2026년 9월부터 EU 시장에 진입하는 제품에 SBOM 생성이 의무화됩니다. 실무적으로 SBOM은 신속한 인시던트 대응을 가능하게 합니다. 새로운 CVE가 공개되면 보안 팀은 모든 저장소를 수동으로 스캔하는 대신 SBOM 데이터베이스에 쿼리하여 취약한 구성 요소를 실행하는 모든 서비스를 식별할 수 있습니다. ### "보안 도구에서 알림 피로를 어떻게 방지하겠습니까?" 알림 피로는 신호 대 노이즈 비율이 너무 낮아 개발자가 보안 발견 사항을 무시할 때 발생합니다. 방지를 위해서는 차단 게이트를 활성화하기 전에 각 도구를 튜닝해야 합니다. SAST의 경우 코드베이스에서 오탐을 생성하는 규칙을 비활성화하고 정리 후 점진적으로 활성화합니다. SCA의 경우 알려진 익스플로잇이 있는 CRITICAL 및 HIGH 심각도 발견 사항에 집중합니다. DAST의 경우 향후 스캔에서 오탐을 제외하도록 베이스라인 스캔을 구성합니다. 추적해야 할 지표는 실제 취약점의 수정까지 걸리는 시간입니다. 그 수치가 증가하면 개발자가 알림을 무시하고 있는 것입니다. > **면접 준비** > > 이러한 질문은 실무 경험을 테스트합니다. 특정 도구, 구성 결정, 구현 전후 지표를 포함한 실제 파이프라인에서의 예시를 준비하십시오. ## 컨테이너 및 런타임 보안 컨테이너 이미지 스캔은 배포 전 취약점을 탐지합니다. 런타임 보안은 프로덕션의 컨테이너를 비정상적인 동작에 대해 모니터링합니다. 이 조합은 알려진 취약점(베이스 이미지의 CVE)과 알려지지 않은 위협(손상된 컨테이너, 크립토마이너) 모두를 해결합니다. Trivy는 빌드 파이프라인의 일부로 이미지를 스캔합니다. [Falco](https://falco.org/)는 eBPF를 사용하여 런타임 동작을 모니터링합니다. ```yaml # .github/workflows/container-security.yml name: Container Security on: push: branches: [main] jobs: scan-image: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build image run: docker build -t myapp:${{ github.sha }} . - name: Scan image uses: aquasecurity/trivy-action@0.28.0 with: image-ref: myapp:${{ github.sha }} format: 'table' exit-code: '1' severity: 'CRITICAL' ignore-unfixed: true ``` `ignore-unfixed: true` 플래그는 사용 가능한 패치가 없는 취약점을 건너뜁니다. 이렇게 하면 현재 수정할 수 없는 CVE로 인해 배포가 차단되는 것을 방지합니다. 런타임 보안의 경우 Falco 규칙이 실행 중인 컨테이너 내의 의심스러운 활동을 탐지합니다. [컨테이너 공급망 보안 모듈](/technologies/devops/interview-questions/container-supply-chain)에서 이미지 서명 및 어드미션 컨트롤에 대해 자세히 설명합니다. ## IaC 보안: Terraform 및 Kubernetes 매니페스트 스캔 Infrastructure as Code는 구성 레이어에서 보안 위험을 도입합니다. 과도하게 허용적인 IAM 정책, 공개적으로 접근 가능한 S3 버킷, 암호화되지 않은 데이터베이스는 IaC 템플릿의 안전하지 않은 기본값에서 비롯됩니다. [Checkov](https://www.checkov.io/)는 Terraform, CloudFormation, Kubernetes, Helm, Dockerfile의 잘못된 구성을 스캔합니다. ```yaml # .github/workflows/iac-scan.yml name: IaC Security Scan on: pull_request: paths: - 'terraform/**' - 'k8s/**' - 'helm/**' jobs: checkov: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run Checkov uses: bridgecrewio/checkov-action@v12 with: directory: . framework: terraform,kubernetes,helm output_format: sarif output_file_path: checkov.sarif soft_fail: false - name: Upload SARIF uses: github/codeql-action/upload-sarif@v3 with: sarif_file: checkov.sarif ``` 경로 필터는 인프라 파일이 변경될 때만 IaC 스캔이 실행되도록 하여 애플리케이션 전용 변경에 대한 CI 시간을 단축합니다. ## 2026년의 완전한 DevSecOps 파이프라인 2026년의 프로덕션 준비 DevSecOps 파이프라인은 각 단계에서 이러한 도구를 통합합니다: - **프리커밋**: Gitleaks(시크릿), 선택적 로컬 SAST - **풀 리퀘스트**: Semgrep(SAST), Trivy(SCA), Checkov(IaC) - **빌드**: 컨테이너 이미지 스캔, SBOM 생성 - **배포 전**: Cosign으로 이미지 서명, Kyverno로 어드미션 컨트롤 - **배포 후**: 스테이징에 대한 ZAP으로 DAST - **런타임**: 컨테이너 모니터링을 위한 Falco, 클라우드 보안 포스처 관리 무료 스택(Semgrep, Trivy, ZAP, Gitleaks, Checkov, Falco)은 모든 카테고리를 커버합니다. 상용 도구는 중앙 대시보드, 정책 관리, 튜닝 작업 감소를 추가하지만 보안 커버리지는 라이선스 비용 없이 달성 가능합니다. DevSecOps 직무를 준비하는 분들은 개인 프로젝트에서 이러한 파이프라인을 구축하는 연습을 권장합니다. [클라우드 ID 및 시크릿 관리 모듈](/technologies/devops/interview-questions/cloud-identity-secrets)에서 시크릿 관리 측면을 다룹니다. --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/ko/blog/devops/devops-pipeline-security-sast-dast-2026