Použití modulu Azure PowerShell k povolení kompletního šifrování pomocí šifrování na hostiteli
Platí pro: ✔️ Virtuální počítače s Windows
Když povolíte šifrování na hostiteli, data uložená na hostiteli virtuálního počítače se šifrují v klidovém stavu a toky zašifrované do služby Storage. Koncepční informace o šifrování na hostiteli a dalších typech šifrování spravovaných disků najdete v tématu Šifrování na hostiteli – kompletní šifrování dat virtuálního počítače.
Omezení
- Podporováno pro disky Ultra s velikostí 4k sektorů a SSD úrovně Premium v2.
- Podporuje se pouze na 512e sektorech velikost disků Ultra a SSD úrovně Premium v2, pokud byly vytvořeny po 13. 5. 2023.
- U disků vytvořených před tímto datem vytvořte snímek disku a vytvořte nový disk pomocí snímku.
- Na virtuálních počítačích nebo ve škálovacích sadách virtuálních počítačů, které v současné době nebo kdy měly povolenou službu Azure Disk Encryption, není možné povolit.
- Azure Disk Encryption nejde povolit na discích s povoleným šifrováním na hostiteli.
- Šifrování je možné povolit ve stávajících škálovacích sadách virtuálních počítačů. Po povolení šifrování se ale automaticky zašifrují jenom nové virtuální počítače vytvořené po povolení šifrování.
- Aby bylo možné šifrovat stávající virtuální počítače, musí být uvolněné a přerozdělené.
Podporované velikosti virtuálních počítačů
Úplný seznam podporovaných velikostí virtuálních počítačů je možné načíst prostřednictvím kódu programu. Informace o tom, jak je načíst programově, najdete v části Hledání podporovaných velikostí virtuálních počítačů . Upgradem velikosti virtuálního počítače se ověří, jestli nová velikost virtuálního počítače podporuje funkci EncryptionAtHost.
Požadavky
Před použitím vlastnosti EncryptionAtHost pro váš virtuální počítač nebo VMSS musíte tuto funkci pro své předplatné povolit. Pomocí následujících kroků povolte funkci pro vaše předplatné:
Spuštěním následujícího příkazu zaregistrujte funkci pro vaše předplatné.
Register-AzProviderFeature -FeatureName "EncryptionAtHost" -ProviderNamespace "Microsoft.Compute"
Před vyzkoušením této funkce zkontrolujte, jestli je stav registrace zaregistrovaný (trvá několik minut).
Get-AzProviderFeature -FeatureName "EncryptionAtHost" -ProviderNamespace "Microsoft.Compute"
Vytvoření služby Azure Key Vault a DiskEncryptionSet
Poznámka:
Tato část se vztahuje pouze na konfigurace s klíči spravovanými zákazníkem. Pokud používáte klíče spravované platformou, můžete přeskočit do části Ukázkové skripty .
Jakmile je tato funkce povolená, musíte nastavit Službu Azure Key Vault a DiskEncryptionSet, pokud jste to ještě neudělali.
Ujistěte se, že máte nainstalovanou nejnovější verzi Azure PowerShellu a jste přihlášení k účtu Azure pomocí Connect-AzAccount.
Vytvořte instanci služby Azure Key Vault a šifrovací klíč.
Při vytváření instance služby Key Vault je nutné povolit ochranu před vymazáním. Ochrana před vymazáním zajistí, že odstraněný klíč nebude možné trvale odstranit, dokud doba uchovávání nepřesběne. Tato nastavení chrání před ztrátou dat z důvodu náhodného odstranění. Tato nastavení jsou povinná při použití služby Key Vault pro šifrování spravovaných disků.
$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
Vytvořte instanci DiskEncryptionSet. Můžete nastavit RotationToLatestKeyVersionEnabled rovnou $true povolit automatické obměně klíče. Když povolíte automatickou obměnu, systém automaticky aktualizuje všechny spravované disky, snímky a image odkazující na sadu šifrování disku tak, aby používal novou verzi klíče do jedné hodiny.
$desConfig=New-AzDiskEncryptionSetConfig -Location $LocationName ` -SourceVaultId $keyVault.ResourceId ` -KeyUrl $key.Key.Kid ` -IdentityType SystemAssigned ` -RotationToLatestKeyVersionEnabled $false $des=New-AzDiskEncryptionSet -Name $diskEncryptionSetName ` -ResourceGroupName $ResourceGroupName ` -InputObject $desConfig
Udělte prostředku DiskEncryptionSet přístup k trezoru klíčů.
Poznámka:
Vytvoření identity diskEncryptionSet ve vašem ID Microsoft Entra může trvat několik minut. Pokud se při spuštění následujícího příkazu zobrazí chyba Typu Nejde najít objekt služby Active Directory, počkejte několik minut a zkuste to znovu.
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $des.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get
Použití trezoru klíčů v jiném předplatném
Alternativně můžete spravovat služby Azure Key Vault centrálně z jednoho předplatného a používat klíče uložené ve službě Key Vault k šifrování spravovaných disků a snímků v jiných předplatných ve vaší organizaci. Díky tomu může váš bezpečnostní tým vynutit a snadno spravovat robustní zásady zabezpečení do jednoho předplatného.
Důležité
Pro tuto konfiguraci musí být služba Key Vault i sada šifrování disků ve stejné oblasti a musí používat stejného tenanta.
Následující skript představuje příklad konfigurace šifrování disku pro použití klíče ze služby Key Vault v jiném předplatném, ale ve stejné oblasti:
$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 $false
$des=New-AzDiskEncryptionSet -Name $targetDiskEncryptionSetName `
-ResourceGroupName $targetResourceGroupName `
-InputObject $desConfig
Povolení šifrování na hostiteli pro disky připojené k virtuálnímu počítači a škálovacím sadám virtuálních počítačů
Šifrování na hostiteli můžete povolit nastavením nové vlastnosti EncryptionAtHost v části securityProfile virtuálních počítačů nebo škálovacích sad virtuálních počítačů pomocí rozhraní API verze 2020-06-01 a vyšší.
"securityProfile": { "encryptionAtHost": "true" }
Ukázkové skripty
Vytvořte virtuální počítač s šifrováním na hostiteli s klíči spravovanými zákazníkem.
Vytvořte virtuální počítač se spravovanými disky pomocí identifikátoru URI prostředku diskEncryptionSet vytvořeného dříve pro šifrování mezipaměti operačního systému a datových disků pomocí klíčů spravovaných zákazníkem. Dočasné disky jsou šifrované pomocí klíčů spravovaných platformou.
$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
Vytvoření virtuálního počítače s šifrováním na hostiteli s využitím klíčů spravovaných platformou
Vytvořte virtuální počítač s šifrováním na hostiteli, který umožňuje šifrovat mezipaměť disků s operačním systémem a datových disků a dočasné disky pomocí klíčů spravovaných platformou.
$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
Aktualizujte virtuální počítač tak, aby povolil šifrování na hostiteli.
$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
Kontrola stavu šifrování na hostiteli pro virtuální počítač
$ResourceGroupName = "yourResourceGroupName"
$VMName = "yourVMName"
$VM = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName
$VM.SecurityProfile.EncryptionAtHost
Zakázání šifrování na hostiteli
Před zakázáním šifrování na hostiteli musíte virtuální počítač uvolnit.
$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
Vytvořte škálovací sadu virtuálních počítačů s šifrováním na hostiteli s povolenými klíči spravovanými zákazníkem.
Důležité
Od listopadu 2023 se škálovací sady virtuálních počítačů vytvořené pomocí PowerShellu a Azure CLI ve výchozím nastavení nastaví do flexibilního režimu orchestrace, pokud není zadaný žádný režim orchestrace. Další informace o této změně a akcích, které byste měli provést, najdete v tématu Zásadní změna pro zákazníky PowerShellu nebo rozhraní příkazového řádku VMSS – Microsoft Community Hub.
Vytvořte škálovací sadu virtuálních počítačů se spravovanými disky pomocí identifikátoru URI prostředku diskEncryptionSet vytvořeného dříve pro šifrování mezipaměti operačního systému a datových disků pomocí klíčů spravovaných zákazníkem. Dočasné disky jsou šifrované pomocí klíčů spravovaných platformou.
$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
Vytvořte škálovací sadu virtuálních počítačů s šifrováním na hostiteli s klíči spravovanými platformou.
Důležité
Od listopadu 2023 se škálovací sady virtuálních počítačů vytvořené pomocí PowerShellu a Azure CLI ve výchozím nastavení nastaví do flexibilního režimu orchestrace, pokud není zadaný žádný režim orchestrace. Další informace o této změně a akcích, které byste měli provést, najdete v tématu Zásadní změna pro zákazníky PowerShellu nebo rozhraní příkazového řádku VMSS – Microsoft Community Hub.
Vytvořte škálovací sadu virtuálních počítačů s šifrováním na hostiteli, která umožňuje šifrování mezipaměti disků s operačním systémem a datových disků a dočasných disků pomocí klíčů spravovaných platformou.
$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
Aktualizujte škálovací sadu virtuálních počítačů, aby bylo možné povolit šifrování na hostiteli.
$ResourceGroupName = "yourResourceGroupName"
$VMScaleSetName = "yourVMSSName"
$VMSS = Get-AzVmss -ResourceGroupName $ResourceGroupName -Name $VMScaleSetName
Update-AzVmss -VirtualMachineScaleSet $VMSS -Name $VMScaleSetName -ResourceGroupName $ResourceGroupName -EncryptionAtHost $true
Kontrola stavu šifrování na hostiteli pro škálovací sadu virtuálních počítačů
$ResourceGroupName = "yourResourceGroupName"
$VMScaleSetName = "yourVMSSName"
$VMSS = Get-AzVmss -ResourceGroupName $ResourceGroupName -Name $VMScaleSetName
$VMSS.VirtualMachineProfile.SecurityProfile.EncryptionAtHost
Aktualizujte škálovací sadu virtuálních počítačů, aby se zakázalo šifrování na hostiteli.
Šifrování na hostiteli ve škálovací sadě virtuálních počítačů můžete zakázat, ale to ovlivní jenom virtuální počítače vytvořené po zakázání šifrování na hostiteli. U existujících virtuálních počítačů musíte virtuální počítač uvolnit, zakázat šifrování na hostiteli na daném virtuálním počítači a pak virtuální počítač znovu přidělit.
$ResourceGroupName = "yourResourceGroupName"
$VMScaleSetName = "yourVMSSName"
$VMSS = Get-AzVmss -ResourceGroupName $ResourceGroupName -Name $VMScaleSetName
Update-AzVmss -VirtualMachineScaleSet $VMSS -Name $VMScaleSetName -ResourceGroupName $ResourceGroupName -EncryptionAtHost $false
Vyhledání podporovaných velikostí virtuálních počítačů
Starší velikosti virtuálních počítačů se nepodporují. Seznampodporovaných
Volání rozhraní API skladových položek prostředků a kontrola, jestli EncryptionAtHostSupported
je funkce nastavená na hodnotu True.
{
"resourceType": "virtualMachines",
"name": "Standard_DS1_v2",
"tier": "Standard",
"size": "DS1_v2",
"family": "standardDSv2Family",
"locations": [
"CentralUSEUAP"
],
"capabilities": [
{
"name": "EncryptionAtHostSupported",
"value": "True"
}
]
}
Nebo volání rutiny PowerShellu 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
}
}
}
Další kroky
Teď, když jste tyto prostředky vytvořili a nakonfigurovali, můžete je použít k zabezpečení spravovaných disků. Následující odkaz obsahuje ukázkové skripty, z nichž každý má odpovídající scénář, který můžete použít k zabezpečení spravovaných disků.