Microsoft AZ-400: 보안, 규정 준수 및 DevSecOps — 학습 가이드
다음의 일부입니다: Microsoft DevOps Engineer Expert AZ-400 — 학습 가이드. 검증된 답안으로 연습하기: Microsoft 시험 허브, 또는 다음에서 시간 제한 모의고사 풀기: ExamRoll.io.
개요
Azure 중심의 배포 파이프라인에서 보안, 규정 준수 및 DevSecOps는 위험 탐지를 가능한 가장 초기 단계로 전환하고, 정책을 지속적으로 적용하며, 증거 수집을 자동화해야 합니다. 효과적인 구현은 애플리케이션 보안 테스팅(SAST/DAST/SCA), 시크릿 거버넌스, 코드형 인프라(IaC) 스캐닝, 규제 제어를 CI/CD 라이프사이클에 통합합니다. Azure DevOps와 GitHub에서는 이를 위해 모든 풀 리퀘스트에 대해 분석기를 실행하고, 품질 임계값으로 병합을 제어하며, Azure Key Vault에서 시간 제한이 있는 시크릿을 검색하는 최소 권한 ID로 배포하고, Microsoft Defender for DevOps와 Defender for Cloud로 보안 상태를 지속적으로 모니터링합니다. 목표는 단지 문제를 찾는 것뿐만 아니라, 안전하지 않은 변경 사항이 보호된 리소스에 도달하는 것을 방지하고, 감사 추적을 통해 규정 준수를 증명하며, 안전한 개발 속도를 유지하는 것입니다.
시프트 레프트(Shift-left) 보안, OWASP Top 10 완화, 파이프라인 강화
시프트 레프트(Shift-left) 보안은 PR 시점의 SAST 및 SCA로 시작하며, 프로모션 전 시크릿 스캐닝과 특정 대상을 겨냥한 DAST로 보강됩니다. SAST는 인젝션 지점, 안전하지 않은 역직렬화, 출력 인코딩 누락과 같은 코드 수준의 취약점을 찾아냅니다. SonarQube/SonarCloud 또는 GitHub code scanning(예: CodeQL)을 통합하여 모든 변경 세트를 분석하고, 특정 코드 라인과 연결된 이슈로 풀 리퀘스트를 꾸미며, 취약점 또는 커버리지 임계값을 충족하지 못할 때 빌드를 실패시키는 품질 게이트를 강제합니다. SAST는 다음 OWASP Top 10 클래스에 중점을 둡니다:
- 인젝션(Injection): 파라미터화된 쿼리/ORM 사용을 의무화하고, 입력을 유효성 검사/정규화하며, 동적 SQL/문자열 연결을 금지합니다. 검증된 데이터 접근 헬퍼 사용을 확인하는 SAST 규칙 세트와 단위 테스트를 통해 이를 강제합니다.
- 크로스 사이트 스크립팅(XSS): 출력 인코딩과 콘텐츠 보안 정책(Content Security Policy)을 요구합니다. SAST 오염 분석(taint analysis)은 신뢰할 수 없는 입력이 싱크(sink, 예: innerHTML, Response.Write)로 전달되는 과정을 추적해야 합니다.
- 크로스 사이트 요청 위조(CSRF): 위조 방지 토큰과 SameSite 쿠키 사용을 강제합니다. 파이프라인에서 프레임워크 분석기를 실행하여 미들웨어/설정이 활성화되었는지 확인할 수 있습니다.
- 안전하지 않은 역직렬화: 안전하지 않은 바이너리/XML 직렬화 도구를 허용하지 않고, 허용되는 타입을 제한하며, 안전한 기본값으로 구성된 JSON 직렬화 도구를 선호합니다. SAST 검사와 종속성 정책을 통해 알려진 안전하지 않은 라이브러리의 사용을 방지합니다.
DAST는 스테이징 환경에서 실행 중인 빌드를 검증합니다. 비프로덕션 환경에 배포 후 파이프라인 작업으로 OWASP ZAP 또는 동등한 도구를 자동화하고, 인증된 스캔과 앱 프로필에 맞게 조정된 규칙 세트를 사용합니다. 취약점 기준선을 기반으로 프로모션을 제어합니다. 새로 발견된 높음/치명적(High/Critical) 심각도의 결과가 있으면 차단하고, 승인된 예외는 만료일을 설정하여 유지합니다.
소프트웨어 구성 분석(SCA)은 병합 전에 취약한 서드파티 패키지를 탐지합니다. Dependabot을 사용하여 버전 업데이트 PR을 생성하고, OWASP Dependency-Check를 사용하여 CI에서 SBOM과 CVE 보고서를 생성합니다. 허용/거부 목록(예: 독점 제품에 대한 카피레프트(copyleft) 거부)을 정의하고, 허용되지 않는 라이선스가 포함된 빌드를 실패시켜 라이선스 규정 준수를 강제합니다. 시크릿 스캐닝은 커밋 시점과 CI에서 실행되어야 합니다. GitHub Advanced Security의 시크릿 스캐닝을 도입하거나 Gitleaks/Microsoft Security DevOps를 통합하여 하드코딩된 자격 증명, 토큰, 키를 탐지합니다. 시크릿 패턴이 탐지되면 병합을 차단하고 영향을 받는 자격 증명을 교체합니다.
파이프라인 강화는 타협의 여지가 없습니다. 브랜치 보호를 잠그고, PR 리뷰를 요구하며, SAST/SCA/DAST에 대한 상태 검사를 강제합니다. Azure Pipelines에서는 보호된 리소스, 환경 승인 및 검사, 필수 템플릿을 사용하여 보안 단계를 표준화합니다. 수명이 짧은 최소 권한 토큰을 선호하고, 워크로드 아이덴티티 페더레이션을 사용하여 정적 자격 증명을 완전히 피합니다. 자체 호스팅 에이전트를 프라이빗 네트워크로 제한하고, ID의 범위를 최소화하며, 신뢰할 수 없는 리포지토리에 대해 임의의 스크립트 단계를 허용하지 않는 템플릿을 강제하여 스크립트 인젝션을 비활성화합니다.
시크릿, ID, Azure Key Vault 및 인증서 순환
Azure Key Vault는 시크릿, 키, 인증서를 위한 신뢰할 수 있는 저장소입니다. CI/CD와 직접 통합하여 평문 시크릿을 제거합니다:
- 파이프라인 시크릿: Azure DevOps에서는 필요한 시크릿 이름으로만 범위가 지정된 서비스 연결을 사용하여 변수 그룹을 Key Vault에 연결합니다. 시크릿은 런타임에 검색되며 로그에서는 마스킹됩니다. GitHub Actions에서는 페더레이션 ID와 함께
azure/login을 사용하여 토큰을 얻고 Key Vault를 호출합니다. 리포지토리 설정에 클라이언트 시크릿을 저장하지 마십시오. - 관리 ID 액세스: 가능하면 워크로드 및 배포 에이전트가 관리 ID 또는 워크로드 아이덴티티 페더레이션을 사용하여 Microsoft Entra ID로 인증하도록 하여 시크릿이 저장되지 않게 합니다. 최소 권한 원칙에 따라 RBAC 또는 액세스 정책을 사용하여 Key Vault 액세스 범위를 지정합니다(특정 시크릿 버전에 대해서만
get/list허용,purge/delete금지). - 인증서 순환: 통합된 CA를 통해 자동 순환 기능이 있는 Key Vault Certificates에 TLS/MTLS 인증서를 저장합니다. 사용하는 서비스(App Service, Application Gateway, CSI Secrets Store를 통한 AKS Ingress)가 Key Vault를 참조하도록 구성하여 재배포 없이 갱신된 인증서를 가져오도록 합니다. Key Vault의
certificateNearExpiry이벤트에 Event Grid를 사용하여 바인딩을 검증하고 캐시를 준비하는 자동화 Runbook 또는 Function을 트리거합니다. 배포 매니페스트에서 인증서 버전 사용을 추적하고, 필요 시 버전을 고정하며, 유지 관리 기간 동안 의도적으로 버전을 롤 포워드합니다.
프라이빗 엔드포인트, 방화벽 규칙, 제거 방지(purge protection), 일시 삭제(soft-delete), 감사를 위한 Log Analytics 또는 스토리지 로깅으로 Key Vault를 강화합니다. 명시적으로 정당화되지 않는 한 테넌트 간 액세스를 거부하고, 비상 접근 계정(break-glass accounts)의 액세스 권한을 정기적으로 순환시킵니다.
종속성, 컨테이너, IaC 및 코드로써의 규정 준수
종속성 스캔은 보안 결함과 라이선스를 모두 처리해야 합니다. Dependabot은 지속적으로 보안 업데이트를 제안합니다. 종속성 검토 정책을 사용하여 취약한 버전을 도입하는 PR을 차단하세요. CI에서 OWASP Dependency-Check(또는 npm audit, pip-audit 같은 생태계 네이티브 도구)를 실행하여 SBOM(CycloneDX/SPDX)을 생성하고, 심각도 임계값이나 라이선스 규칙을 위반하면 빌드를 실패시켜야 합니다. 고급 라이선스 거버넌스를 위해서는 법적 정책 시행 및 해결 워크플로우를 지원하는 SCA 플랫폼과 함께 사용하세요.
컨테이너 이미지 보안은 CI에서 시작하여 레지스트리와 런타임에서 계속됩니다.
- Trivy: 파이프라인 단계로 실행하여 Dockerfile과 빌드된 이미지에서 OS/패키지 CVE 및 잘못된 구성을 스캔하고, Critical/High 심각도의 발견 항목이 있으면 빌드를 중단시킵니다. 최소한의 기본 이미지를 사용하고 루트리스(rootless) 컨테이너를 강제합니다.
- Azure Container Registry 취약점 스캔: Microsoft Defender for Containers를 활성화하여 푸시/가져오기 시점 및 예약된 일정에 따라 이미지를 스캔합니다. Defender for Cloud에 발견된 사항을 표시하고, 작업 항목으로 내보내며, 해결되지 않은 Critical/High 문제가 있는 이미지를 차단하는 배포 게이트를 강제합니다.
- Defender for Containers: 런타임 위협 탐지, kube-bench 스타일 검사, 어드미션 컨트롤을 통해 AKS/ECS/Kubernetes로 보호를 확장합니다. 정책을 사용하여 Notation/ACR 콘텐츠 신뢰(content trust)로 서명된 신뢰할 수 있는 ACR에서만 이미지를 풀(pull)하고, CI와 클러스터 어드미션 단계에서 서명을 확인합니다.
IaC 보안은 클라우드 리소스가 기본적으로 안전하게 프로비저닝되도록 보장합니다.
- Checkov 및 tfsec: Terraform 및 Kubernetes 매니페스트를 스캔하여 안전하지 않은 구성(퍼블릭 스토리지, 개방된 보안 그룹, 암호화 누락 등)을 찾습니다. 심각도 임계값에 따라 빌드를 실패시키고, 기존의 기술 부채를 베이스라인으로 설정하여 새롭거나 변경된 리소스에 집중합니다.
- ARM/Bicep 린팅: Bicep 린터(bicepconfig.json)와 ARM Template Tool Kit(arm-ttk)를 활성화하여 태깅, HTTPS 전용 엔드포인트, 고객 관리형 키, 진단 설정에 대한 규칙을 강제합니다. what-if 배포와 결합하여 적용 전에 드리프트(drift)를 탐지합니다.
코드로써의 규정 준수(Compliance as Code)는 Azure Policy와 Defender for Cloud를 사용하여 제어 항목을 지속적으로 적용하고 보고합니다.
- CIS, NIST, ISO 27001 또는 내부 베이스라인에 맞춰진 Azure Policy 이니셔티브를 할당하고, 중요한 가드레일(예: 데이터베이스의 공용 IP)에는 Deny, 진단 설정에는 DeployIfNotExists, 관찰 가능성에는 Audit과 같은 효과(effect)를 선택합니다. 정책 정의를 버전 관리되는 아티팩트로 저장하고, policy-as-code 파이프라인으로 테스트하며, 풀 리퀘스트를 통해 승격시킵니다.
- Defender for Cloud의 규정 준수 대시보드를 사용하여 구독 및 관리 그룹 전반의 제어 준수 상태를 시각화합니다. Azure Monitor와 통합하고 증거 데이터를 Log Analytics 또는 Event Hubs로 내보내 SIEM에서 수집하도록 합니다.
- 감사 추적 유지: 정책 이벤트 및 할당을 위한 Azure Activity Logs, 규정 준수 쿼리를 위한 Resource Graph, 리포지토리 및 파이프라인 변경을 위한 Azure DevOps/GitHub 감사 로그, 파이프라인 실행 아티팩트로 자동 캡처되는 릴리스 증거.
SonarQube/SonarCloud, 파이프라인 보안 및 Microsoft Defender for DevOps
SonarQube/SonarCloud는 엔지니어링 품질과 보안을 일치시키는 강제적인 품질 게이트를 제공합니다. 새 코드에 대한 게이트를 설정하여 “Clean as You Code” 원칙을 채택하십시오: 신규/변경된 라인에 대한 최소 코드 커버리지(예: 80% 이상), 새로운 심각(Critical) 취약점 또는 블로커(blocker) 코드 스멜 제로, 낮은 중복률. 이 게이트를 통과하지 못하면 파이프라인이 실패해야 합니다. JaCoCo, Cobertura, VSTest와 같은 테스트 프레임워크의 커버리지 결과를 게시하고, 보안 핫스팟과 OWASP 준수 규칙을 포함하도록 언어별 품질 프로필을 조정하십시오. 기술 부채 비율과 해결 시간을 추적하고, 팀의 책임감을 높이기 위해 추세를 보고하십시오.
파이프라인 보안은 최소 권한 서비스 연결, 보호된 리소스, 포괄적인 비밀 마스킹에 달려 있습니다:
- 서비스 연결은 좁은 범위(구독/리소스 그룹, 특정 ACR 또는 Key Vault)를 가진 워크로드 아이덴티티 페더레이션 또는 관리 ID를 사용해야 합니다. 소유자가 사용을 승인하도록 서비스 연결 및 환경에 대한 승인 및 검사를 활성화하십시오. “사용” 권한을 신뢰할 수 있는 파이프라인으로 제한하고, “모든 파이프라인에 액세스 권한 부여"는 비활성화하십시오.
- Azure DevOps의 보호된 리소스는 서비스 연결, 변수 그룹, 보안 파일 및 환경을 보호합니다. 승인자, 업무 시간 창, Azure Monitor 쿼리 결과, 외부 REST 정책 엔진과 같은 검사를 요구하십시오. 이를 배포 전의 게이트로, 민감한 정보 읽기(예: 프로덕션 비밀 검색)의 전제 조건으로 취급하십시오.
- 모든 로그에 걸쳐 비밀 마스킹을 강제해야 합니다. 스크립트에서 변수 확장을 제한하고, 비밀을 출력(echo)하지 않도록 하며, PAT를 저장하는 대신
system.accessToken범위의 API를 선호하십시오. 파이프라인 로그에서 우발적인 비밀 유출이 있는지 주기적으로 스캔하고, 탐지 시 순환시키십시오.
Microsoft Defender for DevOps는 GitHub와 Azure DevOps 전반의 리포지토리 및 파이프라인 보안 상태를 통합합니다. 조직/프로젝트를 Defender for Cloud에 연결하여 코드, 비밀, IaC 및 종속성 위험 신호를 수집하고 통합된 권장 사항을 제시합니다. 발견된 사항을 소유자와 연관시키고, 만료 기능이 있는 억제 워크플로를 지원하며, 브랜치 보호, 필수 검토자, 상태 검사의 채택률을 측정합니다. Defender for DevOps를 Microsoft Security DevOps 작업/액션과 함께 사용하여 한 단계에서 여러 분석기(예: Semgrep, Trivy, tfsec, Gitleaks, Bandit)를 오케스트레이션하고 SARIF를 코드 스캐닝에 게시하십시오. Defender for Cloud를 사용하여 DevOps 모범 사례(예: 비밀 스캐닝 활성화, 필수 검토자 수 ≥ 2, 비관리자 병합 비활성화)를 추적하고 강제하는 거버넌스 이니셔티브를 생성하여 리포지토리 위생 수준을 감사 가능한 통제로 격상시키십시오.
실제 문제 시나리오
Spotify는 .NET과 Node.js에 걸쳐 있는 새로운 AKS 호스팅 마이크로서비스 스택의 보안 제공을 표준화해야 합니다. 리포지토리는 GitHub Enterprise Cloud에 있고 배포는 Azure DevOps 다단계 YAML 파이프라인을 통해 이루어집니다. 과제는 병합 전에 취약한 종속성과 잘못 구성된 인프라를 차단하고, 정적 자격 증명을 제거하며, 심각한 CVE가 있는 이미지의 프로모션을 막으면서 감사 가능한 규정 준수 증거를 생성하는 것입니다.
- PR 시점의 SAST/SCA 및 비밀 스캐닝 강제
- PR 데코레이션과 품질 게이트를 갖춘 다국어 SAST를 위해 SonarCloud를 선택합니다. 새 코드 커버리지 ≥ 80% 및 새로운 심각(Critical) 취약점 제로로 설정합니다. Dependabot을 활성화하여 안전한 업그레이드를 자동으로 PR하고, GitHub 종속성 검토는 알려진 CVE를 도입하는 PR을 차단합니다. GitHub Advanced Security 비밀 스캐닝과 CI의 Gitleaks를 함께 사용하여 자격 증명 노출에 대한 심층 방어를 보장합니다.
- 프로모션 전 인증된 DAST 추가
- 시드된 테스트 계정을 사용하여 스테이징 환경을 대상으로 하는 파이프라인 단계에서 OWASP ZAP을 사용합니다. 새로운 높음(High)/심각(Critical) 문제가 나타나면 릴리스 검사가 프로덕션 배포를 차단합니다. ZAP은 OWASP 준수 커버리지와 쉬운 CI 자동화 때문에 선택되었습니다.
- Key Vault 및 워크로드 아이덴티티 페더레이션으로 ID 및 비밀 보호
- 서비스 연결에 대해 서비스 주체 클라이언트 암호를 Microsoft Entra 워크로드 아이덴티티 페더레이션으로 교체하여 저장된 비밀을 제거합니다. 파이프라인은 최소 권한의 get/list 권한을 통해 Azure Key Vault에서 런타임 비밀과 DB 자격 증명을 검색합니다. 이를 통해 장기 자격 증명을 제거하고 순환을 중앙에서 관리합니다.
- 인증서 자동화 구현
- 인그레스 및 mTLS 인증서를 자동 순환 기능이 있는 Key Vault에 저장합니다. AKS는 Secrets Store CSI 드라이버를 통해 인증서를 가져와 비밀을 Kubernetes에 복사하는 것을 방지합니다. Event Grid는 갱신 후 바인딩을 확인하기 위해 Function을 트리거합니다. 이 설계는 다운타임과 순환 시의 인적 오류를 최소화합니다.
- 컨테이너 및 레지스트리 강화
- CI에서 Trivy를 실행하여 Dockerfile과 빌드된 이미지를 스캔하고, 심각(Critical)/높음(High) 등급에서 실패 처리합니다. 정리된 이미지만 ACR에 푸시합니다. Defender for Containers를 활성화하여 푸시 시 및 주기적으로 ACR을 스캔하고, 발견된 사항을 Defender for Cloud에 표시합니다. 정책 기반 릴리스 검사는 해결되지 않은 심각(Critical)/높음(High) CVE가 있는 이미지의 배포를 차단합니다. Trivy는 빠른 피드백을 제공하고, Defender는 지속적이고 레지스트리 네이티브한 보증을 추가합니다.
- IaC 스캔 및 Bicep/ARM 린팅
- Checkov와 tfsec을 사용하여 Terraform 및 Helm 차트를 스캔하고, 태깅, 암호화, 네트워크 제어를 강제합니다. Azure 네이티브 템플릿을 위해 CI에서 Bicep 린터와 ARM TTK를 실행합니다. 검사에 실패하면 병합을 차단하고, 베이스라인은 노이즈를 신규/변경된 리소스로 제한합니다. 이 도구들은 넓은 규칙 커버리지와 강력한 Azure 지원 때문에 선택되었습니다.
- 규정 준수 및 증거 코드화
- CIS Azure 및 회사 베이스라인에 대한 Azure Policy 이니셔티브를 할당합니다. 중요한 가드레일에 대해 Deny를 강제하고, 진단을 위해 DeployIfNotExists를 사용합니다. 결과를 Defender for Cloud의 규제 대시보드로 보냅니다. 불변의 증거를 위해 활동 로그와 Defender 권장 사항을 Log Analytics로 내보냅니다. 정책은 지속적인 강제를 제공하고, 대시보드는 감사에 대비된 뷰를 제공합니다.
- 파이프라인 및 보호된 리소스 잠금
- 서비스 연결을 범위가 지정된 구독/리소스 그룹으로 제한하고, 프로덕션 환경에 대한 환경 승인 및 Azure Monitor 쿼리 검사를 요구합니다. 변수 그룹과 보안 파일을 보호하고, 모든 비밀을 마스킹합니다. 프라이빗 네트워킹으로 자체 호스팅 에이전트를 강화합니다. 이러한 기능은 영향 범위(blast radius)를 줄이고 고위험 작업에 대해 휴먼 인 더 루프(human-in-the-loop)를 보장합니다.
- Microsoft Defender for DevOps로 보안 상태 통합
- GitHub 조직과 Azure DevOps 프로젝트를 Defender for Cloud에 연결하여 코드, 비밀, IaC 관련 발견 사항을 집계하고 리포지토리 보호 기능의 채택을 추적합니다. Microsoft Security DevOps 액션/작업을 사용하여 Semgrep, Trivy, tfsec, Gitleaks를 SARIF 게시와 함께 오케스트레이션하여 서비스 전반에 걸쳐 표준화된 스캐닝을 보장합니다. 이를 통해 위험 관리 및 수정 워크플로를 중앙에서 관리합니다.
각 도구/기능은 가장 이른 시점의 탐지, 자동 강제, 감사 가능성을 위해 선택되었습니다. SonarCloud와 ZAP은 코드 및 런타임 위험을 차단하고, Dependabot과 Trivy는 안전한 업데이트를 가속화하며, Key Vault와 아이덴티티 페더레이션은 정적 비밀을 제거합니다. Checkov/tfsec과 Azure Policy는 드리프트를 방지하고, 보호된 리소스와 승인은 영향 범위를 제어하며, Defender for DevOps와 Defender for Cloud는 통합되고 실행 가능한 보안 상태 관리를 제공합니다.
← 릴리스 관리 및 배포 전략 · 모든 도메인 · 테스트 전략 및 품질 엔지니어링 →
이 문제 연습하기 → · ExamRoll.io에서 시간 제한 연습 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
시험 합격하기 →