Использование Azure CLI для включения сквозного шифрования с помощью шифрования на узле

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

При включении шифрования на узле данные, хранящиеся на узле виртуальной машины, шифруются при хранении и передаются в зашифрованном виде в службу хранилища. Общие сведения о шифровании на узле и других типах шифрования управляемых дисков см. в разделе "Шифрование на узле— сквозное шифрование данных виртуальной машины".

Ограничения

  • Поддерживается для 4k размера дисков категории "Ультра" и SSD уровня "Премиум" версии 2.
  • Поддерживается только для 512e размера дисков категории "Ультра" и SSD уровня "Премиум" версии 2, если они были созданы после 5/13.2023.
    • Для дисков, созданных до этой даты, снимайте диск и создайте новый диск с помощью моментального снимка.
  • Невозможно включить на виртуальных машинах или масштабируемых наборах виртуальных машин, которые в настоящее время или когда-либо были включены Шифрование дисков Azure.
  • Шифрование дисков Azure нельзя включить на дисках с включенным шифрованием на узле.
  • Шифрование можно включить в существующих масштабируемых наборах виртуальных машин. Однако автоматически выполняется шифрование только новых виртуальных машин, созданных после включения шифрования.
  • Для шифрования существующие виртуальные машины необходимо освободить и перераспределить.

Доступность в регионах

Шифрование на узле доступно во всех регионах для всех типов дисков.

Поддерживаемые размеры виртуальных машин

Полный список поддерживаемых размеров виртуальных машин можно получить программным способом. Более подробную информацию об этом см. в разделе Поиск поддерживаемых размеров виртуальных машин. Обновление размера виртуальной машины приводит к проверке до проверка если новый размер виртуальной машины поддерживает функцию EncryptionAtHost.

Необходимые компоненты

Прежде чем использовать свойство EncryptionAtHost для виртуальной машины или VMSS, необходимо включить эту функцию в подписке. Для этого сделайте следующее:

  • Выполните следующую команду, чтобы зарегистрировать функцию для подписки
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
  • Прежде чем использовать функцию, убедитесь, что регистрации присвоено состояние Зарегистрировано (это займет несколько минут), выполнив приведенную ниже команду.
az feature show --namespace Microsoft.Compute --name EncryptionAtHost

Создание ресурсов

Примечание.

Этот раздел относится только к конфигурациям с ключами, управляемыми клиентом. Если вы используете ключи, управляемые платформой, можно перейти к разделу "Примеры сценариев ".

После включения функции необходимо настроить DiskEncryptionSet и Azure Key Vault или управляемый HSM Azure Key Vault.

Azure Key Vault

  • Установите последнюю версию Azure CLI и войдите в систему с учетной записью Azure, выполнив команду az login.
  • Создайте Azure Key Vault и ключ шифрования.

При создании Key Vault необходимо включить защиту от удаления. Защита от удаления гарантирует, что удаленный ключ нельзя удалить навсегда до истечения срока хранения. Эти параметры защищают от потери данных из-за случайного удаления. Эти параметры являются обязательными при использовании Key Vault для шифрования управляемых дисков.

Внимание

Не используйте "верблюжий стиль" для названия региона, так как это может привести к проблемам при назначении дополнительных дисков для ресурса на портале Azure.

subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName

az account set --subscription $subscriptionId

az group create --resource-group $rgName --location $location

az keyvault create -n $keyVaultName \
-g $rgName \
-l $location \
--enable-purge-protection true 

az keyvault key create --vault-name $keyVaultName \
-n $keyName \
--protection software
  • Создайте DiskEncryptionSet. Чтобы включить автоматический поворот ключа, можно установить для параметра «Включить автоматический поворот ключей» значение true. При включении автоматической смены система автоматически обновит все управляемые диски, моментальные снимки и образы, которые ссылаются на набор шифрования диска, чтобы использовать новую версию ключа в течение одного часа.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)

az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
  • Предоставьте ресурсу DiskEncryptionSet доступ к хранилищу ключей.

Примечание.

Для создания удостоверения DiskEncryptionSet в идентификаторе Microsoft Entra может потребоваться несколько минут. Если при выполнении следующей команды появляется сообщение об ошибке вида "Не удается найти объект Active Directory", подождите несколько минут и повторите попытку.

desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)

az keyvault set-policy -n $keyVaultName \
-g $rgName \
--object-id $desIdentity \
--key-permissions wrapkey unwrapkey get

Управляемый модуль HSM в Azure Key Vault

Кроме того, для работы с ключами можно использовать управляемый модуль HSM.

Для этого нужно обеспечить соблюдение следующих предварительных условий.

Настройка

После создания управляемого модуля HSM и добавления разрешений включите защиту от удаления и создайте ключ шифрования.

subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
    
az account set --subscription $subscriptionId
    
az keyvault update-hsm --subscription $subscriptionId -g $rgName --hsm-name $keyVaultName --enable-purge-protection true
    
az keyvault key create --hsm-name  $keyVaultName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 2048

Теперь создайте DiskEncryptionSet.

keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
    
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false

Наконец, предоставьте для DiskEncryptionSet доступ к управляемому модулю HSM.

desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
    
