Share via


在 Linux 中啟用 Azure Service Fabric 叢集節點的磁碟加密

在本教學課程中,您會了解如何在 Linux 的 Azure Service Fabric 叢集節點上啟用磁碟加密。 您必須針對每個節點類型和虛擬機器擴展集執行下列步驟。 為了加密節點,我們會使用虛擬機器擴展集上的 Azure 磁碟加密功能。

本指南涵蓋下列主題:

  • 在 Linux 的 Service Fabric 叢集虛擬機器擴展集上啟用磁碟加密時要注意的重要概念。
  • 在 Linux 的 Service Fabric 叢集節點上啟用磁碟加密之前要遵循的步驟。
  • 在 Linux 的 Service Fabric 叢集節點上啟用磁碟加密時要遵循的步驟。

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

必要條件

自助式登錄

虛擬機器擴展集的磁碟加密預覽需要自助式註冊。 使用下列步驟:

  1. 執行下列命令:
    Register-AzProviderFeature -ProviderNamespace Microsoft.Compute -FeatureName "UnifiedDiskEncryption"
    
  2. 等候大約 10 分鐘,直到狀態顯示為 [已登錄] 為止。 您可以執行下列命令來檢查狀態:
    Get-AzProviderFeature -ProviderNamespace "Microsoft.Compute" -FeatureName "UnifiedDiskEncryption"
    Register-AzResourceProvider -ProviderNamespace Microsoft.Compute
    

Azure Key Vault

  1. 在與擴展集相同的訂用帳戶和區域中建立金鑰保存庫。 然後使用 PowerShell Cmdlet,在金鑰保存庫上選取 EnabledForDiskEncryption 存取原則。 您也可以在 Azure 入口網站中使用下列命令,透過 Key Vault UI 來設定原則:

    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -EnabledForDiskEncryption
    
  2. 安裝最新版本的 Azure CLI,其中包含新的加密命令。

  3. 安裝最新版的 Azure SDK (來自 Azure PowerShell) 版本。 以下是虛擬機器擴展集 Azure 磁碟加密 Cmdlet,其可用來啟用 (設定) 加密功能、擷取 (取得) 加密狀態,以及移除 (停用) 擴展集執行個體的加密功能。

Command 版本 來源
Get-AzVmssDiskEncryptionStatus 1.0.0 或更新版本 Az.Compute
Get-AzVmssVMDiskEncryptionStatus 1.0.0 或更新版本 Az.Compute
Disable-AzVmssDiskEncryption 1.0.0 或更新版本 Az.Compute
Get-AzVmssDiskEncryption 1.0.0 或更新版本 Az.Compute
Get-AzVmssVMDiskEncryption 1.0.0 或更新版本 Az.Compute
Set-AzVmssDiskEncryptionExtension 1.0.0 或更新版本 Az.Compute

所支援的磁碟加密案例

  • 僅針對使用受控磁碟建立的擴展集支援虛擬機器擴展集的加密。 其不支援用於原生 (或非受控) 磁碟擴展集。
  • Linux 中虛擬機器擴展集的 OS 和資料磁碟區都支援加密和停用加密。
  • 目前的預覽版不支援虛擬機器擴展集的虛擬機器 (VM) 重新安裝映像和升級作業。

建立新叢集並啟用磁碟加密

請使用下列命令來建立叢集,並使用 Azure Resource Manager 範本和自我簽署憑證來啟用磁碟加密。

登入 Azure

使用下列命令登入:


Login-AzAccount
Set-AzContext -SubscriptionId <guid>


azure login
az account set --subscription $subscriptionId

使用既有的自訂範本

如果您需要撰寫自訂範本,我們強烈建議您在 Azure Service Fabric 叢集建立範本範例頁面上使用其中一個範本。

如果您已有自訂範本,請重複檢查範本及參數檔案中的三個憑證相關參數是否命名如下。 此外,請確定值為 Null,如下所示:

   "certificateThumbprint": {
      "value": ""
    },
    "sourceVaultValue": {
      "value": ""
    },
    "certificateUrlValue": {
      "value": ""
    },

