Поделиться через


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

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

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

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

Примечание.

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

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

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

командование Версия Исходный материал
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 поддерживается только шифрование дисков данных, необходимо добавить диск данных с помощью шаблона 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. Измените значения в операторах 'declare' на подходящие для этих значений. Интерфейс командной строки поддерживает все остальные параметры, поддерживаемые предыдущей командой 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 и выполните команду 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 . Выходные данные должны отображать добавленный диск с данными в столбце Точки Подключения, а столбец Type должен отображать 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 и масштабируемых наборов виртуальных машин. Аналогичное руководство по узлам кластера Service Fabric в Linux см. в разделе "Шифрование дисков для Windows".