Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ Виртуальные машины Windows
При включении шифрования на узле данные, хранящиеся на узле виртуальной машины, шифруются при хранении и передаются в зашифрованном виде в службу хранилища. Общие сведения о шифровании на узле и других типах шифрования управляемых дисков см. в разделе "Шифрование на узле— сквозное шифрование данных виртуальной машины".
Ограничения
- Не может быть включено на виртуальных машинах или масштабируемых наборах виртуальных машин, на которых в настоящее время или когда-либо было включено шифрование дисков Azure.
- Шифрование дисков Azure нельзя включить на дисках с включенным шифрованием на узле.
- Шифрование можно включить в существующих масштабируемых наборах виртуальных машин. Однако автоматически выполняется шифрование только новых виртуальных машин, созданных после включения шифрования.
- Для шифрования существующие виртуальные машины необходимо освободить и перераспределить.
Следующие ограничения применяются только к дискам категории "Ультра" и SSD уровня "Премиум" версии 2.
- Диски, использующие размер сектора 512e, должны быть созданы после 5/13.2023.
- Если диск был создан до этой даты, снимайте диск и создайте новый диск с помощью моментального снимка.
Поддерживаемые размеры виртуальных машин
Полный список поддерживаемых размеров виртуальных машин можно получить программным способом. Чтобы узнать, как получить их программным способом, ознакомьтесь с разделом "Поиск поддерживаемых размеров виртуальных машин ". Обновление размера виртуальной машины приводит к проверке, чтобы проверить, поддерживает ли новый размер виртуальной машины функцию EncryptionAtHost.
Предпосылки
Прежде чем использовать свойство EncryptionAtHost для виртуальной машины или VMSS, необходимо включить эту функцию в подписке. Для активации функции для вашей подписки выполните следующие действия:
Выполните следующую команду, чтобы зарегистрировать функцию для подписки
Register-AzProviderFeature -FeatureName "EncryptionAtHost" -ProviderNamespace "Microsoft.Compute"Убедитесь, что состояние регистрации зарегистрировано (занимает несколько минут) с помощью следующей команды, прежде чем попробовать эту функцию.
Get-AzProviderFeature -FeatureName "EncryptionAtHost" -ProviderNamespace "Microsoft.Compute"
Создание Azure Key Vault и DiskEncryptionSet
Замечание
Этот раздел относится только к конфигурациям с ключами, управляемыми клиентом. Если вы используете ключи, управляемые платформой, можно перейти к разделу "Примеры сценариев ".
После включения функции необходимо настроить 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 может потребоваться несколько минут. Если при выполнении следующей команды появляется сообщение об ошибке вида "Не удается найти объект Active Directory", подождите несколько минут и повторите попытку.
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $des.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get
Использование хранилища ключей в другой подписке
В качестве альтернативы, вы можете централизованно управлять Azure Key Vaults из одного подписки и использовать ключи, хранящиеся в 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
Включение шифрования на узле для дисков, подключенных к виртуальной машине и масштабируемым наборам виртуальных машин
Вы можете включить шифрование на узле, задав новое свойство EncryptionAtHost в разделе securityProfile виртуальных машин или масштабируемых наборов виртуальных машин с помощью API версии 2020-06-01 и выше.
"securityProfile": { "encryptionAtHost": "true" }
Примеры скриптов
Создайте виртуальную машину с шифрованием на узле с поддержкой ключей, управляемых клиентом.
Создайте виртуальную машину с управляемыми дисками, используя URI ресурса для ранее созданного набора DiskEncryptionSet, чтобы зашифровать кэш дисков ОС и данных с помощью ключей, управляемых клиентом. Шифрование временных дисков выполняется с ключами, управляемыми платформой.
$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);
# Enable encryption at host by specifying EncryptionAtHost parameter
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize -EncryptionAtHost
$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
# Enable encryption with a customer managed key for OS disk by setting DiskEncryptionSetId property
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name $($VMName +"_OSDisk") -DiskEncryptionSetId $diskEncryptionSet.Id -CreateOption FromImage
# Add a data disk encrypted with a customer managed key by setting DiskEncryptionSetId property
$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
Создайте виртуальную машину с шифрованием на узле с поддержкой ключей, управляемых платформой.
Создайте виртуальную машину с шифрованием на узле, чтобы шифровать кэш ОС, дисков данных и временных дисков с ключами, управляемыми платформой.
$VMLocalAdminUser = "yourVMLocalAdminUserName"
$VMLocalAdminSecurePassword = ConvertTo-SecureString <password> -AsPlainText -Force
$LocationName = "yourRegion"
$ResourceGroupName = "yourResourceGroupName"
$ComputerName = "yourComputerName"
$VMName = "yourVMName"
$VMSize = "yourVMSize"
$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);
# Enable encryption at host by specifying EncryptionAtHost parameter
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize -EncryptionAtHost
$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
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name $($VMName +"_OSDisk") -CreateOption FromImage
$VirtualMachine = Add-AzVMDataDisk -VM $VirtualMachine -Name $($VMName +"DataDisk1") -DiskSizeInGB 128 -StorageAccountType Premium_LRS -CreateOption Empty -Lun 0
New-AzVM -ResourceGroupName $ResourceGroupName -Location $LocationName -VM $VirtualMachine
Обновите виртуальную машину, чтобы включить шифрование на узле.
$ResourceGroupName = "yourResourceGroupName"
$VMName = "yourVMName"
$VM = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName
Stop-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName -Force
Update-AzVM -VM $VM -ResourceGroupName $ResourceGroupName -EncryptionAtHost $true
Проверьте состояния шифрования на узле виртуальной машины.
$ResourceGroupName = "yourResourceGroupName"
$VMName = "yourVMName"
$VM = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName
$VM.SecurityProfile.EncryptionAtHost
Отключение шифрования на узле
Необходимо освободить виртуальную машину, прежде чем можно будет отключить шифрование на узле.
$ResourceGroupName = "yourResourceGroupName"
$VMName = "yourVMName"
$VM = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName
Stop-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName -Force
Update-AzVM -VM $VM -ResourceGroupName $ResourceGroupName -EncryptionAtHost $false
Создайте масштабируемый набор виртуальных машин с шифрованием на узле с поддержкой ключей, управляемых клиентом.
Это важно
Начиная с ноября 2023 года масштабируемые наборы виртуальных машин, созданные с помощью PowerShell и Azure CLI, по умолчанию будут использоваться в режиме гибкой оркестрации, если режим оркестрации не указан. Дополнительные сведения об этом изменении и о действиях, которые необходимо предпринять, см. в руководстве по критическим изменениям для клиентов VmSS PowerShell/CLI — Microsoft Community Hub
Создайте масштабируемый набор виртуальных машин с управляемыми дисками, используя URI ресурса DiskEncryptionSet, созданного ранее, чтобы шифровать кэш ОС и данных дисков с помощью ключей, управляемых клиентом. Шифрование временных дисков выполняется с ключами, управляемыми платформой.
$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
# Enable encryption at host by specifying EncryptionAtHost parameter
$VMSS = New-AzVmssConfig -Location $LocationName -SkuCapacity 2 -SkuName $VMSize -OrchestrationMode "Flexible" -EncryptionAtHost
$VMSS = Add-AzVmssNetworkInterfaceConfiguration -Name "myVMSSNetworkConfig" -VirtualMachineScaleSet $VMSS -Primary $true -IpConfiguration $ipConfig
$diskEncryptionSet=Get-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName
# Enable encryption with a customer managed key for the 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 with a customer managed key by setting DiskEncryptionSetId property
$VMSS = Add-AzVmssDataDisk -VirtualMachineScaleSet $VMSS -CreateOption Empty -Lun 1 -DiskSizeGB 128 -StorageAccountType Premium_LRS -DiskEncryptionSetId $diskEncryptionSet.Id
Создайте масштабируемый набор виртуальных машин с шифрованием на узле с поддержкой ключей, управляемых платформой.
Это важно
Начиная с ноября 2023 года масштабируемые наборы виртуальных машин, созданные с помощью PowerShell и Azure CLI, по умолчанию будут использоваться в режиме гибкой оркестрации, если режим оркестрации не указан. Дополнительные сведения об этом изменении и о действиях, которые необходимо предпринять, см. в руководстве по критическим изменениям для клиентов VmSS PowerShell/CLI — Microsoft Community Hub
Создайте масштабируемый набор виртуальных машин с шифрованием на узле, чтобы шифровать кэш дисков ОС/данных и временных дисков с помощью ключей, управляемых платформой.
$VMLocalAdminUser = "yourLocalAdminUser"
$VMLocalAdminSecurePassword = ConvertTo-SecureString Password@123 -AsPlainText -Force
$LocationName = "westcentralus"
$ResourceGroupName = "yourResourceGroupName"
$ComputerNamePrefix = "yourComputerNamePrefix"
$VMScaleSetName = "yourVMSSName"
$VMSize = "Standard_DS3_v2"
$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
# Enable encryption at host by specifying EncryptionAtHost parameter
$VMSS = New-AzVmssConfig -Location $LocationName -SkuCapacity 2 -SkuName $VMSize -OrchestrationMode "Flexible" -EncryptionAtHost
$VMSS = Add-AzVmssNetworkInterfaceConfiguration -Name "myVMSSNetworkConfig" -VirtualMachineScaleSet $VMSS -Primary $true -IpConfiguration $ipConfig
$VMSS = Set-AzVmssStorageProfile $VMSS -OsDiskCreateOption "FromImage" -ImageReferenceOffer 'WindowsServer' -ImageReferenceSku '2012-R2-Datacenter' -ImageReferenceVersion latest -ImageReferencePublisher 'MicrosoftWindowsServer'
$VMSS = Set-AzVmssOsProfile $VMSS -ComputerNamePrefix $ComputerNamePrefix -AdminUsername $VMLocalAdminUser -AdminPassword $VMLocalAdminSecurePassword
$VMSS = Add-AzVmssDataDisk -VirtualMachineScaleSet $VMSS -CreateOption Empty -Lun 1 -DiskSizeGB 128 -StorageAccountType Premium_LRS
$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword);
New-AzVmss -VirtualMachineScaleSet $VMSS -ResourceGroupName $ResourceGroupName -VMScaleSetName $VMScaleSetName
Обновите масштабируемый набор виртуальных машин, чтобы включить шифрование на узле.
$ResourceGroupName = "yourResourceGroupName"
$VMScaleSetName = "yourVMSSName"
$VMSS = Get-AzVmss -ResourceGroupName $ResourceGroupName -Name $VMScaleSetName
Update-AzVmss -VirtualMachineScaleSet $VMSS -Name $VMScaleSetName -ResourceGroupName $ResourceGroupName -EncryptionAtHost $true
Проверка состояния шифрования на узле для масштабируемого набора виртуальных машин
$ResourceGroupName = "yourResourceGroupName"
$VMScaleSetName = "yourVMSSName"
$VMSS = Get-AzVmss -ResourceGroupName $ResourceGroupName -Name $VMScaleSetName
$VMSS.VirtualMachineProfile.SecurityProfile.EncryptionAtHost
Обновите масштабируемый набор виртуальных машин, чтобы отключить шифрование на уровне хоста.
Вы можете отключить шифрование на узле в масштабируемом наборе виртуальных машин, но это повлияет только на виртуальные машины, созданные после отключения шифрования на узле. Для существующих виртуальных машин необходимо освободить виртуальную машину, отключить шифрование на узле на этой отдельной виртуальной машине, а затем перераспределить виртуальную машину.
$ResourceGroupName = "yourResourceGroupName"
$VMScaleSetName = "yourVMSSName"
$VMSS = Get-AzVmss -ResourceGroupName $ResourceGroupName -Name $VMScaleSetName
Update-AzVmss -VirtualMachineScaleSet $VMSS -Name $VMScaleSetName -ResourceGroupName $ResourceGroupName -EncryptionAtHost $false
Поиск поддерживаемых размеров виртуальных машин
Устаревшие размеры виртуальных машин не поддерживаются. Список поддерживаемых размеров виртуальных машин можно найти следующими способами:
Вызов API Skus resource и проверка того, EncryptionAtHostSupported что для возможности задано значение True.
{
"resourceType": "virtualMachines",
"name": "Standard_DS1_v2",
"tier": "Standard",
"size": "DS1_v2",
"family": "standardDSv2Family",
"locations": [
"CentralUS"
],
"capabilities": [
{
"name": "EncryptionAtHostSupported",
"value": "True"
}
]
}
Или вызовите командлет Get-AzComputeResourceSku PowerShell.
Get-AzComputeResourceSku -Location "centralus" |
Where-Object { $_.ResourceType -eq 'virtualMachines' -and $_.capabilities.where({ $_.Name -eq 'EncryptionAtHostSupported' }, 'First').Value -eq 'True' } |
Select-Object -ExpandProperty Name
Дальнейшие шаги
Итак, создав и настроив эти ресурсы, вы теперь можете использовать их для защиты управляемых дисков. По ссылке ниже доступны примеры отдельных сценариев, которые можно использовать для защиты управляемых дисков.