因為 Linux 中的虛擬機器擴展集僅支援資料磁碟加密,所以您必須使用 Resource Manager 範本新增資料磁碟。 請更新資料磁碟佈建範本,如下所示:

   
   "storageProfile": { 
            "imageReference": { 
              "publisher": "[parameters('vmImagePublisher')]", 
              "offer": "[parameters('vmImageOffer')]", 
              "sku": "[parameters('vmImageSku')]", 
              "version": "[parameters('vmImageVersion')]" 
            }, 
            "osDisk": { 
              "caching": "ReadOnly", 
              "createOption": "FromImage", 
              "managedDisk": { 
                "storageAccountType": "[parameters('storageAccountType')]" 
              } 
           }, 
                "dataDisks": [ 
                { 
                    "diskSizeGB": 1023, 
                    "lun": 0, 
                    "createOption": "Empty" 
   
$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$CertSubjectName="mycluster.westus.cloudapp.azure.com"
$certPassword="Password!1" | ConvertTo-SecureString -AsPlainText -Force 
$certOutputFolder="c:\certificates"

$parameterFilePath="c:\templates\templateparam.json"
$templateFilePath="c:\templates\template.json"


New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -CertificateOutputFolder $certOutputFolder -CertificatePassword $certpassword -CertificateSubjectName $CertSubjectName -TemplateFile $templateFilePath -ParameterFile $parameterFilePath 

以下是對等的 CLI 命令。 將宣告陳述式中的值變更為適當的值。 CLI 可支援上述 PowerShell 命令所支援的所有其他參數。

declare certPassword=""
declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare certSubjectName="mylinuxsecure.westus.cloudapp.azure.com"
declare parameterFilePath="c:\mytemplates\linuxtemplateparm.json"
declare templateFilePath="c:\mytemplates\linuxtemplate.json"
declare certOutputFolder="c:\certificates"


az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-output-folder $certOutputFolder --certificate-password $certPassword  \
	--certificate-subject-name $certSubjectName \
    --template-file $templateFilePath --parameter-file $parametersFilePath

將資料磁碟掛接至 Linux 執行個體

在虛擬機器擴展集上繼續進行加密之前,請確定已正確掛接已新增的資料磁碟。 登入 Linux 叢集 VM,並執行 LSBLK 命令。 輸出應該會在 [掛接點] 資料行上顯示該新增的資料磁碟。

將應用程式部署到 Linux 中的 Service Fabric 叢集

若要將應用程式部署至您的叢集,請遵循快速入門:將 Linux 容器部署至 Service Fabric 中的步驟和指引。

針對先前建立的虛擬機器擴展集啟用磁碟加密

若要為您在先前步驟中建立的虛擬機器擴展集啟用磁碟加密,請執行下列命令:

$VmssName = "nt1vm"
$vaultName = "mykeyvault"
$resourceGroupName = "mycluster"
$KeyVault = Get-AzKeyVault -VaultName $vaultName -ResourceGroupName $rgName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId

Set-AzVmssDiskEncryptionExtension -ResourceGroupName $resourceGroupName -VMScaleSetName $VmssName -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -VolumeType All


az vmss encryption enable -g <resourceGroupName> -n <VMSS name> --disk-encryption-keyvault <KeyVaultResourceId>

驗證是否已針對 Linux 中的虛擬機器擴展集啟用磁碟加密

若要取得整個虛擬機器擴展集,或擴展集內任何執行個體的狀態,請執行下列命令。 此外,您可以登入 Linux 叢集 VM,並執行 LSBLK 命令。 輸出應該會在 [掛接點] 資料行中顯示已新增的資料磁碟,而 [類型] 資料行應為 Crypt


$VmssName = "nt1vm"
$resourceGroupName = "mycluster"
Get-AzVmssDiskEncryption -ResourceGroupName $resourceGroupName -VMScaleSetName $VmssName

Get-AzVmssVMDiskEncryption -ResourceGroupName $resourceGroupName -VMScaleSetName $VmssName -InstanceId "0"

az vmss encryption show -g <resourceGroupName> -n <VMSS name>

針對 Service Fabric 叢集中的虛擬機器擴展集停用磁碟加密

藉由執行下列命令,停用虛擬機器擴展集的磁碟加密。 請注意,停用磁碟加密會套用至整個虛擬機器擴展集,而不是套用至個別執行個體。

$VmssName = "nt1vm"
$resourceGroupName = "mycluster"
Disable-AzVmssDiskEncryption -ResourceGroupName $rgName -VMScaleSetName $VmssName

az vmss encryption disable -g <resourceGroupName> -n <VMSS name>

下一步

到目前為止,您應該已擁有安全的叢集,並知道如何為 Service Fabric 叢集節點和虛擬機器擴展集啟用和停用磁碟加密。 如需 Linux 中 Service Fabric 叢集節點的類似指引,請參閱適用於 Windows 的磁碟加密