Включение шифрования дисков в узлах кластера Azure Service Fabric на платформе Linux

Из этого руководства вы узнаете, как включить шифрование дисков на узлах кластера Azure Service Fabric в Linux. Эти действия потребуется выполнить для каждого типа узлов и масштабируемых наборов виртуальных машин. Для шифрования узлов мы будем использовать возможности шифрования дисков Azure для масштабируемых наборов виртуальных машин.

В этом руководстве рассматриваются следующие темы.

  • Основные понятия, которые следует учитывать при включении шифрования дисков в масштабируемых наборах виртуальных машин кластера для Service Fabric в Linux.
  • Действия, которые следует выполнить перед включением шифрования дисков на узлах кластера Service Fabric в Linux.
  • Действия, которые следует выполнить перед включением шифрования дисков на узлах кластера Service Fabric в Linux.

Примечание

Для взаимодействия с Azure рекомендуется использовать модуль Azure Az PowerShell. Чтобы начать работу, см. статью Установка Azure 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. Создайте хранилище ключей в тех же подписке и регионе, что и масштабируемый набор. Установите политику доступа EnabledForDiskEncryption в хранилище ключей с помощью командлета PowerShell. Вы также можете установить политику с помощью пользовательского интерфейса Key Vault на портале Azure посредством следующей команды:

    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -EnabledForDiskEncryption
    
  2. Установите последнюю версию Azure CLI, в которой есть новые команды шифрования.

  3. Установите последнюю версию пакета Azure SDK из Azure PowerShell. Ниже приведены командлеты Azure Disk Encryption масштабируемого набора виртуальных машин для включения (Set) шифрования, получения (Get) состояния шифрования и удаления (disable) шифрования в экземпляре масштабируемого набора.

Get-Help Версия Источник
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.
  • В текущей предварительной версии не поддерживаются операции пересоздания образа и обновления виртуальных машин в масштабируемом наборе.

Создание нового кластера и включение шифрования дисков

Используйте следующие команды для создания кластера и включения шифрования дисков с использованием шаблона 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 поддерживается только шифрование дисков данных, необходимо добавить диск данных с помощью шаблона Диспетчера ресурсов. Обновите шаблон для подготовки диска данных, как показано ниже.

   
   "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, убедитесь, что добавленный диск данных правильно подключен. Войдите в виртуальную машину кластера Linux и выполните команду LSBLK. В выходных данных должно быть показано, что диск данных добавлен в столбце точки подключения.

Разверните приложение в кластере Service Fabric в Linux

Чтобы развернуть приложение в кластере, следуйте инструкциям в Кратком руководстве по развертыванию контейнеров 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 и выполнить команду LSBLK. Выходные данные должны показывать добавленный диск данных в столбце точка подключения, а столбец Тип должен считывать значение шифрования.


$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. Аналогичные рекомендации по узлам кластера Service Fabric в Linux см. в разделе Шифрование дисков для Windows.