Mục tiêu chương / Learning objectives
- Phân biệt Type 1 và Type 2 hypervisor; giải thích rủi ro VM escape và biện pháp giảm thiểu.
- So sánh Container với VM về kiến trúc, bề mặt tấn công và cách cô lập (isolation).
- Phân biệt rõ ba mô hình dịch vụ cloud (IaaS/PaaS/SaaS) và bốn mô hình triển khai.
- Giải thích Shared Responsibility Model của AWS/Azure/GCP và xác định ranh giới trách nhiệm bảo mật.
- Áp dụng nguyên tắc least privilege cho IAM, cấu hình Security Group và Network Security Group đúng cách.
- Sử dụng Azure CLI để kiểm tra cấu hình bảo mật cloud và rà soát IAM role assignments.
1. Lý thuyết cốt lõi / Core theory
1.1. Các loại ảo hóa & Hypervisor / Virtualization types & hypervisors
Ảo hóa (virtualization) cho phép chạy nhiều máy ảo (Virtual Machine — VM) trên một máy vật lý, mỗi VM được cô lập hoàn toàn với VM khác. Thành phần trung tâm là hypervisor — phần mềm tạo và quản lý VM, phân bổ tài nguyên phần cứng.
Type 1 — Bare-metal Hypervisor
Chạy trực tiếp trên phần cứng, không cần OS host. Hiệu năng cao, bề mặt tấn công nhỏ hơn. Ví dụ: VMware ESXi, Microsoft Hyper-V (Windows Server), KVM (Linux kernel). Dùng trong datacenter và cloud.
Type 2 — Hosted Hypervisor
Chạy như ứng dụng trên OS host. Dễ cài, phù hợp lab/dev. Ví dụ: VMware Workstation, Oracle VirtualBox, Parallels. Bề mặt tấn công lớn hơn vì có thêm OS host.
Rủi ro bảo mật — VM Escape: Cuộc tấn công VM escape xảy ra khi attacker khai thác lỗ hổng trong hypervisor để thoát khỏi môi trường VM và truy cập host hoặc VM khác — đây là kịch bản thảm họa nhất trong môi trường multi-tenant cloud. Biện pháp: luôn cập nhật hypervisor, giới hạn tính năng VM không cần thiết (USB passthrough, shared folders), dùng nested virtualization hạn chế.
1.2. Container so với VM / Containers vs VMs
Container (Docker, containerd) là công nghệ đóng gói ứng dụng cùng dependency của nó vào một đơn vị nhẹ, chạy trên kernel của OS host — không có kernel riêng. Container dùng hai tính năng kernel Linux: namespaces (cô lập không gian tên: PID, network, mount, user...) và cgroups (giới hạn và giám sát tài nguyên: CPU, RAM, I/O).
| Tiêu chí | Virtual Machine | Container |
|---|---|---|
| Kernel | Kernel riêng | Dùng chung kernel host |
| Kích thước | GB (full OS) | MB (app + libs) |
| Khởi động | Phút | Giây |
| Cô lập | Mạnh (hardware level) | Trung bình (kernel level) |
| Rủi ro escape | VM Escape (hiếm) | Container Escape (dễ hơn nếu misconfigured) |
| Dùng chủ yếu | Multi-OS workload, legacy | Microservices, CI/CD, cloud-native |
Rủi ro bảo mật container phổ biến: chạy container với flag --privileged (vô hiệu hóa cô lập), mount /var/run/docker.sock vào container (cho phép quản lý toàn bộ Docker daemon), dùng image từ nguồn không tin cậy chứa malware.
1.3. Mô hình dịch vụ Cloud: IaaS / PaaS / SaaS / Cloud service models
Ba mô hình dịch vụ xác định mức độ kiểm soát và trách nhiệm bảo mật của khách hàng:
IaaS
Infrastructure as a Service
Cloud cung cấp VM, storage, network. Khách hàng tự quản lý OS, middleware, app. Ví dụ: Azure VM, AWS EC2, GCP Compute Engine. Kiểm soát nhiều nhất = trách nhiệm nhiều nhất.
PaaS
Platform as a Service
Cloud quản lý OS, middleware, runtime. Khách hàng chỉ lo code và data. Ví dụ: Azure App Service, AWS Elastic Beanstalk, Google App Engine.
SaaS
Software as a Service
Cloud quản lý tất cả. Khách hàng chỉ dùng ứng dụng qua trình duyệt. Ví dụ: Microsoft 365, Salesforce, Gmail. Trách nhiệm bảo mật tối thiểu nhưng ít kiểm soát nhất.
Bốn mô hình triển khai: Public Cloud (hạ tầng của nhà cung cấp, dùng chung nhiều tenant — chi phí thấp, linh hoạt cao), Private Cloud (hạ tầng riêng, kiểm soát tối đa, chi phí cao), Hybrid Cloud (kết hợp public + private, data nhạy cảm giữ private), Multi-cloud (dùng nhiều nhà cung cấp khác nhau — giảm vendor lock-in nhưng tăng độ phức tạp quản lý bảo mật).
1.4. Shared Responsibility Model / Mô hình trách nhiệm chia sẻ
Đây là khái niệm quan trọng nhất trong cloud security — hiểu sai mô hình này dẫn đến "gaps" bảo mật nghiêm trọng. Nguyên tắc: nhà cung cấp cloud bảo mật hạ tầng của cloud, khách hàng bảo mật những gì họ đưa lên cloud.
Phân chia trách nhiệm theo mô hình dịch vụ (AWS/Azure/GCP tương tự nhau):
| Thành phần | IaaS | PaaS | SaaS |
|---|---|---|---|
| Data & Endpoints | Khách hàng | Khách hàng | Khách hàng |
| Identity & Access (IAM) | Khách hàng | Khách hàng | Khách hàng |
| OS, Runtime, Middleware | Khách hàng | Cloud | Cloud |
| Network Controls (VNet/VPC) | Khách hàng | Chia sẻ | Cloud |
| Physical Infrastructure | Cloud | Cloud | Cloud |
1.5. Cloud Security Basics: IAM, Security Group & Mã hóa / Cloud security fundamentals
IAM (Identity and Access Management) là hệ thống kiểm soát ai (identity) được làm gì (action) trên tài nguyên nào (resource). Nguyên tắc: Least Privilege — chỉ cấp quyền tối thiểu cần thiết. Sai lầm phổ biến: gán role Owner hoặc Administrator cho tài khoản dịch vụ thay vì tạo custom role với quyền cụ thể.
Security Group (AWS) / Network Security Group — NSG (Azure) là tường lửa stateful ở cấp cloud, kiểm soát traffic vào/ra VM hoặc subnet. Sai lầm nguy hiểm: mở inbound rule 0.0.0.0/0 (toàn internet) cho cổng 22 (SSH) hoặc 3389 (RDP) — đây là nguồn gốc của phần lớn vụ compromise VM cloud.
Hai loại mã hóa trong cloud: Encryption at Rest — dữ liệu trên đĩa, database, blob storage được mã hóa (thường AES-256, tự động với các dịch vụ managed); Encryption in Transit — dữ liệu trên đường truyền qua TLS 1.2/1.3. Quản lý khóa mã hóa qua dịch vụ chuyên biệt: Azure Key Vault, AWS KMS, GCP Cloud KMS — không bao giờ hardcode key trong code.
2. Bài thực hành / Hands-on labs
Lab 1 — Kiểm tra VM Hyper-V & Phân tích Docker container
OS: Windows 11 với Hyper-V được bật + Docker Desktop · Tool: PowerShell 7 + Docker CLI (chạy PowerShell với quyền Administrator)
- Kiểm tra Hyper-V và VM đang chạy:
# Kiểm tra Hyper-V có được bật không
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
# Liệt kê tất cả VM (nếu Hyper-V đang chạy)
Get-VM | Select-Object Name, State, CPUUsage, MemoryAssigned, Uptime
# Xem chi tiết cấu hình bảo mật của VM
Get-VM -Name "LabVM01" | Select-Object -ExpandProperty SecurityPolicy
# Kiểm tra Secure Boot và TPM của VM
Get-VMFirmware -VMName "LabVM01"
Get-VMKeyProtector -VMName "LabVM01"
- Phân tích bảo mật Docker container:
# Xem tất cả container (đang chạy và đã dừng)
docker ps -a
# Kéo image nginx và chạy container test
docker run -d --name webtest -p 8080:80 nginx:latest
# Inspect container: xem cấu hình, network, mounts
docker inspect webtest
# Kiểm tra tài nguyên container đang dùng (CPU/RAM/Network)
docker stats --no-stream
# Xem tiến trình bên trong container
docker top webtest
# Kiểm tra user mà process trong container chạy với
docker exec webtest id
docker exec webtest whoami
# Xem các cổng được expose
docker port webtest
# Quét image tìm lỗ hổng (nếu đã cài Docker Scout hoặc Trivy)
docker scout cves nginx:latest
# Dọn dẹp sau lab
docker stop webtest && docker rm webtest
Kết quả mong đợi / Expected output: docker inspect hiển thị JSON chi tiết — chú ý trường HostConfig.Privileged (nên là false), Mounts (kiểm tra không mount /var/run/docker.sock), NetworkSettings. docker exec webtest id trả về uid=101(nginx) — container chạy với user nginx, không phải root (thực hành tốt). docker stats hiển thị CPU%, MEM USAGE, NET I/O realtime.
Lab 2 — Kiểm tra bảo mật Azure IaaS qua Azure CLI
OS: Any · Tool: Azure CLI (az) hoặc Azure Cloud Shell tại shell.azure.com (cần Azure subscription)
- Đăng nhập và khám phá tài nguyên Azure:
# Đăng nhập vào Azure (mở trình duyệt để xác thực)
az login
# Xem subscription hiện tại
az account show --output table
# Liệt kê tất cả VM trong subscription
az vm list --output table
# Liệt kê tất cả Resource Group
az group list --output table
# Xem Network Security Group (tường lửa cloud)
az network nsg list --output table
# Xem chi tiết rule của một NSG cụ thể (thay tên phù hợp)
az network nsg rule list --nsg-name "MyNSG" --resource-group "MyRG" --output table
- Rà soát IAM và cấu hình bảo mật:
# Xem tất cả role assignment trong subscription (ai có quyền gì)
az role assignment list --output table
# Tìm tất cả user/service principal có role Owner hoặc Contributor
az role assignment list --role "Owner" --output table
az role assignment list --role "Contributor" --output table
# Kiểm tra cấu hình bảo mật (Azure Security Center / Defender for Cloud)
az security contact list --output table
# Xem trạng thái Microsoft Defender for Cloud trên subscription
az security pricing list --output table
# Kiểm tra VM có disk encryption chưa (Azure Disk Encryption)
az vm encryption show --name "MyVM" --resource-group "MyRG"
# Xem Activity Log (audit trail) của subscription trong 24h qua
az monitor activity-log list --offset 24h --output table | head -30
Kết quả mong đợi / Expected output: az vm list liệt kê VM với cột Name, ResourceGroup, Location. az role assignment list --role "Owner" — nếu có nhiều hơn 1-2 tài khoản Owner thì cần rà soát ngay. az security pricing list cho thấy các plan Defender đang bật/tắt — "Free" nghĩa là tính năng bảo mật nâng cao chưa được kích hoạt. NSG rules liệt kê với source 0.0.0.0/0 vào cổng 22/3389 = cần đóng ngay.
3. Tình huống doanh nghiệp / Real-world scenario
Bối cảnh:
Công ty ABC quyết định migrate workload ERP từ on-premise lên Azure IaaS. Đội Security được giao nhiệm vụ đảm bảo toàn bộ quá trình migration tuân thủ Shared Responsibility Model và đáp ứng yêu cầu của chính sách bảo mật nội bộ (mã hóa, least privilege, monitoring).
Các bước triển khai bảo mật:
- Rà soát Shared Responsibility Model: Với IaaS, công ty chịu trách nhiệm bảo mật OS, middleware, application, data và IAM — lập danh sách kiểm tra (checklist) cho từng lớp trước khi go-live.
- Cấu hình NSG đúng nguyên tắc Default Deny: Mặc định từ chối tất cả inbound traffic. Chỉ mở cổng cần thiết (
443/TCPtừ internet,22/TCPchỉ từ IP của Jump Server nội bộ — không mở 22 ra internet trực tiếp). - Thiết lập IAM theo nguyên tắc Least Privilege: Tạo custom role chỉ có quyền đọc log và restart VM cho nhóm Operations. Không dùng built-in role "Contributor" cho tài khoản dịch vụ tự động.
- Bật Azure Defender for Servers: Kích hoạt Microsoft Defender for Cloud Plan 2 cho tất cả VM — tự động phát hiện missing patches, misconfiguration và threat alerts.
- Kiểm tra disk encryption: Chạy
az vm encryption showđể xác nhận tất cả VM data disk đã bật Azure Disk Encryption với key trong Azure Key Vault — không để key trong tầm tay của dev/ops. - Audit định kỳ IAM: Lên lịch review hàng tháng
az role assignment list --role "Owner"— xóa ngay quyền Owner của tài khoản cá nhân khi không còn cần thiết, dùng PIM (Privileged Identity Management) cho Just-in-Time access.
Bài học: "Cloud là an toàn" là hiểu lầm nguy hiểm nhất. Cloud provider bảo vệ hạ tầng, nhưng misconfiguration IAM và NSG vẫn là nguyên nhân hàng đầu của data breach trên cloud (theo báo cáo Verizon DBIR). Security phải được tích hợp từ ngày đầu thiết kế, không phải vá sau khi deploy.
4. Tự kiểm tra / Knowledge check
- Trong mô hình PaaS, khách hàng có trách nhiệm bảo mật những lớp nào? Nhà cung cấp cloud chịu trách nhiệm gì?
- Tại sao chạy container với flag
--privilegedlại nguy hiểm? Mô tả kịch bản tấn công cụ thể. - Giải thích tại sao Hyper-V Type 1 được coi là an toàn hơn VirtualBox Type 2 trong môi trường production.
- NSG rule
Allow RDP 3389 from 0.0.0.0/0vi phạm nguyên tắc bảo mật nào? Cách cấu hình đúng là gì? - Phân biệt "encryption at rest" và "encryption in transit" — nêu ví dụ cụ thể cho mỗi loại trên Azure.
Chúc mừng! Bạn đã hoàn thành Phase 0
Bạn đã xây dựng nền tảng vững chắc về hệ điều hành, mạng, Windows/Linux administration, ảo hóa và cloud. Đây là bệ phóng để bước vào Phase 1 — chứng chỉ CompTIA Security+ và các kỹ năng SOC analyst chuyên sâu.
Tiến đến Phase 1