🎯 Mục Tiêu Lab
Bật tính năng EncryptionAtHost trên subscription (yêu cầu register feature)
Tạo VM mới với encryption at host được bật ngay từ đầu
Bật encryption at host trên VM đang chạy (deallocate trước)
Kiểm tra trạng thái mã hóa của OS disk và data disk
Phân biệt rõ ba cơ chế: Platform-managed key, Customer-managed key, Encryption at host
So Sánh Các Cơ Chế Mã Hóa VM
| Cơ chế | Phạm vi mã hóa | Cài trong VM? | Temp disk? | Cache? |
|---|---|---|---|---|
| SSE (Storage Service Encryption) | Lưu trữ Azure Storage | Không | Không | Không |
| Azure Disk Encryption (ADE) | OS + Data disk (BitLocker/dm-crypt) | Có (extension) | Tuỳ cấu hình | Không |
| Encryption at Host | OS disk + Data disk + Temp disk + Cache | Không | Có | Có |
| Confidential disk encryption | OS disk (Confidential VMs) | Không | Có | Có |
📋 Chuẩn Bị
- Azure subscription với quyền Owner hoặc Contributor
- VM size hỗ trợ Encryption at Host (hầu hết Standard series)
- Region southeastasia hỗ trợ tính năng này
- RG: rg-az500-lab34
- VM mới: vm-az500-lab34-new
- VM update: vm-az500-lab34-upd
🏗️ Kịch Bản
Yêu cầu compliance: tất cả dữ liệu VM phải được mã hóa kể cả cache và temp disk. SSE mặc định của Azure không bao gồm cache. Azure Disk Encryption yêu cầu cài extension bên trong VM và không bao gồm temp disk cache. Encryption at Host mã hóa tại lớp host server — hoàn toàn transparent với OS trong VM, không cần agent, bao phủ đầy đủ nhất.
🧪 Các Bước Thực Hiện
Đăng Ký Feature EncryptionAtHost trên Subscription
- 1.1Portal → Subscriptions → chọn subscription → Preview features
- 1.2Tìm
EncryptionAtHost→ Register → Đợi trạng thái Registered
# Đăng ký feature EncryptionAtHost (chỉ cần làm 1 lần trên subscription)
az feature register \
--namespace Microsoft.Compute \
--name EncryptionAtHost
# Kiểm tra trạng thái đăng ký (đợi state = Registered, có thể mất 5-10 phút)
az feature show \
--namespace Microsoft.Compute \
--name EncryptionAtHost \
--query "{name:name, state:properties.state}" -o table
# Re-register provider sau khi feature registered
az provider register --namespace Microsoft.Compute
# Tạo resource group
az group create \
--name rg-az500-lab34 \
--location southeastasia \
--tags "lab=34" "course=az500"
Tạo VM Mới Với Encryption at Host Bật Ngay Từ Đầu
- 2.1Portal → Virtual Machines → + Create → Name:
vm-az500-lab34-new→ RG:rg-az500-lab34 - 2.2Tab Disks → Encryption at host → tick Enable encryption at host
- 2.3Review + Create → Create
# Tạo VM mới với Encryption at Host bật từ đầu
az vm create \
--resource-group rg-az500-lab34 \
--name vm-az500-lab34-new \
--image Ubuntu2204 \
--size Standard_D2s_v3 \
--admin-username azureadmin \
--generate-ssh-keys \
--encryption-at-host true \
--public-ip-address "" \
--location southeastasia
# Xác nhận Encryption at Host đã bật
az vm show \
--resource-group rg-az500-lab34 \
--name vm-az500-lab34-new \
--query "securityProfile.encryptionAtHost" -o tsv
az vm show ... --query "securityProfile.encryptionAtHost" trả về true.
Bật Encryption at Host trên VM Đang Tồn Tại
- 3.1VM → Stop → đợi Status = Stopped (deallocated)
- 3.2VM → Disks (blade trái) → Additional settings → Encryption at host: Enable → Save
- 3.3Start VM lại → kiểm tra trạng thái
# Tạo VM thứ hai để test update (không có encryption at host)
az vm create \
--resource-group rg-az500-lab34 \
--name vm-az500-lab34-upd \
--image Ubuntu2204 \
--size Standard_D2s_v3 \
--admin-username azureadmin \
--generate-ssh-keys \
--public-ip-address "" \
--location southeastasia
# Xác nhận chưa bật
az vm show -g rg-az500-lab34 -n vm-az500-lab34-upd \
--query "securityProfile.encryptionAtHost" -o tsv
# Kết quả: null hoặc false
# DEALLOCATE VM (bắt buộc, không phải chỉ Stop)
az vm deallocate \
--resource-group rg-az500-lab34 \
--name vm-az500-lab34-upd
# Bật Encryption at Host trên VM đang deallocated
az vm update \
--resource-group rg-az500-lab34 \
--name vm-az500-lab34-upd \
--set securityProfile.encryptionAtHost=true
# Start VM lại
az vm start \
--resource-group rg-az500-lab34 \
--name vm-az500-lab34-upd
# Xác nhận đã bật
az vm show -g rg-az500-lab34 -n vm-az500-lab34-upd \
--query "securityProfile.encryptionAtHost" -o tsv
# Kết quả: true
Kiểm Tra Trạng Thái Mã Hóa của Disk
# Kiểm tra encryption settings của OS disk
az disk show \
--resource-group rg-az500-lab34 \
--name $(az vm show -g rg-az500-lab34 -n vm-az500-lab34-new \
--query "storageProfile.osDisk.name" -o tsv) \
--query "{name:name, encryption:encryption.type, diskState:diskState}" -o table
# Liệt kê tất cả disks trong RG với trạng thái mã hóa
az disk list \
--resource-group rg-az500-lab34 \
--query "[].{name:name, encryptionType:encryption.type, diskState:diskState}" \
-o table
# Xem security profile của cả hai VM
for VM in vm-az500-lab34-new vm-az500-lab34-upd; do
echo "=== $VM ==="
az vm show -g rg-az500-lab34 -n $VM \
--query "{name:name, encryptionAtHost:securityProfile.encryptionAtHost}" -o table
done
📊 Kết Quả Đầu Ra
az feature show → state: Registered cho Microsoft.Compute/EncryptionAtHost
securityProfile.encryptionAtHost trả về true ngay khi tạo
vm update --set securityProfile.encryptionAtHost=true không lỗi sau deallocate
az disk list → encryptionType: EncryptionAtRestWithPlatformKey hoặc tương đương
🧹 Dọn Dẹp
az group delete --name rg-az500-lab34 --yes --no-wait
❓ Câu Hỏi Ôn Tập
1. Điều kiện bắt buộc để bật Encryption at Host trên VM đang tồn tại là gì?
Gợi ý: VM phải ở trạng thái Deallocated (dừng hoàn toàn). Feature EncryptionAtHost phải được register trên subscription trước.
2. Encryption at Host khác Azure Disk Encryption (ADE) ở điểm gì quan trọng nhất?
Gợi ý: EaH mã hóa tại hypervisor host, không cần agent trong VM, bao gồm temp disk và cache. ADE dùng BitLocker/dm-crypt trong OS, cần extension, không cover cache.
3. Có thể kết hợp Encryption at Host với Customer-managed key (CMK) trong Azure Key Vault không?
Gợi ý: Có. Tạo DiskEncryptionSet liên kết với Key Vault CMK, sau đó gán DiskEncryptionSet cho VM khi tạo. EaH và CMK kết hợp cho mức bảo vệ cao nhất.
4. Tại sao phải chạy lệnh az provider register --namespace Microsoft.Compute sau khi register feature?
Gợi ý: Sau khi register feature, resource provider cần được re-register để nhận biết và activate tính năng mới trong subscription.