為 Service Fabric 受控叢集節點啟用磁碟加密
Service Fabric 受控叢集支援兩種磁碟加密選項,以協助保護您的資料,以符合組織的安全性和合規性承諾。 建議的選項是在主機上加密,但也支援 Azure 磁碟加密。 請檢閱磁碟加密選項,並確定選取的選項符合您的需求。
啟用主機上的加密
此加密方法可透過加密 Azure 儲存體服務中的資料,藉由支援所有 VM 的 OS 類型和映像 (包括自訂映像),來改善 Azure 磁碟加密。 這個方法不會使用您的 VM CPU,也不會影響 VM 效能,讓工作負載可以使用所有可用的 VM SKU 資源。
注意
您無法在現有的節點類型上啟用。 您必須佈建新的節點類型並移轉工作負載。
注意
當您在主機上使用加密時,Azure 資訊安全中心磁碟加密狀態將會顯示為狀況不良
遵循這些步驟,並參考此樣本範本,以部署已啟用主機加密的新 Service Fabric 受控叢集。
檢閱下列限制,以驗證其是否符合您的需求。
在叢集部署之前,請先設定必要的必要條件。
需要針對每個節點類型磁碟加密設定受控叢集範本中的
enableEncryptionAtHost
屬性。 此樣本已預先設定。- Service Fabric 受控叢集資源 apiVersion 必須為 2021-11-01-preview 或更新版本。
{ "apiVersion": "[variables('sfApiVersion')]", "type": "Microsoft.ServiceFabric/managedclusters/nodetypes", "name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]", "location": "[resourcegroup().location]", "properties": { "enableEncryptionAtHost": true ... } }
部署及驗證
部署設定為已啟用主機加密的受控叢集。
$clusterName = "<clustername>" $resourceGroupName = "<rg-name>" New-AzResourceGroupDeployment -Name $resourceGroupName -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterFile .\azuredeploy.parameters.json -Debug -Verbose
您可以使用
Get-AzVmss
命令,來檢查節點類型基礎擴展集上的磁碟加密狀態。 首先,您必須找出受控叢集支援的資源群組名稱 (包含基礎虛擬網路、負載平衡器、公用 IP、NSG、擴展集和儲存體帳戶)。 請務必將NodeTypeNAme
修改為您想要檢查的任何叢集節點類型名稱 (如部署範本中所指定)。$NodeTypeName = "NT2" $clustername = <clustername> $resourceGroupName = "<rg-name>" $supportResourceGroupName = "SFC_" + (Get-AzServiceFabricManagedCluster -ResourceGroupName $resourceGroupName -Name $clustername).ClusterId $VMSS = Get-AzVmss -ResourceGroupName $supportResourceGroupName -Name $NodeTypeName $VMSS.VirtualMachineProfile.SecurityProfile.EncryptionAtHost
傳回的輸出應該如下所示:
$VMSS.VirtualMachineProfile.SecurityProfile.EncryptionAtHost True
啟用 Azure 磁碟加密
Azure 磁碟加密透過使用 Linux 中的 DM-Crypt 功能或 Windows 的 BitLocker 功能,為 Azure 虛擬機器 (VM) 的 OS 和資料磁碟提供磁碟區加密。 ADE 與 Azure Key Vault 整合,協助您控制及管理磁碟加密金鑰和祕密。
在本指南中,您將瞭解如何透過 Azure Resource Manager (ARM) 範本,使用虛擬機器擴展集的 Azure 磁碟加密功能,在 Windows 中的 Service Fabric 受控叢集節點上啟用磁碟加密。
註冊 Azure 磁碟加密
虛擬機器擴展集的磁碟加密預覽需要自助式註冊。 執行以下命令:
Register-AzProviderFeature -FeatureName "UnifiedDiskEncryption" -ProviderNamespace "Microsoft.Compute"
藉由執行下列動作來檢查註冊的狀態:
Get-AzProviderFeature -ProviderNamespace "Microsoft.Compute" -FeatureName "UnifiedDiskEncryption"
當狀態變更為 [已註冊] 之後,您就可以開始進行。
針對磁碟加密佈建 Key Vault
Azure 磁碟加密需要 Azure Key Vault 來控管磁碟加密金鑰及祕密。 Key Vault 和 Service Fabric 受控叢集必須位於相同的 Azure 區域和訂用帳戶中。 只要符合這些需求,您就可以啟用新的或現有的 Key Vault 進行磁碟加密,來加以使用。
建立已啟用磁碟加密的 Key Vault
執行下列命令,以建立新的磁碟加密 Key Vault。 請確定 Key Vault 的區域與您的叢集位於相同的區域。
$resourceGroupName = "<rg-name>" $keyvaultName = "<kv-name>" New-AzResourceGroup -Name $resourceGroupName -Location eastus2 New-AzKeyVault -ResourceGroupName $resourceGroupName -Name $keyvaultName -Location eastus2 -EnabledForDiskEncryption
更新現有的 Key Vault 以啟用磁碟加密
執行下列命令,為現有的 Key Vault 啟用磁碟加密。
Set-AzKeyVaultAccessPolicy -ResourceGroupName $resourceGroupName -VaultName $keyvaultName -EnabledForDiskEncryption
更新磁碟加密的範本和參數檔案
下列步驟將逐步引導您完成所需的範本變更,以在現有的受控叢集上啟用磁碟加密。 或者,您可以使用此範本啟用磁碟加密,來部署新的 Service Fabric 受控叢集:https://github.com/Azure-Samples/service-fabric-cluster-templates/tree/master/SF-Managed-Standard-SKU-1-NT-DiskEncryption
將下列參數新增至範本,並取代
keyVaultResourceId
下您自己的訂用帳戶、資源群組名和保存庫名稱:"parameters": { "keyVaultResourceId": { "type": "string", "defaultValue": "/subscriptions/########-####-####-####-############/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<kv-name>", "metadata": { "description": "Full resource id of the Key Vault used for disk encryption." } }, "volumeType": { "type": "string", "defaultValue": "All", "metadata": { "description": "Type of the volume OS or Data to perform encryption operation" } } },
接下來,將
AzureDiskEncryption
VM 延伸模組新增至範本中受控叢集節點類型:"properties": { "vmExtensions": [ { "name": "AzureDiskEncryption", "properties": { "publisher": "Microsoft.Azure.Security", "type": "AzureDiskEncryption", "typeHandlerVersion": "2.2", "autoUpgradeMinorVersion": true, "settings": { "EncryptionOperation": "EnableEncryption", "KeyVaultURL": "[reference(parameters('keyVaultResourceId'),'2016-10-01').vaultUri]", "KeyVaultResourceId": "[parameters('keyVaultResourceID')]", "VolumeType": "[parameters('volumeType')]" } } } ] }
最後,更新參數檔案,並取代在 keyVaultResourceId 中您自己的訂用帳戶、資源群組和金鑰保存庫名稱:
"parameters": { ... "keyVaultResourceId": { "value": "/subscriptions/########-####-####-####-############/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<kv-name>" }, "volumeType": { "value": "All" } }
部署及驗證變更
當您準備好時,請部署變更,以在受控叢集上啟用磁碟加密。
$clusterName = "<clustername>" New-AzResourceGroupDeployment -Name $resourceGroupName -ResourceGroupName $resourceGroupName .\azuredeploy.json -TemplateParameterFile .\azuredeploy.parameters.json -Debug -Verbose
您可以使用
Get-AzVmssDiskEncryption
命令,來檢查節點類型基礎擴展集上的磁碟加密狀態。 首先,您必須找出受控叢集支援的資源群組名稱 (包含基礎虛擬網路、負載平衡器、公用 IP、NSG、擴展集和儲存體帳戶)。 請務必將VmssName
修改為您想要檢查的任何叢集節點類型名稱 (如部署範本中所指定)。$VmssName = "NT1" $clustername = <clustername> $supportResourceGroupName = "SFC_" + (Get-AzServiceFabricManagedCluster -ResourceGroupName $resourceGroupName -Name $clustername).ClusterId Get-AzVmssDiskEncryption -ResourceGroupName $supportResourceGroupName -VMScaleSetName $VmssName
輸出應該如下所示:
ResourceGroupName : SFC_########-####-####-####-############ VmScaleSetName : NT1 EncryptionEnabled : True EncryptionExtensionInstalled : True