BÀI 06 — BÀI CUỐI ~4 giờ Giai Đoạn 1 — Trung Cấp

Identity, Security, Cost & Governance

Microsoft Entra ID, RBAC, Zero Trust, Defender for Cloud. Cost Management, Budget Alerts. Azure Policy, Resource Locks, Tags — quản trị cloud chuyên nghiệp. Bài cuối cùng hoàn thiện lộ trình AZ-900.

Lý Thuyết Cốt Lõi

1. Microsoft Entra ID

Cập nhật 2026: Microsoft đã đổi tên Azure Active Directory (Azure AD) thành Microsoft Entra ID từ tháng 10/2023. Tên cũ "Azure AD" không còn xuất hiện trong tài liệu Microsoft và giao diện Portal. Trong kỳ thi AZ-900 bản 14/01/2026, tất cả câu hỏi dùng tên Microsoft Entra ID.

Dịch vụ Identity & Access Management (IAM) cloud-based của Microsoft. Là nền tảng authentication và authorization cho Azure, Microsoft 365, và bất kỳ ứng dụng nào tích hợp OAuth/OpenID Connect/SAML.

Authentication vs Authorization
AuthN

Xác thực danh tính: "Bạn là ai?" — kiểm tra username/password, MFA, certificate. Entra ID xác thực user/device/app.

AuthZ

Cấp quyền: "Bạn được làm gì?" — RBAC role xác định quyền truy cập resource sau khi đã xác thực.

Tính năng chính Entra ID
  • MFA: Xác thực đa yếu tố — SMS, Authenticator app, FIDO2 key
  • SSO: Đăng nhập một lần, dùng nhiều app (Azure, M365, Salesforce, v.v.)
  • Conditional Access: Policy điều kiện — chặn login từ nước ngoài, yêu cầu MFA khi nguy cơ cao
  • B2B/B2C: Mời partner bên ngoài hoặc quản lý identity khách hàng

Role-Based Access Control (RBAC)

Built-in RoleQuyền hạnDùng cho
OwnerToàn quyền, bao gồm gán roleSubscription admin
ContributorTạo/sửa/xóa resource, KHÔNG gán roleDev team lead
ReaderChỉ xem, không thay đổiAuditor, analyst
User Access AdminGán/thu hồi role, không tạo resourceIAM admin
Custom RoleTự định nghĩa permission granularLeast privilege theo nghiệp vụ
RBAC Scope (phạm vi áp dụng): Management Group → Subscription → Resource Group → Resource. Role gán ở cấp cao kế thừa xuống cấp thấp.

2. Zero Trust, Defender for Cloud & Key Vault

Zero Trust

Nguyên tắc: "Never trust, always verify". Không tin tưởng bất kỳ request nào dù trong network nội bộ. Mỗi request đều phải xác thực, kiểm tra device compliance, cấp quyền tối thiểu.

  • • Verify explicitly (MFA, device health)
  • • Least privilege access
  • • Assume breach (monitor, alert)
Defender for Cloud

Cloud Security Posture Management (CSPM) + Cloud Workload Protection (CWP). Đánh giá cấu hình sai, phát hiện threat, đề xuất khắc phục. Secure Score: điểm bảo mật 0–100%.

  • • Continuous security assessment
  • • Threat intelligence
  • • Just-in-time VM access
Azure Key Vault

Lưu trữ bí mật an toàn: API keys, passwords, certificates, encryption keys. FIPS 140-2 Level 2. Audit log mọi truy cập. App đọc secret qua managed identity — không hard-code credential trong code.

  • • Secrets Management
  • • Key Management (HSM)
  • • Certificate Management

3. Cost Management & Tối Ưu Chi Phí

Các công cụ quản lý chi phí

Cost Analysis: Phân tích chi phí theo resource group, tag, service, location. Xuất báo cáo CSV/Excel.
Budget Alerts: Đặt ngưỡng chi phí (50%, 80%, 100%) — gửi email cảnh báo hoặc trigger Action Group.
Pricing Calculator: Ước tính chi phí trước khi deploy. Xuất estimate PDF để trình ban lãnh đạo.
TCO Calculator: So sánh chi phí on-premises vs Azure trong 3 năm để justify migration.

Chiến lược tiết kiệm chi phí

Reserved Instances (RI)

Cam kết 1 hoặc 3 năm → tiết kiệm đến 72% so với PAYG. Dùng cho workload ổn định.

Spot VMs

VM giá rẻ (đến 90% off) dùng capacity nhàn rỗi của Azure. Có thể bị thu hồi 30s trước. Phù hợp batch job, rendering.

Azure Hybrid Benefit

Dùng Windows Server/SQL Server license có sẵn (có Software Assurance) trên Azure → tiết kiệm đến 85%.

Right-sizing

