當您使用虛擬機器組態建立 Azure Batch 集區時,可以藉由指定磁碟加密組態,使用平台管理金鑰來加密集區中的計算節點。
本文說明如何建立啟用磁碟加密的 Batch 集區。
重要
Azure 磁碟加密 (ADE) for Azure Batch pools 將於 2028 年 9 月 15 日淘汰。 在此日期之前,將依賴 ADE 進行臨時磁碟加密的池配置遷移至 主機加密。 淘汰不會影響受控磁碟的預設伺服器端加密。
為什麼要使用具有磁碟加密設定的集區?
有了 Batch 集區,您就可以在 OS 和計算節點的暫存磁碟上存取和儲存資料。 使用平台代控金鑰對伺服器端磁碟進行加密,將會以低額外負荷且便利的方式保護此資料。
Batch 會根據集區設定和區域支援性,在計算節點上套用其中一種磁碟加密技術。
- 使用平台管理金鑰進行受控磁碟待用加密
- 使用平台代控金鑰在主機加密
- Azure 磁碟加密 for Batch pools,將於 2028 年 9 月 15 日正式退休
磁碟加密目標不會直接選擇加密技術。 你指定想要加密的目標磁碟,Batch 會根據集區組態選擇適用的技術。 你可以在虛擬機安全設定檔中明確要求主機加密。 下圖展示了Batch如何做出選擇。
重要
如果你用 Linux 自訂映像建立池,只有當池使用支援主機加密的虛擬機容量時,才能啟用磁碟加密。
對於使用者訂閱池,請在包含池資源的訂閱中註冊 Microsoft.Compute/EncryptionAtHost 功能,並明確設定 securityProfile.encryptionAtHost 為 true。 欲了解更多資訊,請參閱 主機加密的先決條件。
某些磁碟加密設定需要集區的 VM 系列支援主機加密。 請參閱使用主機加密進行端對端加密,以判斷哪些 VM 系列支援主機加密。
Note
在不支援主機加密的 VM 大小上,暫存磁碟加密需要使用 Azure 磁碟加密 (ADE)。 ADE 不支援 Basic、A 系列、v6 系列、v7 系列(及更新)虛擬機大小,或記憶體少於 2 GB 的虛擬機。 如果您在這些不受支援的規格上啟用暫存磁碟加密,Batch 會因發生 AzureDiskEncryptionNotSupportedOnVMSize 錯誤而拒絕建立集區。 若要使用臨時磁碟加密而不使用 ADE,請選擇支援主機加密的虛擬機大小與訂閱。 對於批次服務集區,不要明確停用主機端加密。 對於用戶訂閱池,明確設定 securityProfile.encryptionAtHost 為 true。
Azure 磁碟加密 淘汰
Azure 磁碟加密 (ADE) for Batch pools 將於 2028 年 9 月 15 日淘汰。 停用日期過後,批次集區不再支援 ADE。 持續依賴 ADE 的池組態在 Batch 佈建或替換運算節點時可能會發生中斷。
如果您的池設定要求臨時磁碟加密並可選擇 ADE,請在停用日期前完成遷移。 用主機端加密作為替代方案。 主機端加密會加密暫時磁碟、臨時作業系統磁碟,以及虛擬機器主機上的作業系統和資料磁碟快取。
ADE 淘汰不會影響 Azure 管理磁碟預設啟用的平台管理金鑰靜態加密。
判斷你的集區是否需要採取行動
批次集區屬性會顯示您要求的磁碟加密目標,但不會指出 Batch 為節點選取的加密技術。 請參考下表評估池組是否會依賴 ADE。
| 集區設定 | ADE 相依性 | Action |
|---|---|---|
diskEncryptionConfiguration 未設定或 TemporaryDisk 未包含在目標中 |
這個配置不依賴 ADE 來進行臨時磁碟加密。 | 此淘汰項目無需採取任何動作。 |
當批次服務集區配置模式為 TemporaryDisk、VM 大小支援主機端加密,且未明確停用主機端加密時 |
批次選取主機端加密。 | 不需要遷移。 繼續使用支援主機加密的虛擬機大小。 |
要求的批次服務集區配置模式為 TemporaryDisk,且 VM 大小不支援主機加密 |
配置可依 ADE 而異。 | 遷移到支援主機加密的 VM 大小。 |
用戶訂閱池分配模式,TemporaryDisk 已要求,但 securityProfile.encryptionAtHost 並未設定為 true |
配置可依 ADE 而異。 Batch 不會自動啟用使用者訂閱集區的主機加密功能。 | 在池子訂閱中註冊主機端加密功能,並明確啟用主機端加密。 |
securityProfile.encryptionAtHost 明確設定為 false ,且 TemporaryDisk 被請求 |
配置可依 ADE 而異。 | 使用支援的虛擬機大小,並設定 encryptionAtHost 為 true。 |
要判斷虛擬機大小是否支援主機加密,請參見 支援的虛擬機大小。
設定新的集區
對於需要臨時磁碟加密的新儲存池,請選擇支援主機加密的虛擬機大小。 不要在主機上明確關閉加密功能。
對於使用者訂閱池,也在包含池資源的訂閱中註冊 Microsoft.Compute/EncryptionAtHost 該功能,並設定 securityProfile.encryptionAtHost 為 true。
將現有的池移轉為主機端加密
您可以更新現有的集區,而不刪除 Batch 集區。 當你再次擴展池時,更新會取代底層的運算部署。
- 停止在池子排程新工作,等執行任務完成或移到其他池子。
- 將專用節點與 Spot 或低優先權目標節點的計數都調整為零。
- 等到池配置狀態為 穩定 且目前節點計數為 0。
- 使用 Batch Management 平面 Pool - Update API 版本
2024-07-01或更新版本以:- 如果目前的虛擬機大小不支援加密,請選擇一個支援主機加密的虛擬機大小。
- 將
deploymentConfiguration.virtualMachineConfiguration.securityProfile.encryptionAtHost設定為true。 - 保留所需的磁碟加密目標及其他虛擬機配置屬性。
- 將池大小調整到所需的目標節點數量。 批次會利用更新後的配置建立新的底層運算部署。
例如,管理平面 PATCH 請求的相關部分為:
{
"properties": {
"vmSize": "<encryption-at-host-supported-vm-size>",
"deploymentConfiguration": {
"virtualMachineConfiguration": {
"imageReference": {
"publisher": "<publisher>",
"offer": "<offer>",
"sku": "<sku>",
"version": "<version>"
},
"nodeAgentSkuId": "<node-agent-sku-id>",
"diskEncryptionConfiguration": {
"targets": [
"OsDisk",
"TemporaryDisk"
]
},
"securityProfile": {
"encryptionAtHost": true
}
}
}
}
}
Caution
包含集區必須保留的現有虛擬機器設定屬性,例如虛擬機器映像參考、節點代理程式 SKU、作業系統磁碟設定、容器設定、擴充功能及資料磁碟。 在更新生產池之前,先取得其目前的設定,並建立包含所有所需值的請求。
欲了解更多關於零節點更新及更新行為的資訊,請參閱 更新批次池屬性。
Azure 入口網站
在 Azure 入口網站建立 Batch 集區時,請選取 [磁碟加密設定] 下的 OsDisk、TemporaryDisk 或 OsAndTemporaryDisk。
建立集區之後,您可以在集區的 [屬性] 區段中看到磁碟加密設定目標。
範例
以下範例展示了如何使用 Azure.ResourceManager.Batch SDK、Batch REST API 及 Azure CLI 加密批次池中的作業系統與暫存磁碟。
Azure.ResourceManager.Batch SDK
using Azure;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Batch;
using Azure.ResourceManager.Batch.Models;
//...
public async Task SetDiskEncryption()
{
ArmClient client = new ArmClient(new DefaultAzureCredential());
ResourceIdentifier batchAccountResourceId =
BatchAccountResource.CreateResourceIdentifier("subscriptionId", "resourceGroupName", "accountName");
BatchAccountResource batchAccount = client.GetBatchAccountResource(batchAccountResourceId);
BatchAccountPoolCollection poolCollection = batchAccount.GetBatchAccountPools();
BatchAccountPoolData poolData = new BatchAccountPoolData()
{
VmSize = "standard_ds1_v2",
DeploymentConfiguration = new BatchDeploymentConfiguration()
{
VmConfiguration = new BatchVmConfiguration(
imageReference: new BatchImageReference()
{
Publisher = "Canonical",
Offer = "UbuntuServer",
Sku = "22.04-LTS"
},
nodeAgentSkuId: "batch.node.ubuntu 22.04")
{
DiskEncryptionConfiguration = new BatchDiskEncryptionConfiguration()
{
Targets = { BatchDiskEncryptionTarget.OSDisk, BatchDiskEncryptionTarget.TemporaryDisk }
}
}
}
};
ArmOperation<BatchAccountPoolResource> pool = await poolCollection.CreateOrUpdateAsync(
WaitUntil.Completed, "diskencryptionPool", poolData);
}
批次 REST API
REST API URL:
POST {batchURL}/pools?api-version=2020-03-01.11.0
client-request-id: 00000000-0000-0000-0000-000000000000
要求主體:
"pool": {
"id": "pool2",
"vmSize": "standard_a1",
"virtualMachineConfiguration": {
"imageReference": {
"publisher": "Canonical",
"offer": "UbuntuServer",
"sku": "22.04-LTS"
},
"diskEncryptionConfiguration": {
"targets": [
"OsDisk",
"TemporaryDisk"
]
},
"nodeAgentSKUId": "batch.node.ubuntu 22.04"
},
"resizeTimeout": "PT15M",
"targetDedicatedNodes": 5,
"targetLowPriorityNodes": 0,
"taskSlotsPerNode": 3,
"enableAutoScale": false,
"enableInterNodeCommunication": false
}
Azure CLI
az batch pool create \
--id diskencryptionPool \
--vm-size Standard_DS1_V2 \
--target-dedicated-nodes 2 \
--image canonical:ubuntuserver:22.04-LTS \
--node-agent-sku-id "batch.node.ubuntu 22.04" \
--disk-encryption-targets OsDisk TemporaryDisk
下一步
- 深入了解 Azure 磁碟儲存體的伺服器端加密。
- 如需更深入的 Batch 概觀,請參閱 Batch 服務工作流程和資源。