Microsoft AZ-500: 컴퓨팅, 컨테이너 및 엔드포인트 보안 — 학습 가이드
다음의 일부입니다: Microsoft Azure Security Engineer Associate AZ-500 — 학습 가이드. 검증된 답안으로 연습하기: Microsoft 시험 허브, 또는 다음에서 시간 제한 모의고사 풀기: ExamRoll.io.
PaaS 컴퓨팅: App Service 및 Functions
기본적으로 안전한(Secure-by-default) 패턴은 PaaS의 공격 표면을 줄입니다.
Azure App Service:
- 인증/권한 부여: App Service 인증을 활성화하여 인증을 Microsoft Entra ID 또는 다른 공급자에게 위임합니다. 표준 OIDC/OAuth2 흐름에는 Easy Auth를 사용한 다음, 모든 경로에 로그인을 강제하여 인증되지 않은 노출을 제거합니다.
- 액세스 제한: IP/CIDR, 서비스 태그 또는 프라이빗 엔드포인트를 통한 가상 네트워크 트래픽으로 트래픽을 허용하거나 거부합니다. scm 엔드포인트와 앱 엔드포인트에 대해 별도의 규칙을 유지하여 배포 플레인을 독립적으로 보호합니다.
- 프라이빗 엔드포인트: VNet의 프라이빗 IP를 통해 앱을 노출하고 선택적으로 퍼블릭 액세스를 비활성화합니다. 프라이빗 DNS 영역을 사용하고 VNet 통합 및 중앙 집중식 이그레스(egress) 방화벽으로 아웃바운드 종속성을 제한합니다.
- 관리형 ID: Key Vault, Storage 및 기타 서비스에 액세스할 때는 시스템 할당 또는 사용자 할당 ID를 사용하는 것이 좋습니다. 이를 통해 내장된 시크릿을 제거하고 중앙 집중식 역할 할당 및 키 순환을 활성화할 수 있습니다.
Azure Functions:
- 키 관리: Functions는 함수 키, 호스트 키, 마스터 키를 사용합니다. 정기적으로 키를 순환하고 외부에서 소비되는 키는 Key Vault에 저장하거나, 가능하다면 키를 적절한 OAuth 흐름으로 대체합니다.
- 네트워크 통합: Function 앱으로의 인바운드 액세스에는 프라이빗 엔드포인트를 사용하고 아웃바운드 제어에는 지역별 VNet 통합을 사용합니다. Functions에서 사용하는 Storage 계정을 선택된 네트워크로만 제한하고 Function의 프라이빗 엔드포인트를 허용된 네트워크에 추가합니다.
- ID: 서비스 간 인증에는 키나 연결 문자열 대신 관리형 ID를 사용합니다. 좁은 범위의 RBAC 할당으로 최소 권한 원칙을 적용합니다.
- 배포 제어: FTPS 전용을 강제하고, scm 사이트의 기본 인증을 비활성화하며, scm IP를 제한하고, 패키지에서 실행(Run From Package)을 사용하여 불변(immutable) 배포를 보장합니다. 워크로드 ID 페더레이션과 CI/CD를 통합하여 수명이 긴 시크릿을 제거합니다.
Kubernetes 및 컨테이너 보안
클러스터와 공급망을 엔드투엔드로 강화합니다.
AKS ID 및 권한 부여:
- Microsoft Entra 통합: AKS용 관리형 AAD를 활성화하여 Entra 토큰 및 그룹을 사용해 kubectl을 인증합니다. 이를 통해 사용자 생명주기와 MFA/조건부 액세스를 중앙에서 관리할 수 있습니다.
- Kubernetes RBAC: Entra 사용자/그룹을 Kubernetes 역할 및 역할 바인딩에 매핑하여 네임스페이스 범위의 최소 권한 원칙을 적용합니다.
- Kubernetes용 Azure RBAC: Azure RBAC가 Kubernetes API 작업을 직접 승인하도록 하려면 기본 제공 역할(예: Azure Kubernetes Service RBAC Viewer/Admin)을 사용합니다. 이를 통해 권한 부여 및 감사를 Azure 컨트롤 플레인과 통합할 수 있습니다.
AKS 네트워킹 및 개인 정보 보호:
- 네트워크 정책: Azure NPM 또는 Calico를 사용하여 파드 간, 파드-서비스 간 트래픽을 강제합니다. 기본적으로 거부하고 필요한 이그레스(egress)만 명시적으로 허용합니다. 코드로 관리하는 정책(policy-as-code)은 측면 이동(lateral movement)을 방지합니다.
- 프라이빗 클러스터: API 서버를 프라이빗으로 만들어 프라이빗 엔드포인트를 통해서만 액세스할 수 있도록 합니다. Azure Bastion/Private Link 및 방화벽 이그레스(egress) 전략(NAT Gateway + UDRs)과 함께 사용하여 관리 플레인을 인터넷에서 격리합니다.
Container Registry(ACR) 보안:
- RBAC: 이미지를 풀(pull)하기만 하는 워크로드에는 AcrPull을 할당하고 빌드 파이프라인에는 AcrPush를 할당하여 과도한 권한을 가진 Owner를 피합니다. AcrPull과 AcrPush는 최소 권한 원칙에 부합합니다.
- 콘텐츠 신뢰 및 서명: cosign으로 이미지에 서명하고, 파드가 시작되기 전에 어드미션 컨트롤(Gatekeeper + Ratify)로 검증을 강제합니다. 이는 변조된 이미지로부터 보호합니다.
- 이미지 스캔: Microsoft Defender for Cloud를 활성화하여 푸시/가져오기 시 및 예약된 일정에 따라 ACR을 스캔합니다. 어드미션 정책을 사용하여 패치되지 않은 심각한 CVE가 있는 이미지의 배포를 차단합니다.
- 격리 패턴: 새 이미지를 격리된 리포지토리 또는 태그로 라우팅하고, 스캔 및 정책 검사를 실행한 다음, 승인 후 리태깅(retagging)하여 승격시킵니다.
- 프라이빗 액세스: 퍼블릭 네트워크 액세스를 비활성화하고 프라이빗 엔드포인트 및 레지스트리 방화벽 규칙을 사용합니다. 디렉터리 역할 대신 리소스 수준의 역할 할당을 사용하여 AKS를 ACR에 연결합니다.
클러스터의 관리형 ID를 사용하여 ACR을 AKS에 연결하는 간단한 예제:
az aks update -g rg-aks -n myAKS --attach-acr myAcrName
- Microsoft Defender for Containers: AKS에 데이터 플레인 센서를 배포하고, Kubernetes 감사 로그 및 런타임 신호를 모니터링하며, 이미지 스캔 결과와 연관 분석합니다. 파드에 대한 의심스러운 실행(exec), 암호화폐 채굴, 노출된 대시보드, 위험한 컨트롤 플레인 작업 등을 탐지합니다. 자동 프로비저닝을 활성화하고 경고를 SIEM/SOAR에 연결하여 분류(triage)합니다.
거버넌스, 정책 및 강제 적용
일관된 제어를 위해서는 배포 시점과 런타임 시점 모두에 정책이 필요합니다.
- 컴퓨팅 및 디스크를 위한 Azure Policy:
- 신뢰할 수 있는 시작(trusted launch) 또는 CMK를 사용한 SSE가 없는 VM의 생성을 거부합니다.
- DeployIfNotExists를 사용하여 엔드포인트 보호를 위한 VM 확장을 강제하고, 필수 에이전트를 자동 설치합니다.
- 게스트 구성 규정 준수를 감사하고, 예약된 일정에 따라 구성 변경(drift)을 수정합니다.
필수 VM 확장이 누락된 경우 배포하기 위한 간단한 정책 스니펫:
"policyRule": {
"if": { "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
"then": {
"effect": "DeployIfNotExists",
"details": {
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "MDE.Windows"
}
}
}
- Kubernetes 어드미션 컨트롤:
- AKS용 Azure Policy 추가 기능은 Gatekeeper(OPA)를 사용하여 어드미션 시점에 파드 사양을 평가합니다. “ACR에서만 풀링”, “권한 있는 컨테이너 금지”, “이미지 서명 필수"와 같은 규칙을 강제합니다.
- 기준(필수) 및 강화(민감한 네임스페이스용)를 위한 별도의 이니셔티브를 유지하여 점진적인 보안 강화를 지원합니다.
레지스트리를 제한하기 위한 간단한 Gatekeeper 제약 조건:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sAllowedRepos
metadata:
name: allowed-acr-only
spec:
parameters:
repos:
- myacr.azurecr.io/
- 운영 주기:
- 탐지: Defender for Cloud 권장 사항 및 워크로드 경고를 구성 변경(drift) 및 위협 신호로 사용합니다.
- 결정: 비즈니스 영향 및 악용 가능성에 따라 분류하고, 태그를 통해 소유자를 할당합니다.
- 적용: 성공적인 파일럿을 거부 정책/어드미션 제약 조건으로 전환하고, 차단된 시도를 측정하여 섀도 IT를 탐지합니다.
실제 문제 시나리오
Adobe Inc.는 결제 마이크로서비스를 Azure로 마이그레이션하고 있습니다. 보안 요구 사항은 제로 퍼블릭 노출, 서명된 이미지만 사용, 그리고 전환 기간 동안 레거시 VM에 대한 시간 제한적 관리자 액세스를 의무화합니다.
- AKS 컨트롤 플레인을 프라이빗으로 설정하고 이그레스(egress)를 잠급니다.
- 근거: 프라이빗 AKS API 서버는 관리 플레인을 인터넷에서 제거합니다. 명시적인 아웃바운드 규칙이 있는 NAT Gateway와 Azure Firewall은 워크로드가 승인된 엔드포인트(ACR, Key Vault, Microsoft 패키지 리포지토리)에만 도달하도록 보장합니다.
- 서명된 이미지를 강제하고 레지스트리를 제한합니다.
- 근거: myacr.azurecr.io의 이미지만 허용하고 Ratify로 검증된 cosign 서명을 요구하는 제약 조건으로 Gatekeeper를 구성합니다. 이를 통해 변조되거나 신뢰할 수 없는 이미지의 실행을 방지하여, 주요 공급망 위험을 차단합니다.
- 프라이빗 엔드포인트와 최소 권한 역할로 ACR을 보호합니다.
- 근거: 퍼블릭 네트워크 액세스를 비활성화하고 AKS VNet의 프라이빗 엔드포인트를 통해 ACR을 노출합니다. AKS 관리 ID에는 AcrPull 권한만 부여하고, 빌드 파이프라인에는 AcrPush 권한을 부여합니다. 이는 최소 권한 원칙을 따르며 인터넷 의존성을 제거합니다.
- Defender for Containers와 ACR 이미지 스캐닝을 활성화합니다.
- 근거: 푸시 시 지속적인 이미지 스캔과 런타임 위협 탐지는 계층적인 보호를 제공합니다. 경고는 잘못된 구성, 알려진 취약점, 의심스러운 동작을 통합하여 신속한 대응을 가능하게 합니다.
- App Service 기반 관리 도구를 인증 및 프라이빗 액세스로 보호합니다.
- 근거: Microsoft Entra ID와 함께 App Service Authentication을 사용하여 MFA 및 조건부 액세스를 요구합니다. 관리 앱을 위한 프라이빗 엔드포인트를 생성하고 scm 액세스를 별도로 제한합니다. 관리 ID를 사용하면 Key Vault 액세스를 위한 시크릿이 필요 없어집니다.
- 전환 기간 동안 레거시 호스트에 Just-in-Time(JIT) VM 액세스를 사용합니다.
- 근거: JIT는 기본적으로 RDP/SSH를 닫고, 승인된 요청에 대해서만 제한된 시간 동안 엽니다. 이는 노출 시간을 엄격하게 제한하면서도 비상 액세스는 보존합니다.
- 암호화 선택을 표준화합니다: 디스크에는 CMK를 사용한 SSE, VM에는 Trusted Launch를 사용합니다.
- 근거: CMK를 사용한 SSE는 운영 부담을 최소화하고 Key Vault에서 키 수명 주기를 중앙 집중화하는 반면, Trusted Launch/vTPM은 부팅 무결성 및 키 보호를 추가합니다. ADE는 게스트 기반 암호화 도메인 증거가 계약상 요구되는 경우에만 사용합니다.
- Azure Policy와 어드미션 컨트롤을 가드레일로 적용합니다.
- 근거: Azure Policy 이니셔티브는 신뢰할 수 있는 시작, 필수 VM 확장, 퍼블릭 ACR/Function 액세스 거부를 강제합니다. Gatekeeper 제약 조건은 AKS에 대한 런타임 어드미션 검사를 구현합니다. 이 둘은 팀이 반복 작업을 수행하는 동안 구성이 규정을 준수하도록 보장합니다.
- 지속적인 거버넌스로 검증하고 운영합니다.
- 근거: Defender for Cloud 및 MDE 경고를 Adobe의 SIEM에 연결하고, 정책 효과(거부 대 감사)를 측정하며, 매월 예외 사항을 검토합니다. 이를 통해 일회성 통제를 지속적인 보안 운영 모델로 전환합니다.
← 네트워크 보안 아키텍처 · 모든 도메인 · 데이터 →
이 문제 연습하기 → · 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.
시험 합격하기 →