Использование Azure CLI для включения шифрования на стороне сервера для управляемых дисков с использованием ключей, управляемых клиентом
Применимо к: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows ✔️ Универсальные масштабируемые наборы
Хранилище дисков Azure позволяет управлять собственными ключами при использовании шифрования на стороне сервера (SSE) для управляемых дисков, если возникнет такая необходимость. Основные понятия и сведения о шифровании на стороне сервера (SSE) с использованием ключей, управляемых клиентом, а также других типах шифрования управляемых дисков, см. в разделе Ключи, управляемые клиентом статьи о шифровании дисков.
Ограничения
В настоящее время ключи, управляемые клиентом, имеют следующие ограничения.
- Если эта функция включена для диска с добавочными моментальными снимками, его нельзя отключить на этом диске или его моментальных снимках. Чтобы обойти эту проблему, скопируйте все данные на совершенно другой управляемый диск, который не использует ключи, управляемые клиентом. Это можно сделать с помощью Azure CLI или модуля Azure PowerShell.
- Поддерживаются только ключи RSA для программного обеспечения и HSM с размерами 2048 бит, 3072 бит и 4096 бит. Другие ключи или размеры не поддерживаются.
- Для ключей HSM требуется уровень Premium Azure Key Vault.
- Только для дисков категории "Ультра" и SSD уровня "Премиум" версии 2:
- Моментальные снимки дисков, зашифрованных с помощью шифрования на стороне сервера и ключей, управляемых клиентом, должны быть зашифрованы с помощью тех же управляемых клиентом ключей.
- Управляемые удостоверения, назначаемые пользователем, не поддерживаются для дисков SSD категории "Ультра" и SSD уровня "Премиум" версии 2, зашифрованных с помощью ключей, управляемых клиентом.
- В настоящее время не поддерживается в Azure для государственных организаций или Azure China.
- Большинство ресурсов, связанных с ключами, управляемыми клиентом (наборы шифрования дисков, виртуальные машины, диски и моментальные снимки), должны находиться в одной подписке и регионе.
- Хранилища ключей Azure могут использоваться из другой подписки, но должны находиться в том же регионе, что и набор шифрования дисков. В качестве предварительной версии можно использовать Azure Key Vault из разных клиентов Microsoft Entra.
- Диски, зашифрованные с помощью ключей, управляемых клиентом, могут перемещаться только в другую группу ресурсов, если к ней подключена виртуальная машина.
- Диски, моментальные снимки и изображения, зашифрованные с помощью ключей, управляемых клиентом, нельзя перемещать между подписками.
- Управляемые диски в настоящее время или ранее зашифрованные с помощью Шифрование дисков Azure не могут быть зашифрованы с помощью ключей, управляемых клиентом.
- Может создавать только до 5000 наборов шифрования дисков в каждом регионе на подписку.
- Сведения об использовании ключей, управляемых клиентом, с общими коллекциями образов см. в статье "Предварительная версия: использование управляемых клиентом ключей для шифрования изображений".
Создание ресурсов
После включения этой функции необходимо настроить 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.
Для этого нужно обеспечить соблюдение следующих предварительных условий.
- Установите последнюю версию Azure CLI и войдите в систему с учетной записью Azure, выполнив команду az login.
- Создайте и настройте управляемый модуль HSM.
- Назначьте пользователю разрешения, позволяющие управлять управляемым модулем 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
Итак, создав и настроив эти ресурсы, вы теперь можете использовать их для защиты управляемых дисков. Следующие ссылки указывают на примеры скриптов, которые можно использовать для защиты управляемых дисков.
Примеры
Создание виртуальной машины с помощью образа Marketplace, шифрование дисков операционной системы и данных с помощью управляемых клиентом ключей
rgName=yourResourceGroupName
vmName=yourVMName
location=westcentralus
vmSize=Standard_DS3_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 --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=yourResourceGroupName
diskName=yourDiskName
diskEncryptionSetName=yourDiskEncryptionSetName
az disk update -n $diskName -g $rgName --encryption-type EncryptionAtRestWithCustomerKey --disk-encryption-set $diskEncryptionSetId
Создание масштабируемого набора виртуальных машин с помощью образа Marketplace, шифрование дисков операционной системы и данных с помощью управляемых клиентом ключей
rgName=yourResourceGroupName
vmssName=yourVMSSName
location=westcentralus
vmSize=Standard_DS3_V2
image=LinuxImageURN
diskEncryptionSetName=yourDiskencryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vmss create -g $rgName -n $vmssName --image $image --upgrade-policy automatic --admin-username azureuser --generate-ssh-keys --os-disk-encryption-set $diskEncryptionSetId --data-disk-sizes-gb 64 128 --data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
Создайте пустой диск, зашифрованный с помощью шифрования на стороне сервера, с ключами, управляемыми клиентом, и подключите его к виртуальной машине.
vmName=yourVMName
rgName=yourResourceGroupName
diskName=yourDiskName
diskSkuName=Premium_LRS
diskSizeinGiB=30
location=westcentralus
diskLUN=2
diskEncryptionSetName=yourDiskEncryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az disk create -n $diskName -g $rgName -l $location --encryption-type EncryptionAtRestWithCustomerKey --disk-encryption-set $diskEncryptionSetId --size-gb $diskSizeinGiB --sku $diskSkuName
diskId=$(az disk show -n $diskName -g $rgName --query [id] -o tsv)
az vm disk attach --vm-name $vmName --lun $diskLUN --ids $diskId
Смена ключа DiskEncryptionSet для всех ресурсов, ссылающихся на DiskEncryptionSet
rgName=yourResourceGroupName
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
keyVaultId=$(az keyvault show --name $keyVaultName--query [id] -o tsv)
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set update -n keyrotationdes -g keyrotationtesting --key-url $keyVaultKeyUrl --source-vault $keyVaultId
Определение состояния шифрования диска на стороне сервера
az disk show -g yourResourceGroupName -n yourDiskName --query [encryption.type] -o tsv
Внимание
Управляемые клиентом ключи используют управляемые удостоверения для ресурсов Azure, функцию идентификатора Microsoft Entra. При настройке управляемых пользователем ключей управляемое удостоверение автоматически назначается вашим ресурсам. Если вы впоследствии перемещаете подписку, группу ресурсов или управляемый диск из одного каталога Microsoft Entra в другой, управляемое удостоверение, связанное с управляемыми дисками, не передается новому клиенту, поэтому ключи, управляемые клиентом, больше не работают. Дополнительные сведения см. в разделе "Передача подписки между каталогами Microsoft Entra".
Следующие шаги
- Изучите шаблоны Azure Resource Manager для создания зашифрованных дисков с помощью управляемых клиентом ключей
- Репликация компьютеров, использующих диски с ключами, управляемыми клиентом
- Настройка аварийного восстановления виртуальных машин VMware в Azure с помощью PowerShell
- Настройка аварийного восстановления виртуальных машин Hyper-V в Azure с помощью PowerShell и Azure Resource Manager
- См. статью "Создание управляемого диска из моментального снимка" с помощью ИНТЕРФЕЙСА командной строки для примера кода.