AZ-400 시험에서 보안 스캔 자동화 파트는 '어떤 도구를 어느 단계에 배치해야 하는가'를 묻습니다. SAST·SCA·DAST의 차이, GitHub Advanced Security(GHAS)의 구성 요소, Dependabot의 두 가지 동작 모드, Microsoft Defender for DevOps 커넥터의 역할이 핵심입니다. 보안을 마지막 관문이 아닌 코드 작성 시점부터 내재화하는 shift-left 전략이 시험 전반에 깔린 설계 원칙입니다.
보안 스캔 카테고리 — SAST, DAST, SCA, IaC
공항 보안 검색대를 생각해보세요. 체크인 때 위탁 수하물 엑스레이, 탑승구 몸수색, 기내 승무원 모니터링 — 단계마다 다른 도구가 다른 대상을 검사합니다. DevSecOps의 보안 스캔도 마찬가지입니다.
SAST(Static Application Security Testing): 코드를 실행하지 않고 소스 코드를 정적으로 분석합니다. SQL Injection, XSS, 하드코딩된 시크릿 등을 탐지하며 빌드 단계에서 실행됩니다. CodeQL이 대표적입니다. DAST(Dynamic Application Security Testing): 실행 중인 앱에 실제 HTTP 요청을 보내 외부 공격자 관점에서 취약점을 탐지합니다. 배포된 스테이징 환경이 필요하므로 CD 단계 이후에 위치합니다. SCA(Software Composition Analysis): 오픈소스 라이브러리의 CVE와 라이선스를 분석합니다. 같은 의존성 파일을 파싱해 GitHub Advisory Database와 대조합니다. Dependabot이 대표적입니다. IaC 스캔: ARM, Bicep, Terraform의 보안 구성 오류를 배포 전에 탐지합니다. Checkov, tfsec, Template Analyzer가 담당합니다. 컨테이너 이미지 스캔: Docker 이미지의 CVE를 탐지합니다. 이미지 푸시 시점과 런타임 두 단계 모두 스캔이 필요합니다.
SAST는 내가 쓴 코드의 결함, SCA는 가져다 쓴 라이브러리의 취약점, DAST는 배포 후 동작 중인 앱의 허점을 각각 담당합니다. 서로 대체 관계가 아닙니다.
!보안 스캔 4가지 범주: SAST, DAST, SCA, IaC
GitHub Advanced Security — CodeQL과 Secret Scanning
식품 공장을 떠올려보세요. 원재료 입고 검사(CodeQL), 가공 중 모니터링(secret scanning), 출하 전 최종 검수(dependency review) — GHAS도 이 세 단계 구조로 저장소 보안을 레이어합니다.
CodeQL은 GHAS의 핵심 SAST 엔진으로, 소스 코드를 관계형 데이터베이스로 변환한 뒤 쿼리 언어(QL)로 취약점 패턴을 검색합니다. Init → Autobuild → Analyze 세 단계로 동작하며, 파일 하나로 활성화됩니다. 분석 결과는 GitHub Security 탭의 code scanning alerts로 집계되고 pull request에 인라인 코멘트로 표시됩니다. PR code scanning 비교 기능이 동작하려면 base branch()에 CodeQL 결과가 반드시 존재해야 합니다. 없으면 오류가 발생하므로, default branch push 트리거로 최소 1회 실행해 기준 결과를 만들어둡니다.
secret scanning은 커밋된 자격 증명 패턴을 탐지합니다. secret scanning partner program은 100개 이상의 파트너사 토큰을 감지해 발급자에게 즉시 API 알림을 보내 자동 무효화를 트리거합니다. push protection은 자격 증명 패턴이 포함된 push를 서버 측에서 사전 차단합니다. 시험 구분: → secret scanning partner program, → push protection.
Dependabot — Security Updates와 Version Updates
자동차 리콜과 정기 검사를 생각해보세요. 리콜이 발생하면 제조사가 즉시 연락해 수리를 권고하고(security updates), 1년 주기 정기 검사는 스케줄대로 진행됩니다(version updates). Dependabot도 이 두 모드를 독립적으로 운영합니다.
Dependabot alerts는 GitHub Advisory Database 또는 NVD에 새 CVE가 등록·업데이트될 때 트리거됩니다. push나 pull request 생성은 직접 트리거가 아닙니다. 심각도는 CVSSv3 기준 Critical/High/Medium/Low 4단계입니다.
Dependabot security updates는 취약한 의존성이 탐지되면 수정 버전으로 업그레이드하는 PR을 자동 생성하고 CI를 트리거해 호환성을 검증합니다. Dependabot version updates는 보안과 무관하게 의존성을 최신 버전으로 유지하는 자동화로, 에 생태계와 스케줄을 정의합니다. 를 설정하지 않으면 PR이 수십 개씩 쌓여 팀이 모두 무시하게 되므로 주의가 필요합니다.
Microsoft Defender for DevOps와 컨테이너 스캔
도시 전체 CCTV를 한 관제실에서 통합 모니터링하는 장면처럼, Microsoft Defender for DevOps는 코드·파이프라인·클라우드 인프라의 보안 상태를 Defender for Cloud 대시보드 하나에서 통합 관리합니다. Azure DevOps·GitHub 조직을 DevOps Security 커넥터로 연결하고, Microsoft Security DevOps(MSDO) task를 파이프라인에 추가하면 됩니다.
MSDO task는 Credential Scanner(자격 증명 노출), Binskim(바이너리 보안 분석), Template Analyzer(ARM·Bicep 구성 오류 탐지)를 통합 실행합니다. Microsoft Defender for Containers는 ACR 이미지 푸시 시 CVE 스캔(배포 전)과 AKS 런타임 지속 스캔(배포 후) 두 단계를 통합 제공합니다. GHAS는 코드·저장소 레벨 보안, Defender for Cloud는 클라우드 인프라·런타임 보안을 각각 담당하며, Defender for DevOps 커넥터가 두 영역을 단일 대시보드로 연결합니다.
파이프라인 통합 — Gate, Fail-Fast, Baseline
건물 출입 시스템을 생각해보세요. 일반 직원은 카드 태그, 서버실은 지문 인증, 특정 구역은 전면 차단 — 중요도에 따라 다른 수준의 게이트를 설계합니다. 보안 스캔도 심각도에 따라 다르게 처리합니다.
Critical·High는 빌드를 즉시 실패(fail-fast), Medium은 경고 후 진행, Low·informational은 보고서에만 기록합니다. baseline 설정은 레거시 코드베이스 도입 시 필수입니다. 기존 이슈를 모두 차단으로 설정하면 팀이 마비되므로, GitHub code scanning의 옵션으로 신규 커밋에서 추가된 취약점만 차단합니다. Azure Policy 준수 스캔은 task를 release pipeline 배포 단계 이후에 추가해 on-demand 평가합니다. Audit 정책은 비준수를 기록만 하고, Deny 정책은 배포 자체를 차단합니다.
시험 핵심 정리
"코드 레벨 취약점, 실행 없이 분석" -- SAST (CodeQL) "실행 중인 앱, HTTP 요청으로 탐지" -- DAST (OWASP ZAP) "오픈소스 의존성 CVE·라이선스" -- SCA (Dependabot, Mend Bolt) "push 직전 자격 증명 차단" -- GHAS Push Protection "커밋 후 파트너사 자동 무효화" -- Secret Scanning Partner Program "Advisory DB 업데이트가 트리거, push/PR은 트리거 아님" -- Dependabot alerts "보안 무관 의존성 최신 버전 유지" -- Dependabot version updates "ARM·Bicep·Terraform 구성 오류 배포 전 탐지" -- Template Analyzer / Checkov / tfsec "ACR 푸시 + AKS 런타임 두 단계 컨테이너 스캔" -- Microsoft Defender for Containers "Azure DevOps + GitHub 보안 결과 단일 대시보드" -- Microsoft Defender for DevOps "signed image / Content Trust / ACR" -- ACR Premium SKU 전용 "PR 단계 조기 피드백, SAST 위치" -- Build pipeline (Release pipeline 아님)
shift-left = 코드 커밋 시점부터 보안 검사, GHAS = 저장소 레벨 통합 보안 플랫폼.