Azure Advisor đề xuất VM quá lớn so với mức dùng thực tế. Downsize hoặc auto-shutdown VM dev ngoài giờ.

4. Governance — Azure Policy & Resource Locks

Azure Policy

Quy tắc tự động enforce trên tài nguyên. Có thể Audit (báo cáo vi phạm), Deny (từ chối tạo), hoặc DeployIfNotExists (tự sửa).

Ví dụ:
• Require tag Environment
• Only allow SEA region
• Enforce HTTPS on storage
• VM phải có backup
Resource Locks

Khóa tài nguyên tránh vô tình xóa hoặc thay đổi. Áp dụng ở Subscription, Resource Group, hoặc Resource level.

CanNotDelete: Đọc và cập nhật OK, chỉ chặn xóa.
ReadOnly: Chỉ đọc — chặn cả cập nhật và xóa.
Microsoft Purview & Compliance

Nền tảng governance dữ liệu toàn diện. Data catalog, data lineage, sensitivity labels. Azure tuân thủ 100+ chứng chỉ compliance:

ISO 27001 SOC 2 GDPR PCI DSS HIPAA FedRAMP

Bài Tập Thực Hành (Lab)

Bài viết AZ CLI sẽ khó hiểu hơn, hãy đọc hướng dẫn bằng Portal trước để dễ hình dung nhé. Link bên dưới ..
Thực hành trên Azure Portal Tải hướng dẫn click-by-click (.docx)
Lab 06-A: Budget Alert Lab 06-B: RBAC Role Assignment Lab 06-C: Resource Lock Lab 06-D: Cost Analysis
1

Tạo Resource Group và Budget Alert

Bash — Linux / macOS / Azure Cloud Shell (KHÔNG chạy trên CMD Windows)
# Tạo resource group lab
# =========================
# Lab 06 - AZ-900 Governance & Cost Management
# Cloud Shell Bash / Linux / macOS
# =========================

RG_NAME="rg-az900-lab06"
LOCATION="southeastasia"
BUDGET_NAME="budget-learning-10usd"
CONTACT_EMAIL="[email protected]"
USER_EMAIL="[email protected]"

# 1. Tạo Resource Group
az group create \
  --name "$RG_NAME" \
  --location "$LOCATION"

# 2. Lấy Subscription ID
SUB_ID=$(az account show --query id -o tsv)
echo "Subscription ID: $SUB_ID"

# 3. Tạo Budget Notification file
cat > budget-notifications.json << EOF
{
  "Actual_GreaterThan_80_Percent": {
    "enabled": true,
    "operator": "GreaterThan",
    "threshold": 80,
    "contactEmails": [
      "$CONTACT_EMAIL"
    ],
    "thresholdType": "Actual"
  },
  "Actual_GreaterThan_100_Percent": {
    "enabled": true,
    "operator": "GreaterThan",
    "threshold": 100,
    "contactEmails": [
      "$CONTACT_EMAIL"
    ],
    "thresholdType": "Actual"
  }
}
EOF

cat > budget-time-period.json << EOF
{
  "startDate": "2026-05-01",
  "endDate": "2026-12-31"
}
EOF

# 4. Tạo Budget có Alert
az consumption budget create-with-rg \
  --budget-name "$BUDGET_NAME" \
  --resource-group "$RG_NAME" \
  --amount 10 \
  --category Cost \
  --time-grain Monthly \
  --time-period @budget-time-period.json \
  --notifications @budget-notifications.json

# 5. Lấy Object ID của user
USER_OID=$(az ad user show \
  --id "$USER_EMAIL" \
  --query id \
  -o tsv)

if [ -z "$USER_OID" ]; then
  echo "Không tìm thấy user: $USER_EMAIL"
  echo "Hãy thay USER_EMAIL bằng email user thật trong Microsoft Entra ID."
  exit 1
fi

# 6. Gán Reader role ở scope Resource Group
az role assignment create \
  --assignee-object-id "$USER_OID" \
  --assignee-principal-type User \
  --role "Reader" \
  --scope "/subscriptions/$SUB_ID/resourceGroups/$RG_NAME"

# 7. Liệt kê role assignment
az role assignment list \
  --resource-group "$RG_NAME" \
  --query "[].{Principal:principalName,Role:roleDefinitionName,Scope:scope}" \
  --output table

# 8. Xem một số built-in roles
az role definition list \
  --query "[?roleType=='BuiltInRole'].{Name:roleName}" \
  --output table | head -20

# 9. Tạo Resource Lock
az lock create \
  --name "lock-no-delete-lab06" \
  --resource-group "$RG_NAME" \
  --lock-type CanNotDelete \
  --notes "Lock created for AZ-900 lab - do not remove during training"

# 10. Xem lock
az lock list \
  --resource-group "$RG_NAME" \
  --output table

