Labs thiên về validation và decision evidence
Không lab nào yêu cầu tạo resource trả phí. Chỉ đánh dấu PASS trong EVIDENCE.md sau khi lưu command, output và kết luận có thể tái lập.
what-if, Policy và RBAC có thể cần Azure login; nếu không có, hoàn thành phần static/tabletop và ghi trạng thái BLOCKED/NOT RUN.Lab 1 · Bicep static validation
Mục tiêu: phát hiện syntax/type/configuration issue trước deployment.
- Tạo Bicep tối thiểu gồm VNet, subnet và diagnostic settings bằng parameter; không hard-code subscription ID/secret.
- Chạy
az bicep build --file main.bicepvàaz bicep lint --file main.bicep. - Nếu có sandbox, chạy
az deployment sub what-ifhoặc resource-group what-if với scope hợp lệ; không execute deployment. - Lưu version, exit code, stdout/stderr, diff dự kiến và kết luận.
PASS: build/lint sạch và what-if (nếu chạy) không có delete/unexpected scope.
Lab 2 · Terraform static validation
Mục tiêu: kiểm tra module không cần provision.
- Tạo module Azure nhỏ với provider constraint, typed variables, tags và outputs không nhạy cảm.
- Chạy
terraform fmt -check -recursive,terraform init -backend=false,terraform validate. - Nếu provider download không khả dụng, ghi BLOCKED thay vì PASS; không dùng output giả.
- Review plan assumptions: provider version, state ownership, secret handling và destructive changes.
PASS: fmt/validate exit 0 và assumptions được ghi.
Lab 3 · Azure Policy reasoning
Mục tiêu: thiết kế guardrail có test cases.
- Viết policy yêu cầu approved locations hoặc deny public network access cho một resource type.
- Tạo bảng ít nhất 6 cases: missing field, compliant, non-compliant, exempt, existing resource và child resource.
- Trace condition/effect; xác định alias, mode, scope, assignment parameter và remediation need.
- Lập rollout audit → measured impact → exemption → deny.
PASS: mọi case có expected result/rationale và không nhầm Policy với RBAC.
Lab 4 · RBAC/PIM threat review
Mục tiêu: suy ra effective access và giảm standing privilege.
- Dựng bảng principals, groups, role definitions, scopes và inherited assignments cho một workload giả lập.
- Tìm quyền rộng từ group nesting, subscription scope, custom role wildcard và service principal stale.
- Chuyển privileged roles sang PIM eligible với activation duration, MFA, approval và alert.
- Thiết kế break-glass test và quarterly access review.
PASS: bảng before/after chỉ rõ access path, owner và residual risk.
Lab 5 · Network/DNS tabletop
Mục tiêu: debug private endpoint theo packet/name path.
- Vẽ client → resolver → private DNS zone → private endpoint → service; thêm hub, on-prem forwarder và route.
- Inject ba lỗi: zone chưa link, stale public answer và forced-tunnel asymmetric path.
- Với mỗi lỗi ghi query/route/effective-rule evidence cần thu và cách phân biệt.
- Kiểm tra public network access và egress/SNAT assumptions.
PASS: mỗi hypothesis có falsification evidence và remediation cụ thể.
Lab 6 · Quota và scaling pre-mortem
Mục tiêu: chứng minh scale/DR không bị quota ẩn chặn.
- Chọn workload giả lập, liệt kê normal/peak/zone-loss/region-failover capacity.
- Lập quota matrix theo subscription, region, VM family hoặc service SKU và deployment API limits.
- Tính headroom, provisioning lead time và fallback SKU/region.
- Thiết kế alerts tại 70/85/95% và owner cho quota request.
PASS: mọi recovery scenario có capacity source, threshold và escalation.
Lab 7 · DR tabletop
Mục tiêu: kiểm tra runbook end-to-end không thực hiện failover.
- Chọn scenario mất primary region và tạo dependency graph.
- Gán incident commander, trigger, RTO/RPO, decision checkpoints và communication.
- Walk through data recovery, secrets, quota, compute, DNS/traffic, validation và failback.
- Ghi timing, assumption thất bại, gap và action owner/deadline.
PASS: elapsed timeline nằm trong/ngoài RTO được chứng minh; tabletop không được ghi là failover test thật.
Lab 8 · Security incident + FinOps review
Mục tiêu: nối detection, containment và cost signal.
- Scenario: managed identity bị lạm dụng và log ingestion/cost tăng bất thường.
- Viết KQL/pseudocode queries cần dùng, preservation steps, containment order và credential/role recovery.
- Lập cost allocation theo owner/environment/service và unit metric; phân biệt attack cost với baseline growth.
- Tạo post-incident actions cho alert, least privilege, retention và budget anomaly.
PASS: quyết định containment bảo toàn evidence; cost action không làm mất security telemetry cần thiết.
Evidence integrity và runtime claim boundary
NOT RUN cho đến khi có artifact thực tế. Planned command, tabletop conclusion hoặc sample output không chứng minh Azure resource đã deploy hay runtime control đã hoạt động.| Lab | Status ban đầu | Evidence tối thiểu |
|---|---|---|
| 1. Bicep static validation | NOT RUN | Command output |
| 2. Terraform static validation | NOT RUN | Command output |
| 3. Azure Policy reasoning | NOT RUN | Test-case artifact |
| 4. RBAC/PIM threat review | NOT RUN | Before/after access matrix |
| 5. Network/DNS tabletop | NOT RUN | Hypothesis matrix |
| 6. Quota/scaling pre-mortem | NOT RUN | Quota matrix |
| 7. DR tabletop | NOT RUN | Exercise timeline |
| 8. Security incident + FinOps | NOT RUN | Incident record |
Evidence template
Lab:
Date/time (timezone):
Operator:
Environment/scope:
Cost guardrail:
Tool versions:
Inputs and assumptions:
Commands or tabletop injects:
Exit codes:
Raw output/artifact paths:
Expected result:
Observed result:
Conclusion: PASS | FAIL | BLOCKED
Limitations (what this does not prove):
Follow-up owner/date:az bicep build, lint, Terraform format và validate chỉ chứng minh syntax/schema checks cục bộ.what-ifhoặcterraform plandự đoán control-plane changes; không chứng minh deployment hoặc runtime behavior.- Policy/RBAC reasoning chỉ chứng minh model đã review; effective tenant state cần authenticated queries.
- Tabletop exercise giúp lộ runbook gaps; không chứng minh measured RTO/RPO, failover, recovery, alert delivery hoặc control effectiveness.