LAB 34 AZ-500 ~25 phút Chương 08 Chi phí thấp

Encryption at Host — Mã Hóa Từ Lớp Hypervisor

Bật Encryption at Host để mã hóa dữ liệu tại host server trước khi ghi xuống Azure Storage — bao gồm cả OS disk cache, temp disk và data disk cache. Khác với Azure Disk Encryption không cần cài gì trong VM.

🎯 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óaCài trong VM?Temp disk?Cache?
SSE (Storage Service Encryption)Lưu trữ Azure StorageKhôngKhôngKhông
Azure Disk Encryption (ADE)OS + Data disk (BitLocker/dm-crypt)Có (extension)Tuỳ cấu hìnhKhông
Encryption at HostOS disk + Data disk + Temp disk + CacheKhông
Confidential disk encryptionOS disk (Confidential VMs)Không

📋 Chuẩn Bị

Yêu cầu:
  • 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
Naming convention:
  • 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

1

Đăng Ký Feature EncryptionAtHost trên Subscription

Bắt buộc: Phải register feature này một lần trên subscription trước khi có thể bật Encryption at Host cho bất kỳ VM nào.
Cách 1 — Portal
  1. 1.1Portal → Subscriptions → chọn subscription → Preview features
  2. 1.2Tìm EncryptionAtHost → Register → Đợi trạng thái Registered
Cách 2 — Azure CLI
Azure CLI— Register feature và tạo resource group
# Đă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"
2

Tạo VM Mới Với Encryption at Host Bật Ngay Từ Đầu

Cách 1 — Portal
  1. 2.1Portal → Virtual Machines → + Create → Name: vm-az500-lab34-new → RG: rg-az500-lab34
  2. 2.2Tab DisksEncryption at host → tick Enable encryption at host
  3. 2.3Review + Create → Create
Cách 2 — Azure CLI
Azure CLI— Tạo VM với --encryption-at-host true
# 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
Kết quả đầu ra: az vm show ... --query "securityProfile.encryptionAtHost" trả về true.
3

Bật Encryption at Host trên VM Đang Tồn Tại

Lưu ý: VM phải được deallocate (dừng hoàn toàn, không chỉ Stop) trước khi bật Encryption at Host. VM ở trạng thái Stopped nhưng chưa deallocated sẽ báo lỗi.
Cách 1 — Portal
  1. 3.1VM → Stop → đợi Status = Stopped (deallocated)
  2. 3.2VM → Disks (blade trái) → Additional settings → Encryption at host: Enable → Save
  3. 3.3Start VM lại → kiểm tra trạng thái
Cách 2 — Azure CLI
Azure CLI— Deallocate VM và bật encryption at host
# 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
4

Kiểm Tra Trạng Thái Mã Hóa của Disk

Azure CLI— Kiểm tra encryption status của tất cả disks
# 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

Feature registered

az feature show → state: Registered cho Microsoft.Compute/EncryptionAtHost

VM mới: encryptionAtHost = true

securityProfile.encryptionAtHost trả về true ngay khi tạo

VM update thành công sau deallocate

vm update --set securityProfile.encryptionAtHost=true không lỗi sau deallocate

Disk encryption type xác nhận

az disk list → encryptionType: EncryptionAtRestWithPlatformKey hoặc tương đương

🧹 Dọn Dẹp

Azure CLI
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.

Lab 33: JIT VM Access Thư viện Labs Lab 35: AKS Security
Zalo