az keyvault role assignment create --hsm-name $keyVaultName --role "Managed HSM Crypto Service Encryption User" --assignee $desIdentity --scope /keys

Примеры скриптов

Создание виртуальной машины с шифрованием на узле с поддержкой ключей, управляемых клиентом

Чтобы шифровать кэш ОС и дисков данных с ключами, управляемыми клиентом, создайте виртуальную машину с управляемыми дисками с помощью URI ресурса созданного ранее набора DiskEncryptionSet. Шифрование временных дисков выполняется с ключами, управляемыми платформой.

rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN
diskEncryptionSetName=yourDiskEncryptionSetName

diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)

az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 128 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId

Создание виртуальной машины с шифрованием на узле с поддержкой ключей, управляемых платформой

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

rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN

az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--data-disk-sizes-gb 128 128 \

Обновление виртуальной машины для включения шифрования на узле

rgName=yourRGName
vmName=yourVMName

az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=true

Проверьте состояния шифрования на узле виртуальной машины.

rgName=yourRGName
vmName=yourVMName

az vm show -n $vmName \
-g $rgName \
--query [securityProfile.encryptionAtHost] -o tsv

Обновление виртуальной машины для отключения шифрования на узле

Необходимо освободить виртуальную машину, прежде чем можно будет отключить шифрование на узле.

rgName=yourRGName
vmName=yourVMName

az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=false

Создание масштабируемого набора виртуальных машин с шифрованием на узле с поддержкой ключей, управляемых клиентом

Создайте масштабируемый набор виртуальных машин с управляемыми дисками с помощью URI ресурса диска DiskEncryptionSet, созданного ранее для шифрования кэша ос и дисков данных с помощью ключей, управляемых клиентом. Шифрование временных дисков выполняется с ключами, управляемыми платформой.

Внимание

Начиная с ноября 2023 года масштабируемые наборы виртуальных машин, созданные с помощью PowerShell и Azure CLI, по умолчанию будут использоваться в режиме гибкой оркестрации, если режим оркестрации не указан. Дополнительные сведения об этом изменении и о действиях, которые необходимо предпринять, см. в руководстве по критическим изменениям для клиентов VmSS PowerShell/CLI — Microsoft Community Hub

rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204
diskEncryptionSetName=yourDiskEncryptionSetName

diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)

az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 64 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId

Создание масштабируемого набора виртуальных машин с шифрованием на узле с поддержкой ключей, управляемых платформой

Создайте масштабируемый набор виртуальных машин с шифрованием на узле, чтобы шифровать кэш дисков ОС/данных и временных дисков с помощью ключей, управляемых платформой.

Внимание

Начиная с ноября 2023 года масштабируемые наборы виртуальных машин, созданные с помощью PowerShell и Azure CLI, по умолчанию будут использоваться в режиме гибкой оркестрации, если режим оркестрации не указан. Дополнительные сведения об этом изменении и о действиях, которые необходимо предпринять, см. в руководстве по критическим изменениям для клиентов VmSS PowerShell/CLI — Microsoft Community Hub

rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204

az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--data-disk-sizes-gb 64 128 \

Обновление масштабируемого набора виртуальных машин для включения шифрования на узле

rgName=yourRGName
vmssName=yourVMName

az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=true

Проверка состояния шифрования на узле для масштабируемого набора виртуальных машин

rgName=yourRGName
vmssName=yourVMName

az vmss show -n $vmssName \
-g $rgName \
--query [virtualMachineProfile.securityProfile.encryptionAtHost] -o tsv

Обновление масштабируемого набора виртуальных машин для отключения шифрования на узле

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

rgName=yourRGName
vmssName=yourVMName

az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=false

Поиск поддерживаемых размеров виртуальных машин

Устаревшие размеры виртуальных машин не поддерживаются. Список поддерживаемых размеров виртуальных машин можно найти с помощью API SKU ресурсов или модуля Azure PowerShell. Поддерживаемые размеры невозможно найти с помощью интерфейса командной строки.

При вызове API Skus resource проверка, что EncryptionAtHostSupported для возможности задано значение True.

    {
        "resourceType": "virtualMachines",
        "name": "Standard_DS1_v2",
        "tier": "Standard",
        "size": "DS1_v2",
        "family": "standardDSv2Family",
        "locations": [
        "CentralUSEUAP"
        ],
        "capabilities": [
        {
            "name": "EncryptionAtHostSupported",
            "value": "True"
        }
        ]
    }

Для модуля Azure PowerShell используйте командлет Get-AzComputeResourceSku .

$vmSizes=Get-AzComputeResourceSku | where{$_.ResourceType -eq 'virtualMachines' -and $_.Locations.Contains('CentralUSEUAP')}

foreach($vmSize in $vmSizes)
{
    foreach($capability in $vmSize.capabilities)
    {
        if($capability.Name -eq 'EncryptionAtHostSupported' -and $capability.Value -eq 'true')
        {
            $vmSize

        }

    }
}

Следующие шаги

Итак, создав и настроив эти ресурсы, вы теперь можете использовать их для защиты управляемых дисков. По ссылке ниже доступны примеры отдельных сценариев, которые можно использовать для защиты управляемых дисков.

Примеры шаблонов Azure Resource Manager