# 11. Xem Cost Usage
az consumption usage list \
  --start-date "2026-05-01" \
  --end-date "2026-05-31" \
  --query "[].{Service:instanceName,Cost:pretaxCost,Currency:currency}" \
  --output table || echo "No usage data yet or this subscription does not support this API."

# 12. Xem budget
az consumption budget list \
  --resource-group "$RG_NAME" \
  --output table

Cleanup (xóa lock trước khi xóa resource group)

Bash — Linux / macOS / Azure Cloud Shell (KHÔNG chạy trên CMD Windows)
# Xóa lock (nếu chưa xóa ở bước trên)
az lock delete --name "lock-no-delete-lab06" \
  --resource-group rg-az900-lab06 2>/dev/null

# Xóa resource group
az group delete --name rg-az900-lab06 --yes --no-wait

echo "Cleanup done. Congratulations — AZ-900 lab series complete!"

Kết Quả Đầu Ra

Output: Budget đã tạo

Kết quả (Output)
{
  "amount": 10.0,
  "category": "Cost",
  "currentSpend": {"amount": 0.0, "unit": "USD"},
  "id": "/subscriptions/<sub-id>/resourceGroups/rg-az900-lab06/providers/Microsoft.Consumption/budgets/budget-learning-10usd",
  "name": "budget-learning-10usd",
  "notifications": {
    "Actual_GreaterThan_80_Percent": {"enabled": true, "threshold": 80.0},
    "Actual_GreaterThan_100_Percent": {"enabled": true, "threshold": 100.0}
  },
  "timeGrain": "Monthly"
}

Output: RBAC Role Assignments

Kết quả (Output)
Principal          Role        Scope
-----------------  ----------  --------------------------------------------------
dev.user@...       Reader      /subscriptions/.../resourceGroups/rg-az900-lab06
your.account@...   Owner       /subscriptions/<sub-id>

Output: Resource Lock

Kết quả (Output)
Name                    Level          Notes
----------------------  -------------  -----------------------------------
lock-no-delete-lab06    CanNotDelete   Lock created for AZ-900 lab

Verify trên Portal

Cost Management + Billing → Budgets: xem budget-learning-10usd. IAM → Role assignments: xem Reader assignment. Resource groups → rg-az900-lab06 → Locks: xem CanNotDelete lock.

Ứng Dụng Thực Tế

Tình huống 1 — Công ty công nghệ 50 nhân viên

Kiểm soát chi phí team dev bằng Budget + Tag

Tình huống

Dev team tạo VM test tùy tiện, quên xóa. Cuối tháng bill tăng đột biến từ $200 lên $800 mà không ai biết tại sao.

Giải pháp

Budget $300/tháng → alert email ở 70% và 100%. Azure Policy bắt buộc tag Owner trên mọi resource. Cost Analysis theo tag Owner để quy trách nhiệm.

Lợi ích

Bill ổn định lại $220/tháng. Mỗi dev tự chịu trách nhiệm tài nguyên của mình. Không cần CTO monitor hàng ngày.

Tình huống 2 — Tập đoàn 5 công ty con

Phân quyền RBAC theo phòng ban, enforce Policy

Tình huống

5 công ty con dùng chung 1 Azure subscription. Cần cô lập quyền, đảm bảo công ty A không xóa tài nguyên công ty B.

Giải pháp

Mỗi công ty = 1 Resource Group. IT admin = Contributor của RG mình. Azure Policy: chỉ cho phép region Southeast Asia và East Asia. Resource Lock Production RG.

Lợi ích

Không thể xảy ra sự cố "xóa nhầm". Compliance tập trung quản lý từ Management Group cấp tập đoàn. Audit trail đầy đủ qua Activity Log.

Tình huống 3 — Công ty fintech cần PCI DSS compliance

Zero Trust + Key Vault cho ứng dụng thanh toán

Tình huống

App thanh toán lưu API key ngân hàng trong code và config file. Developer có thể xem credential. Không đáp ứng PCI DSS.

Giải pháp

Key Vault lưu toàn bộ secret. App dùng Managed Identity đọc secret — không cần credential. Conditional Access: chỉ IP danh sách trắng. Entra ID MFA bắt buộc.

Lợi ích

Zero credential trong code. Audit log Key Vault cho phép biết ai đọc secret lúc nào. Đáp ứng PCI DSS Level 1. Defender for Cloud Secure Score tăng từ 45% lên 82%.

Chúc mừng! Bạn đã hoàn thành AZ-900 GĐ0-1

Bạn đã học xong 6 bài, nắm vững nền tảng Cloud Computing, Azure Architecture, Compute, Networking, Storage, Identity và Governance. Sẵn sàng thi chứng chỉ AZ-900!

Zalo