這很重要
Azure 磁碟加密預定於 2028 年 9 月 15 日退休。 在此之前,您可以繼續使用 Azure 磁碟加密,不會中斷。 2028 年 9 月 15 日,啟用 ADE 的工作負載仍可繼續運行,但加密磁碟在虛擬機重啟後將無法解鎖,導致服務中斷。
為新的虛擬機器使用主機端加密。 所有啟用 ADE 的虛擬機(包括備份)必須在退休日前遷移至主機加密,以避免服務中斷。 詳情請參見「 從 Azure 磁碟加密遷移到主機加密 」。
Azure CLI 可用來從命令列或在指令碼中建立和管理 Azure 資源。 本快速入門說明如何使用 Azure CLI 來建立和加密虛擬機器擴展集。 如需將 Azure 磁碟加密套用至虛擬機器擴展集的詳細資訊,請參閱虛擬 機器擴展集的 Azure 磁碟加密。
先決條件
使用 Azure Cloud Shell 中的 Bash 環境。 如需詳細資訊,請參閱開始使用 Azure Cloud Shell。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱 如何在 Docker 容器中執行 Azure CLI。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱 使用 Azure CLI 向 Azure 進行驗證。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能的詳細資訊,請參閱 使用和管理 Azure CLI 的擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
- 本文需要 2.0.31 版或更新版本的 Azure CLI。 如果您是使用 Azure Cloud Shell,就已安裝最新版本。
建立擴展集
在建立擴展集之前,請先使用 az group create 建立資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組:
az group create --name myResourceGroup --location eastus
現在使用 az vmss create 建立虛擬機器規模集。 下列範例會建立名為 myScaleSet 的擴展集,其設定為在套用變更時自動更新,並在 ~/.ssh/id_rsa 中不存在 SSH 金鑰時產生 SSH 金鑰。 系統會將 32 Gb 資料磁碟連結至每個 VM 執行個體,並使用 Azure 自訂指令碼延伸模組搭配 az vmss extension set 來準備資料磁碟:
這很重要
請務必選取具有 ADE 的支援作業系統。 ADE 支援的作業系統。
# Create a scale set with attached data disk
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--orchestration-mode Flexible \
--image <SKU Linux Image> \
--admin-username azureuser \
--generate-ssh-keys \
--data-disk-sizes-gb 32
# Prepare the data disk for use with the Custom Script Extension
az vmss extension set \
--publisher Microsoft.Azure.Extensions \
--version 2.0 \
--name CustomScript \
--resource-group myResourceGroup \
--vmss-name myScaleSet \
--settings '{"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/prepare_vm_disks.sh"],"commandToExecute":"./prepare_vm_disks.sh"}'
建立及設定所有擴展集資源和 VM 需要幾分鐘的時間。
建立已啟用磁碟加密的 Azure 金鑰保存庫
Azure 金鑰保存庫可以儲存金鑰、秘密或密碼,讓您在應用程式和服務中安全地實作它們。 密碼編譯金鑰會使用軟體保護儲存在 Azure 金鑰保存庫中,或者您可以在經過 FIPS 140 驗證 標準認證的硬體安全性模組 (HSM) 中匯入或產生金鑰。 這些加密金鑰可用來加密和解密連結至 VM 的虛擬磁碟。 您保留對這些加密金鑰的控制權,並可以稽核其使用情況。
定義您自己獨特的 keyvault_name。 接著,在與擴展集相同的訂用帳戶和區域中,使用 az keyvault create 建立 KeyVault,並設定 --enabled-for-disk-encryption 存取原則。
# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname
# Create Key Vault
az keyvault create --resource-group myResourceGroup --name $keyvault_name --enabled-for-disk-encryption
使用現有的金鑰保存庫
只有在您有想要搭配磁碟加密使用的現有金鑰保存庫時,才需要此步驟。 如果您在上一節中建立金鑰保存庫,請略過此步驟。
定義您自己獨特的 keyvault_name。 然後,使用 az keyvault update 更新您的 KeyVault,並設定 --enabled-for-disk-encryption 存取原則。
# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname
# Create Key Vault
az keyvault update --name $keyvault_name --enabled-for-disk-encryption
啟用加密
備註
如果在彈性協調流程模式中使用虛擬機擴展集,則只會加密新的執行個體。 擴展集中的現有執行個體必須個別加密或移除並取代。
若要加密規模集合中的 VM 執行個體,請先使用 az keyvault show 取得金鑰保存庫資源 ID 的資訊。 然後,這些變數可用來啟動具有 az vmss encryption enable 的加密程式:
# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)
# Enable encryption of the data disks in a scale set
az vmss encryption enable \
--resource-group myResourceGroup \
--name myScaleSet \
--disk-encryption-keyvault $vaultResourceId \
--volume-type DATA
加密程序可能需要一兩分鐘才能開始。
由於擴展集是在先前步驟設定為「自動」時建立的擴展集上的升級原則,因此 VM 執行個體會自動開始執行加密程序。 在升級原則為手動的擴展集上,使用 az vmss update-instances 對 VM 執行個體啟動加密原則。
使用 KEK 啟用加密以包裝金鑰
加密虛擬機器擴展集時,您也可以使用金鑰加密金鑰來增加安全性。
# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)
# Enable encryption of the data disks in a scale set
az vmss encryption enable \
--resource-group myResourceGroup \
--name myScaleSet \
--disk-encryption-keyvault $vaultResourceId \
--key-encryption-key myKEK \
--key-encryption-keyvault $vaultResourceId \
--volume-type DATA
備註
disk-encryption-keyvault 的語法是完整的識別碼字串:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
key-encryption-key 參數值的語法,是 KEK 的完整 URI,如:
https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]
檢查加密進度
若要檢查磁碟加密的狀態,請使用 az vmss encryption show:
az vmss encryption show --resource-group myResourceGroup --name myScaleSet
加密 VM 執行個體時,狀態碼會報告 EncryptionState/encrypted,如下列範例輸出所示:
[
{
"disks": [
{
"encryptionSettings": null,
"name": "myScaleSet_myScaleSet_0_disk2_3f39c2019b174218b98b3dfae3424e69",
"statuses": [
{
"additionalProperties": {},
"code": "EncryptionState/encrypted",
"displayStatus": "Encryption is enabled on disk",
"level": "Info",
"message": null,
"time": null
}
]
}
],
"id": "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualMachines/0",
"resourceGroup": "MYRESOURCEGROUP"
}
]
停用加密
如果您不想再使用加密的 VM 執行個體磁碟,您可以使用 az vmss encryption disable 停用加密,如下所示:
az vmss encryption disable --resource-group myResourceGroup --name myScaleSet
後續步驟
- 在本文中,您使用 Azure CLI 來加密虛擬機器擴展集。 您也可以使用 Azure PowerShell 或 Azure Resource Manager 範本。
- 如果您想要在佈建另一個延伸模組之後套用 Azure 磁碟加密,您可以使用 延伸模組排序。
- 您可以在這裡找到 Linux 擴展集資料磁碟加密的端對端批次檔案範例。 此範例會建立資源群組 Linux 擴展集、掛接 5 GB 資料磁碟,並加密虛擬機器擴展集。