Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: ✔️ Виртуальным машинам Windows ✔️ Гибким масштабируемым наборам ✔️ Унифицированным масштабируемым наборам
Хранилище дисков Azure позволяет управлять собственными ключами при использовании шифрования на стороне сервера (SSE) для управляемых дисков при выборе. Общие концепции, связанные с SSE с использованием ключей, управляемых клиентом, и к другими типами шифрования управляемых дисков, см. в разделе Ключи, управляемые клиентом статьи о шифровании дисков.
Ограничения
В настоящее время ключи, управляемые клиентом, имеют следующие ограничения.
- Если эта функция включена для диска с добавочными моментальными снимками, его нельзя отключить на этом диске или его моментальных снимках. Чтобы обойти эту проблему, скопируйте все данные на совершенно другой управляемый диск, который не использует ключи, управляемые клиентом. Это можно сделать с помощью модуля Azure CLI или модуля Azure PowerShell.
- Диск и все связанные с ним инкрементные снимки должны иметь один и тот же набор шифрования дисков.
- Поддерживаются только ключи RSA для программного обеспечения и HSM с размерами 2048 бит, 3072 бит и 4096 бит. Другие ключи или размеры не поддерживаются.
- ключи HSM требуют уровня премиум в хранилищах ключей Azure.
- Только для дисков категории "Ультра" и SSD уровня "Премиум" версии 2:
- (предварительная версия) Управляемые удостоверения, назначаемые пользователем, доступны для дисков Категории "Ультра" и SSD уровня "Премиум" версии 2, зашифрованных с помощью ключей, управляемых клиентом.
- Большинство ресурсов, связанных с ключами, управляемыми клиентом (наборы шифрования дисков, виртуальные машины, диски и моментальные снимки), должны находиться в одной подписке и одном регионе.
- Azure Хранилища ключей могут использоваться из другой подписки, но должны находиться в том же регионе, что и набор шифрования дисков. Хранилища ключей Azure во множественных арендаторах Microsoft Entra поддерживаются для управляемых дисков. Дополнительные сведения см. в разделе "Шифрование управляемых дисков" с помощью ключей, управляемых клиентом.
- Диски, зашифрованные с помощью управляемых клиентом ключей, могут перемещаться в другую группу ресурсов, только если виртуальная машина, к которой они подключены, деактивирована.
- Диски, моментальные снимки и изображения, зашифрованные с помощью ключей, управляемых клиентом, нельзя перемещать между подписками.
- Управляемые диски в настоящее время или ранее зашифрованные с помощью Шифрование дисков Azure не могут быть зашифрованы с помощью ключей, управляемых клиентом.
- Можно создавать до 5000 наборов шифрования дисков в каждом регионе для каждой подписки.
- Сведения об использовании ключей, управляемых клиентом, с общими коллекциями образов см. в статье "Предварительная версия: использование управляемых клиентом ключей для шифрования изображений".
Настройка Azure Key Vault и DiskEncryptionSet с автоматическим поворотом ключей
Чтобы использовать управляемые клиентом ключи с SSE, необходимо настроить Azure Key Vault и ресурс DiskEncryptionSet.
Убедитесь, что вы установили последнюю версию Azure PowerShell и вошли в учетную запись Azure с помощью Connect-AzAccount
Создайте экземпляр Azure Key Vault и ключа шифрования.
При создании экземпляра Key Vault необходимо включить защиту очистки. Защита от удаления гарантирует, что удаленный ключ нельзя удалить навсегда до истечения срока хранения. Эти параметры защищают от потери данных из-за случайного удаления. Эти параметры являются обязательными при использовании Key Vault для шифрования управляемых дисков.
$ResourceGroupName="yourResourceGroupName" $LocationName="westcentralus" $keyVaultName="yourKeyVaultName" $keyName="yourKeyName" $keyDestination="Software" $diskEncryptionSetName="yourDiskEncryptionSetName" $keyVault = New-AzKeyVault -Name $keyVaultName ` -ResourceGroupName $ResourceGroupName ` -Location $LocationName ` -EnablePurgeProtection $key = Add-AzKeyVaultKey -VaultName $keyVaultName ` -Name $keyName ` -Destination $keyDestination Set-AzKeyVaultKeyRotationPolicy -VaultName $keyVaultName -KeyName $keyName -ExpiresIn P2Y -KeyRotationLifetimeAction @{Action="Rotate";TimeBeforeExpiry = "P18M"}Создайте экземпляр DiskEncryptionSet. Этот скрипт устанавливает RotationToLatestKeyVersionEnabled равным $true, чтобы включить автоматическую ротацию ключа. При включении автоматического вращения система автоматически обновляет все управляемые диски, моментальные снимки и образы, ссылающиеся на комплект шифрования дисков, чтобы использовать новую версию ключа в течение одного часа.
$desConfig=New-AzDiskEncryptionSetConfig -Location $LocationName ` -SourceVaultId $keyVault.ResourceId ` -KeyUrl $key.Key.Kid ` -IdentityType SystemAssigned ` -RotationToLatestKeyVersionEnabled $true $des=New-AzDiskEncryptionSet -Name $diskEncryptionSetName ` -ResourceGroupName $ResourceGroupName ` -InputObject $desConfigПредоставьте ресурсу DiskEncryptionSet доступ к хранилищу ключей.
Примечание.
Для создания идентификатора DiskEncryptionSet в вашей Microsoft Entra ID в Azure может потребоваться несколько минут. Если при выполнении следующей команды возникает сообщение об ошибке "Не удается найти объект Active Directory", подождите несколько минут и повторите попытку.
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $des.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get
Использование хранилища ключей в другой подписке
Кроме того, вы можете централизованно управлять Azure Key Vaults из одной подписки и использовать ключи, хранящиеся в Key Vault для шифрования управляемых дисков и моментальных снимков в других подписках в организации. Это позволяет группе безопасности применять и легко управлять надежной политикой безопасности для одной подписки.
Внимание
Для этой конфигурации Key Vault и набор шифрования дисков должны находиться в одном регионе и использовать один и тот же клиент.
Следующий сценарий — это пример настройки набора шифрования дисков для использования ключа из Key Vault в другой подписке, но в том же регионе:
$sourceSubscriptionId="<sourceSubID>"
$sourceKeyVaultName="<sourceKVName>"
$sourceKeyName="<sourceKeyName>"
$targetSubscriptionId="<targetSubID>"
$targetResourceGroupName="<targetRGName>"
$targetDiskEncryptionSetName="<targetDiskEncSetName>"
$location="<targetRegion>"
Set-AzContext -Subscription $sourceSubscriptionId
$key = Get-AzKeyVaultKey -VaultName $sourceKeyVaultName -Name $sourceKeyName
Set-AzContext -Subscription $targetSubscriptionId
$desConfig=New-AzDiskEncryptionSetConfig -Location $location `
-KeyUrl $key.Key.Kid `
-IdentityType SystemAssigned `
-RotationToLatestKeyVersionEnabled $true
$des=New-AzDiskEncryptionSet -Name $targetDiskEncryptionSetName `
-ResourceGroupName $targetResourceGroupName `
-InputObject $desConfig
Примеры
Итак, создав и настроив эти ресурсы, вы теперь можете использовать их для защиты управляемых дисков. Ниже представлены примеры скриптов с описанием соответствующего сценария, которые можно использовать для защиты управляемых дисков.
Создание виртуальной машины с помощью образа Marketplace, шифрование дисков операционной системы и данных с помощью управляемых клиентом ключей
Скопируйте скрипт, замените все примеры значений собственными параметрами и выполните его.
$VMLocalAdminUser = "yourVMLocalAdminUserName"
$VMLocalAdminSecurePassword = ConvertTo-SecureString <password> -AsPlainText -Force
$LocationName = "yourRegion"
$ResourceGroupName = "yourResourceGroupName"
$ComputerName = "yourComputerName"
$VMName = "yourVMName"
$VMSize = "yourVMSize"
$diskEncryptionSetName="yourdiskEncryptionSetName"
$NetworkName = "yourNetworkName"
$NICName = "yourNICName"
$SubnetName = "yourSubnetName"
$SubnetAddressPrefix = "10.0.0.0/24"
$VnetAddressPrefix = "10.0.0.0/16"
$SingleSubnet = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $SubnetAddressPrefix
$Vnet = New-AzVirtualNetwork -Name $NetworkName -ResourceGroupName $ResourceGroupName -Location $LocationName -AddressPrefix $VnetAddressPrefix -Subnet $SingleSubnet
$NIC = New-AzNetworkInterface -Name $NICName -ResourceGroupName $ResourceGroupName -Location $LocationName -SubnetId $Vnet.Subnets[0].Id
$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword);
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName $ComputerName -Credential $Credential -ProvisionVMAgent -EnableAutoUpdate
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $NIC.Id
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName 'MicrosoftWindowsServer' -Offer 'WindowsServer' -Skus '2012-R2-Datacenter' -Version latest
$diskEncryptionSet=Get-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name $($VMName +"_OSDisk") -DiskEncryptionSetId $diskEncryptionSet.Id -CreateOption FromImage
$VirtualMachine = Add-AzVMDataDisk -VM $VirtualMachine -Name $($VMName +"DataDisk1") -DiskSizeInGB 128 -StorageAccountType Premium_LRS -CreateOption Empty -Lun 0 -DiskEncryptionSetId $diskEncryptionSet.Id
New-AzVM -ResourceGroupName $ResourceGroupName -Location $LocationName -VM $VirtualMachine -Verbose
Создайте пустой диск, зашифрованный с помощью шифрования на стороне сервера, с ключами, управляемыми клиентом, и подключите его к виртуальной машине.
Скопируйте скрипт, замените все примеры значений собственными параметрами и выполните его.
$vmName = "yourVMName"
$LocationName = "westcentralus"
$ResourceGroupName = "yourResourceGroupName"
$diskName = "yourDiskName"
$diskSKU = "Premium_LRS"
$diskSizeinGiB = 30
$diskLUN = 1
$diskEncryptionSetName="yourDiskEncryptionSetName"
$vm = Get-AzVM -Name $vmName -ResourceGroupName $ResourceGroupName
$diskEncryptionSet=Get-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName
$vm = Add-AzVMDataDisk -VM $vm -Name $diskName -CreateOption Empty -DiskSizeInGB $diskSizeinGiB -StorageAccountType $diskSKU -Lun $diskLUN -DiskEncryptionSetId $diskEncryptionSet.Id
Update-AzVM -ResourceGroupName $ResourceGroupName -VM $vm
Шифрование существующих управляемых дисков
Существующие диски не должны быть подключены к работающей виртуальной машине, чтобы их можно было зашифровать с помощью следующего скрипта.
$rgName = "yourResourceGroupName"
$diskName = "yourDiskName"
$diskEncryptionSetName = "yourDiskEncryptionSetName"
$diskEncryptionSet = Get-AzDiskEncryptionSet -ResourceGroupName $rgName -Name $diskEncryptionSetName
New-AzDiskUpdateConfig -EncryptionType "EncryptionAtRestWithCustomerKey" -DiskEncryptionSetId $diskEncryptionSet.Id | Update-AzDisk -ResourceGroupName $rgName -DiskName $diskName
Шифрование существующего масштабируемого набора виртуальных машин (режим универсальной оркестрации) с помощью SSE и ключей, управляемых клиентом
Этот скрипт будет работать только для масштабируемых наборов в режиме универсальной оркестрации. Для масштабируемых наборов в режиме гибкой оркестрации выполните шифрование существующих управляемых дисков для каждой виртуальной машины.
Скопируйте скрипт, замените все примеры значений собственными параметрами и выполните его.
#set variables
$vmssname = "name of the vmss that is already created"
$diskencryptionsetname = "name of the diskencryptionset already created"
$vmssrgname = "vmss resourcegroup name"
$diskencryptionsetrgname = "diskencryptionset resourcegroup name"
#get vmss object and create diskencryptionset object attach to vmss os disk
$ssevmss = get-azvmss -ResourceGroupName $vmssrgname -VMScaleSetName $vmssname
$ssevmss.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.DiskEncryptionSet = New-Object -TypeName Microsoft.Azure.Management.Compute.Models.DiskEncryptionSetParameters
#get diskencryption object and retrieve the resource id
$des = Get-AzDiskEncryptionSet -ResourceGroupName $diskencryptionsetrgname -Name $diskencryptionsetname
write-host "the diskencryptionset resource id is:" $des.Id
#associate DES resource id to os disk and update vmss
$ssevmss.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.DiskEncryptionSet.id = $des.Id
$ssevmss | update-azvmss
Создание масштабируемого набора виртуальных машин с помощью образа Marketplace, шифрование дисков операционной системы и данных с помощью управляемых клиентом ключей
Скопируйте скрипт, замените все примеры значений собственными параметрами и выполните его.
Внимание
Начиная с ноября 2023 года масштабируемые наборы виртуальных машин, созданные с помощью PowerShell и Azure CLI по умолчанию будут использоваться в режиме гибкой оркестрации, если режим оркестрации не указан. Дополнительные сведения об этом изменении и действиях, которые необходимо предпринять, см. в Разрывное изменение для клиентов PowerShell/CLI vmSS — Майкрософт Community Hub
$VMLocalAdminUser = "yourLocalAdminUser"
$VMLocalAdminSecurePassword = ConvertTo-SecureString Password@123 -AsPlainText -Force
$LocationName = "westcentralus"
$ResourceGroupName = "yourResourceGroupName"
$ComputerNamePrefix = "yourComputerNamePrefix"
$VMScaleSetName = "yourVMSSName"
$VMSize = "Standard_DS3_v2"
$diskEncryptionSetName="yourDiskEncryptionSetName"
$NetworkName = "yourVNETName"
$SubnetName = "yourSubnetName"
$SubnetAddressPrefix = "10.0.0.0/24"
$VnetAddressPrefix = "10.0.0.0/16"
$SingleSubnet = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $SubnetAddressPrefix
$Vnet = New-AzVirtualNetwork -Name $NetworkName -ResourceGroupName $ResourceGroupName -Location $LocationName -AddressPrefix $VnetAddressPrefix -Subnet $SingleSubnet
$ipConfig = New-AzVmssIpConfig -Name "myIPConfig" -SubnetId $Vnet.Subnets[0].Id
$VMSS = New-AzVmssConfig -Location $LocationName -SkuCapacity 2 -SkuName $VMSize -UpgradePolicyMode 'Automatic' -OrchestrationMode 'Uniform'
$VMSS = Add-AzVmssNetworkInterfaceConfiguration -Name "myVMSSNetworkConfig" -VirtualMachineScaleSet $VMSS -Primary $true -IpConfiguration $ipConfig
$diskEncryptionSet=Get-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName
# Enable encryption at rest with customer managed keys for OS disk by setting DiskEncryptionSetId property
$VMSS = Set-AzVmssStorageProfile $VMSS -OsDiskCreateOption "FromImage" -DiskEncryptionSetId $diskEncryptionSet.Id -ImageReferenceOffer 'WindowsServer' -ImageReferenceSku '2012-R2-Datacenter' -ImageReferenceVersion latest -ImageReferencePublisher 'MicrosoftWindowsServer'
$VMSS = Set-AzVmssOsProfile $VMSS -ComputerNamePrefix $ComputerNamePrefix -AdminUsername $VMLocalAdminUser -AdminPassword $VMLocalAdminSecurePassword
# Add a data disk encrypted at rest with customer managed keys by setting DiskEncryptionSetId property
$VMSS = Add-AzVmssDataDisk -VirtualMachineScaleSet $VMSS -CreateOption Empty -Lun 1 -DiskSizeGB 128 -StorageAccountType Premium_LRS -DiskEncryptionSetId $diskEncryptionSet.Id
$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword);
New-AzVmss -VirtualMachineScaleSet $VMSS -ResourceGroupName $ResourceGroupName -VMScaleSetName $VMScaleSetName
Изменение ключа для DiskEncryptionSet с целью обновления ключа для всех ресурсов, которые ссылаются на DiskEncryptionSet.
Скопируйте скрипт, замените все примеры значений собственными параметрами и выполните его.
$ResourceGroupName="yourResourceGroupName"
$keyVaultName="yourKeyVaultName"
$keyName="yourKeyName"
$diskEncryptionSetName="yourDiskEncryptionSetName"
$keyVault = Get-AzKeyVault -VaultName $keyVaultName -ResourceGroupName $ResourceGroupName
$keyVaultKey = Get-AzKeyVaultKey -VaultName $keyVaultName -Name $keyName
Update-AzDiskEncryptionSet -Name $diskEncryptionSetName -ResourceGroupName $ResourceGroupName -SourceVaultId $keyVault.ResourceId -KeyUrl $keyVaultKey.Id
Определение состояния шифрования диска на стороне сервера
$ResourceGroupName="yourResourceGroupName"
$DiskName="yourDiskName"
$disk=Get-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $DiskName
$disk.Encryption.Type
Внимание
Управляемые клиентом ключи зависят от управляемых удостоверений для ресурсов Azure, которые предоставляются в рамках Microsoft Entra ID. При настройке управляемых пользователем ключей управляемое удостоверение автоматически назначается вашим ресурсам под капотом. Если вы впоследствии перемещаете подписку, группу ресурсов или управляемый диск из одного каталога Microsoft Entra в другой, управляемое удостоверение, связанное с управляемыми дисками, не передается новому клиенту, поэтому ключи, управляемые клиентом, больше не работают. Для получения дополнительной информации см. раздел Перенос подписки между каталогами Microsoft Entra.
Следующие шаги
- Изучите шаблоны Azure Resource Manager для создания зашифрованных дисков с помощью ключей, управляемых клиентом
- Репликация компьютеров, использующих диски с ключами, управляемыми клиентом
- Настройка аварийного восстановления виртуальных машин VMware для Azure с помощью PowerShell
- Настройка аварийного восстановления для Azure виртуальных машин Hyper-V с помощью PowerShell и Azure Resource Manager