這很重要
Azure 磁碟加密預定於 2028 年 9 月 15 日退休。 在此之前,您可以繼續使用 Azure 磁碟加密,不會中斷。 2028 年 9 月 15 日,啟用 ADE 的工作負載仍可繼續運行,但加密磁碟在虛擬機重啟後將無法解鎖,導致服務中斷。
為新的虛擬機器使用主機端加密。 所有啟用 ADE 的虛擬機(包括備份)必須在退休日前遷移至主機加密,以避免服務中斷。 詳情請參見「 從 Azure 磁碟加密遷移到主機加密 」。
適用於:✔️ Linux VM ✔️ 彈性擴展集
本文是加密裝置上執行邏輯卷管理(LVM)和 RAID 的逐步過程。 此程序適用於下列環境:
- Linux 發行版
- RHEL 7.6+
- Ubuntu 18.04+
- 蘇斯 12+
- Azure 磁碟加密單一傳遞延伸模組
- Azure 磁碟加密雙通道延伸模組
Scenarios
本文中的程式支援下列案例:
- 在加密裝置之上設定 LVM (LVM-on-crypt)
- 在加密裝置之上設定 RAID (RAID-on-crypt)
加密基礎裝置或裝置之後,您可以在該加密層之上建立 LVM 或 RAID 結構。
實體磁碟區 (PV) 會在加密層上建立。 實體磁碟區可用來建立磁碟區群組。 您建立磁碟區,並在 /etc/fstab 中新增必要的項目。
以類似的方式,RAID 裝置是在磁碟上的加密層之上建立的。 檔案系統會在 RAID 裝置之上建立,並作為一般裝置新增至 /etc/fstab。
考慮事項
我們建議您使用 LVM-on-crypt。 當 LVM 因特定應用程式或環境限制而無法使用時,RAID 是一個選項。
您將使用 EncryptFormatAll 選項。 如需此選項的詳細資訊,請參閱 針對 Linux VM 上的資料磁碟使用 EncryptFormatAll 功能。
雖然您也可以在加密作業系統時使用此方法,但我們在這裡只是加密資料磁碟機。
這些程序假設您已檢閱 Linux VM 上的 Azure 磁碟加密案例 和 快速入門:使用 Azure CLI 建立和加密 Linux VM 中的必要條件。
Azure 磁碟加密雙重傳遞版本位於淘汰路徑上,不應再用於新的加密。
一般步驟
當您使用「開啟加密」組態時,請使用下列程序中概述的步驟。
備註
我們在整篇文章中使用了變數。 相應地替換值。
部署 VM
下列命令是選擇性的,但建議您在新部署的虛擬機器 (VM) 上套用它們。
PowerShell:
New-AzVm -ResourceGroupName ${RGNAME} `
-Name ${VMNAME} `
-Location ${LOCATION} `
-Size ${VMSIZE} `
-Image ${OSIMAGE} `
-Credential ${creds} `
-Verbose
Azure CLI:
az vm create \
-n ${VMNAME} \
-g ${RGNAME} \
--image ${OSIMAGE} \
--admin-username ${username} \
--admin-password ${password} \
-l ${LOCATION} \
--size ${VMSIZE} \
-o table
將磁碟連接至 VM
針對您想要連結至 VM 的新磁碟數目 $N,重複下列命令。
PowerShell:
$storageType = 'Standard_LRS'
$dataDiskName = ${VMNAME} + '_datadisk0'
$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $LOCATION -CreateOption Empty -DiskSizeGB 5
$dataDisk1 = New-AzDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName ${RGNAME}
$vm = Get-AzVM -Name ${VMNAME} -ResourceGroupName ${RGNAME}
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 0
Update-AzVM -VM ${VM} -ResourceGroupName ${RGNAME}
Azure CLI:
az vm disk attach \
-g ${RGNAME} \
--vm-name ${VMNAME} \
--name ${VMNAME}datadisk1 \
--size-gb 5 \
--new \
-o table
確認磁碟已連結至 VM
PowerShell:
$VM = Get-AzVM -ResourceGroupName ${RGNAME} -Name ${VMNAME}
$VM.StorageProfile.DataDisks | Select-Object Lun,Name,DiskSizeGB
Azure CLI:
az vm show -g ${RGNAME} -n ${VMNAME} --query storageProfile.dataDisks -o table
入口:
作業系統:
lsblk
設定要加密的磁碟
此設定是在作業系統層級完成。 對應的磁碟會透過 Azure 磁碟加密設定為傳統加密:
- 檔案系統是在磁碟之上建立的。
- 建立暫存掛載點來掛載檔案系統。
- 檔案系統在 /etc/fstab 上配置為在開機時掛載。
檢查指派給新磁碟的裝置代號。 在此範例中,我們使用四個資料磁碟。
lsblk
在每個磁碟上建立檔案系統
此命令在“for”迴圈的“in”部分所定義的每個磁碟上迭代地建立一個ext4檔案系統。
for disk in c d e f; do echo mkfs.ext4 -F /dev/sd${disk}; done |bash
尋找您最近建立之檔案系統的通用唯一識別碼 (UUID)、建立暫存資料夾、在 /etc/fstab 上新增對應的項目,然後掛載所有檔案系統。
此命令也會在「for」循環中的「in」部分定義的每個磁碟上重複執行:
for disk in c d e f; do diskuuid="$(blkid -s UUID -o value /dev/sd${disk})"; \
mkdir /tempdata${disk}; \
echo "UUID=${diskuuid} /tempdata${disk} ext4 defaults,nofail 0 0" >> /etc/fstab; \
mount -a; \
done
確認磁碟已正確掛載
lsblk
此外,請確認磁碟已設定:
cat /etc/fstab
加密資料磁碟
使用金鑰加密金鑰 (KEK) 的 PowerShell:
$sequenceVersion = [Guid]::NewGuid()
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RGNAME `
-VMName ${VMNAME} `
-DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl `
-DiskEncryptionKeyVaultId $KeyVaultResourceId `
-KeyEncryptionKeyUrl $keyEncryptionKeyUrl `
-KeyEncryptionKeyVaultId $KeyVaultResourceId `
-VolumeType 'DATA' `
-EncryptFormatAll `
-SequenceVersion $sequenceVersion `
-skipVmBackup;
使用 KEK 的 Azure CLI:
az vm encryption enable \
--resource-group ${RGNAME} \
--name ${VMNAME} \
--disk-encryption-keyvault ${KEYVAULTNAME} \
--key-encryption-key ${KEYNAME} \
--key-encryption-keyvault ${KEYVAULTNAME} \
--volume-type "DATA" \
--encrypt-format-all \
-o table
驗證加密狀態
只有在所有磁碟都加密時,才繼續執行下一個步驟。
PowerShell:
Get-AzVmDiskEncryptionStatus -ResourceGroupName ${RGNAME} -VMName ${VMNAME}
Azure CLI:
az vm encryption show -n ${VMNAME} -g ${RGNAME} -o table
入口:
作業系統層級:
lsblk
擴充功能會將檔案系統新增至 /var/lib/azure_disk_encryption_config/azure_crypt_mount (舊加密) 或 /etc/crypttab (新加密)。
備註
請勿修改任何這些檔案。
此檔案將負責在啟動過程中啟動這些磁碟,以便 LVM 或 RAID 稍後可以使用它們。
不用擔心這個檔案的掛載點。 在我們在這些加密裝置上建立實體磁碟區或 RAID 裝置之後,Azure 磁碟加密將失去將磁碟掛接為一般檔案系統的能力。 (這將刪除我們在準備過程中使用的檔案系統格式。
刪除臨時文件夾和臨時 fstab 條目
您可以在將作為 LVM 一部分使用的磁碟上卸載檔案系統。
for disk in c d e f; do umount /tempdata${disk}; done
並刪除 /etc/fstab 條目:
vi /etc/fstab
確認磁碟未掛載,且已移除 /etc/fstab 上的項目
lsblk
並確認磁碟已設定:
cat /etc/fstab
LVM-on-crypt 的步驟
現在基礎磁碟已加密,您可以建立 LVM 結構。
不要使用裝置名稱,而是使用每個磁碟的 /dev/mapper 路徑來建立實體磁碟區 (在磁碟頂端的加密層上,而不是在磁碟本身上)。
在加密層之上設定 LVM
建立實體磁碟區
您會收到警告,詢問是否可以清除檔案系統簽章。 輸入 y 繼續,或使用 迴聲 “y”, 如下所示:
echo "y" | pvcreate /dev/mapper/c49ff535-1df9-45ad-9dad-f0846509f052
echo "y" | pvcreate /dev/mapper/6712ad6f-65ce-487b-aa52-462f381611a1
echo "y" | pvcreate /dev/mapper/ea607dfd-c396-48d6-bc54-603cf741bc2a
echo "y" | pvcreate /dev/mapper/4159c60a-a546-455b-985f-92865d51158c
備註
此處的 /dev/mapper/裝置名稱必須根據 lsblk 的輸出取代為實際值。
確認實體磁碟區的資訊
pvs
建立磁碟區群組
使用已初始化的相同裝置建立磁碟區群組:
vgcreate vgdata /dev/mapper/
檢查磁碟區群組的資訊
vgdisplay -v vgdata
pvs
建立邏輯磁碟區
lvcreate -L 10G -n lvdata1 vgdata
lvcreate -L 7G -n lvdata2 vgdata
檢查已建立的邏輯磁碟區
lvdisplay
lvdisplay vgdata/lvdata1
lvdisplay vgdata/lvdata2
在邏輯磁區的結構之上建立檔案系統
echo "yes" | mkfs.ext4 /dev/vgdata/lvdata1
echo "yes" | mkfs.ext4 /dev/vgdata/lvdata2
建立新檔案系統的掛載點
mkdir /data0
mkdir /data1
將新檔案系統新增至 /etc/fstab 並掛載它們
echo "/dev/mapper/vgdata-lvdata1 /data0 ext4 defaults,nofail 0 0" >>/etc/fstab
echo "/dev/mapper/vgdata-lvdata2 /data1 ext4 defaults,nofail 0 0" >>/etc/fstab
mount -a
確認已掛載新的檔案系統
lsblk -fs
df -h
在 lsblk 的這種變體中,我們列出了以相反順序顯示依賴關係的設備。 此選項有助於識別依邏輯磁區分組的裝置,而不是原始的 /dev/sd[disk] 裝置名稱。
請務必確定 nofail 選項已新增至 LVM 磁碟區 (建立在透過 Azure 磁碟加密所加密的裝置上方) 的掛接點選項。 它可以防止操作系統在啟動過程(或維護模式)期間卡住。
如果您未使用 nofail 選項:
- OS 永遠不會進入啟動 Azure 磁碟加密,以及解除鎖定和掛接資料磁碟的階段。
- 加密磁碟將在啟動過程結束時解鎖。 LVM 磁碟區和檔案系統會自動掛接,直到 Azure 磁碟加密解除鎖定為止。
您可以測試重新啟動 VM,並驗證檔案系統是否在開機時間後自動掛載。 此程序可能需要幾分鐘的時間,視檔案系統的數目和大小而定。
重新啟動虛擬機器並在重新啟動後進行驗證
shutdown -r now
lsblk
df -h
RAID-on-crypt 的步驟
現在基礎磁碟已加密,您可以繼續建立 RAID 結構。 此程序與 LVM 的程序相同,但不要使用裝置名稱,而是使用每個磁碟的 /dev/mapper 路徑。
在磁碟的加密層上設定RAID
mdadm --create /dev/md10 \
--level 0 \
--raid-devices=4 \
/dev/mapper/c49ff535-1df9-45ad-9dad-f0846509f052 \
/dev/mapper/6712ad6f-65ce-487b-aa52-462f381611a1 \
/dev/mapper/ea607dfd-c396-48d6-bc54-603cf741bc2a \
/dev/mapper/4159c60a-a546-455b-985f-92865d51158c
備註
此處的 /dev/mapper/裝置名稱必須根據 lsblk 的輸出取代為實際值。
檢查/監控 RAID 建立
watch -n1 cat /proc/mdstat
mdadm --examine /dev/mapper/[]
mdadm --detail /dev/md10
在新的 RAID 裝置上建立檔案系統
mkfs.ext4 /dev/md10
為檔案系統建立新的掛載點,將新檔案系統新增至 /etc/fstab,然後掛載:
備註
此循環僅在此特定示例的一個設備上迭代,以這種方式構建以在需要時用於多個 md 設備。
for device in md10; do diskuuid="$(blkid -s UUID -o value /dev/${device})"; \
mkdir /raiddata; \
echo "UUID=${diskuuid} /raiddata ext4 defaults,nofail 0 0" >> /etc/fstab; \
mount -a; \
done
確認已掛載新的檔案系統:
lsblk -fs
df -h
請務必確定已將 nofail 選項新增至透過 Azure 磁碟加密在裝置上建立的 RAID 磁碟區的掛載點選項。 它可以防止操作系統在啟動過程(或維護模式)期間卡住。
如果您未使用 nofail 選項:
- OS 永遠不會進入啟動 Azure 磁碟加密,以及解除鎖定和掛接資料磁碟的階段。
- 加密磁碟將在啟動過程結束時解鎖。 RAID 磁碟區和檔案系統會自動掛接,直到 Azure 磁碟加密解除鎖定為止。
您可以測試重新啟動 VM,並驗證檔案系統是否在開機時間後自動掛載。 此程序可能需要幾分鐘的時間,視檔案系統的數目和大小而定。
shutdown -r now
當您可以登入時:
lsblk
df -h