Lý Thuyết Cốt Lõi
1. 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.
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.
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.
- 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 Role | Quyền hạn | Dùng cho |
|---|---|---|
| Owner | Toàn quyền, bao gồm gán role | Subscription admin |
| Contributor | Tạo/sửa/xóa resource, KHÔNG gán role | Dev team lead |
| Reader | Chỉ xem, không thay đổi | Auditor, analyst |
| User Access Admin | Gán/thu hồi role, không tạo resource | IAM admin |
| Custom Role | Tự định nghĩa permission granular | Least privilege theo nghiệp vụ |
2. Zero Trust, Defender for Cloud & Key Vault
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)
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
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í
Chiến lược tiết kiệm chi phí
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.
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.
Dùng Windows Server/SQL Server license có sẵn (có Software Assurance) trên Azure → tiết kiệm đến 85%.
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
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).
• Require tag Environment
• Only allow SEA region
• Enforce HTTPS on storage
• VM phải có backup
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.
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:
Bài Tập Thực Hành (Lab)
Tạo Resource Group và Budget Alert
# 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)
# 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
{
"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
Principal Role Scope
----------------- ---------- --------------------------------------------------
dev.user@... Reader /subscriptions/.../resourceGroups/rg-az900-lab06
your.account@... Owner /subscriptions/<sub-id>
Output: Resource Lock
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ế
Kiểm soát chi phí team dev bằng Budget + Tag
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.
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.
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.
Phân quyền RBAC theo phòng ban, enforce Policy
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.
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.
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.
Zero Trust + Key Vault cho ứng dụng thanh toán
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.
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.
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!