Azure PowerShell – Ügyfél által felügyelt kulcsok engedélyezése kiszolgálóoldali titkosítással – felügyelt lemezek

A következőkre vonatkozik: ✔️ Windows rendszerű virtuális gépek ✔️ Rugalmas méretezési csoportok ✔️ Egységes méretezési csoportok

Az Azure Disk Storage lehetővé teszi saját kulcsok kezelését, ha kiszolgálóoldali titkosítást (S Standard kiadás) használ felügyelt lemezekhez, ha úgy dönt. Az S Standard kiadás ügyfél által felügyelt kulcsokkal és más felügyelt lemeztitkosítási típusokkal kapcsolatos elméleti információkért tekintse meg a lemeztitkosítási cikk ügyfél által felügyelt kulcsokkal foglalkozó szakaszát.

Korlátozások

Az ügyfél által felügyelt kulcsok jelenleg a következő korlátozásokkal rendelkeznek:

  • Ha ez a funkció növekményes pillanatképeket tartalmazó lemezek esetében engedélyezve van, akkor nem tiltható le a lemezen vagy a pillanatképeken. Ennek megkerüléséhez másolja az összes adatot egy teljesen más felügyelt lemezre, amely nem ügyfél által felügyelt kulcsokat használ. Ezt az Azure CLI-vel vagy az Azure PowerShell-modullal teheti meg.
  • Csak a 2048 bites, 3072 bites és 4096 bites szoftver- és HSM RSA-kulcsok támogatottak, más kulcsok és méretek nélkül.
  • Csak ultralemezekhez és prémium SSD v2-lemezekhez:
    • A kiszolgálóoldali titkosítással és az ügyfél által felügyelt kulcsokkal titkosított lemezekről létrehozott pillanatképeket ugyanazokkal az ügyfél által felügyelt kulcsokkal kell titkosítani.
    • A felhasználó által hozzárendelt felügyelt identitások nem támogatottak az ügyfelek által felügyelt kulcsokkal titkosított Ultra Disks és Premium SSD v2 lemezek esetében.
  • Az ügyfél által felügyelt kulcsokhoz (lemeztitkosítási csoportokhoz, virtuális gépekhez, lemezekhez és pillanatképekhez) kapcsolódó legtöbb erőforrásnak ugyanabban az előfizetésben és régióban kell lennie.
    • Az Azure Key Vaultok egy másik előfizetésből is használhatók, de ugyanabban a régióban kell lenniük, mint a lemeztitkosítási csoportnak. Előzetes verzióként különböző Microsoft Entra-bérlők Azure Key Vaultjait használhatja.
  • Az ügyfél által felügyelt kulcsokkal titkosított lemezek csak akkor léphetnek át egy másik erőforráscsoportba, ha a hozzájuk csatolt virtuális gép felszabadítva van.
  • Az ügyfél által felügyelt kulcsokkal titkosított lemezek, pillanatképek és képek nem helyezhetők át az előfizetések között.
  • Az Azure Disk Encryption használatával jelenleg vagy korábban titkosított felügyelt lemezek nem titkosíthatók ügyfél által felügyelt kulcsokkal.
  • Előfizetésenként régiónként legfeljebb 5000 lemeztitkosítási csoport hozható létre.
  • Az ügyfél által felügyelt kulcsok megosztott képtárakkal való használatával kapcsolatos információkért lásd : Előzetes verzió: Ügyfél által felügyelt kulcsok használata a képek titkosításához.

Azure Key Vault és DiskEncryptionSet beállítása opcionálisan automatikus kulcsforgatással

Ha ügyfél által felügyelt kulcsokat szeretne használni az S Standard kiadás használatával, be kell állítania egy Azure Key Vaultot és egy DiskEncryptionSet-erőforrást.

  1. Győződjön meg arról, hogy telepítette a legújabb Azure PowerShell-verziót, és bejelentkezett egy Azure-fiókba az Csatlakozás-AzAccount használatával

  2. Hozzon létre egy Azure Key Vault-példányt és egy titkosítási kulcsot.

    A Key Vault-példány létrehozásakor engedélyeznie kell a törlés elleni védelmet. A törlés elleni védelem biztosítja, hogy a törölt kulcsok nem törölhetők véglegesen, amíg a megőrzési időszak el nem telik. Ezek a beállítások védelmet nyújtanak a véletlen törlés miatti adatvesztéstől. Ezek a beállítások kötelezőek, ha key vaultot használnak a felügyelt lemezek titkosításához.

    $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 
    
  3. Hozzon létre egy DiskEncryptionSet-példányt. A kulcs automatikus elforgatásának engedélyezéséhez $true értékével egyenlő rotációt állíthat be a RotationToLatestKeyVersionEnabled értékre. Ha engedélyezi az automatikus forgatást, a rendszer automatikusan frissíti az összes felügyelt lemezt, pillanatképet és lemezképet, amely a lemeztitkosítási csoportra hivatkozik, hogy egy órán belül használja a kulcs új verzióját.

    $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
    
  4. Adjon hozzáférést a DiskEncryptionSet erőforrásnak a kulcstartóhoz.

    Feljegyzés

    Eltarthat néhány percig, amíg az Azure létrehozza a DiskEncryptionSet identitását a Microsoft Entra-azonosítójában. Ha a következő parancs futtatásakor "Nem található az Active Directory-objektum" hibaüzenet jelenik meg, várjon néhány percet, és próbálkozzon újra.

    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $des.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get
    

Kulcstartó használata egy másik előfizetésben

Másik lehetőségként egyetlen előfizetésből központilag kezelheti az Azure Key Vaultokat, és a Key Vaultban tárolt kulcsokkal titkosíthatja a szervezet más előfizetéseiben lévő felügyelt lemezeket és pillanatképeket. Ez lehetővé teszi, hogy a biztonsági csapat egyetlen előfizetésre kényszerítse és egyszerűen kezelje a robusztus biztonsági szabályzatokat.

Fontos

Ebben a konfigurációban a Key Vaultnak és a lemeztitkosítási csoportnak ugyanabban a régióban kell lennie, és ugyanazt a bérlőt kell használnia.

Az alábbi szkript egy példa arra, hogyan konfigurálhat egy lemeztitkosítási csoportot úgy, hogy egy key vault kulcsát használja egy másik előfizetésben, de ugyanabban a régióban:

$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

Példák

Most, hogy létrehozta és konfigurálta ezeket az erőforrásokat, használhatja őket a felügyelt lemezek védelmére. Az alábbiakban példaszkripteket talál, amelyek mindegyike rendelkezik egy adott forgatókönyvvel, amelyekkel biztonságossá teheti a felügyelt lemezeket.

Virtuális gép létrehozása Marketplace-rendszerkép használatával, az operációs rendszer és az adatlemezek ügyfél által felügyelt kulcsokkal történő titkosítása

Másolja ki a szkriptet, cserélje le az összes példaértéket a saját paramétereire, majd futtassa.

$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

Hozzon létre egy kiszolgálóoldali titkosítással titkosított üres lemezt ügyfél által felügyelt kulcsokkal, és csatolja azt egy virtuális géphez

Másolja ki a szkriptet, cserélje le az összes példaértéket a saját paramétereire, majd futtassa.

$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

Meglévő felügyelt lemezek titkosítása

A meglévő lemezeket nem szabad futó virtuális géphez csatolni ahhoz, hogy a következő szkripttel titkosíthassa őket:

$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

Meglévő virtuálisgép-méretezési csoport (egységes vezénylési mód) titkosítása S Standard kiadás és ügyfél által felügyelt kulcsokkal

Ez a szkript csak egységes vezénylési módban működik a méretezési csoportoknál. Rugalmas vezénylési módban lévő méretezési csoportok esetén kövesse az egyes virtuális gépek meglévő felügyelt lemezeinek titkosítását.

Másolja ki a szkriptet, cserélje le az összes példaértéket a saját paramétereire, majd futtassa:

#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

Virtuálisgép-méretezési csoport létrehozása Marketplace-rendszerkép használatával, az operációs rendszer és az adatlemezek ügyfél által felügyelt kulcsokkal történő titkosítása

Másolja ki a szkriptet, cserélje le az összes példaértéket a saját paramétereire, majd futtassa.

Fontos

2023 novemberétől a PowerShell és az Azure CLI használatával létrehozott virtuálisgép-méretezési csoportok alapértelmezés szerint rugalmas vezénylési módba kerülnek, ha nincs megadva vezénylési mód. A módosítással és a végrehajtandó műveletekkel kapcsolatos további információkért tekintse meg a VMSS PowerShell/CLI-ügyfelek kompatibilitástörő változását – Microsoft 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

A DiskEncryptionSet kulcsának módosítása a DiskEncryptionSetre hivatkozó összes erőforrás kulcsának elforgatásához

Másolja ki a szkriptet, cserélje le az összes példaértéket a saját paramétereire, majd futtassa.

$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

Lemez kiszolgálóoldali titkosításának állapotának megkeresése

$ResourceGroupName="yourResourceGroupName"
$DiskName="yourDiskName"

$disk=Get-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $DiskName
$disk.Encryption.Type

Fontos

Az ügyfél által felügyelt kulcsok az Azure-erőforrások felügyelt identitásaira támaszkodnak, amely a Microsoft Entra ID egyik funkciója. Az ügyfél által felügyelt kulcsok konfigurálásakor a rendszer automatikusan hozzárendel egy felügyelt identitást az erőforrásokhoz a fedelek alatt. Ha ezt követően áthelyezi az előfizetést, az erőforráscsoportot vagy a felügyelt lemezt egy Microsoft Entra-címtárból egy másikba, a felügyelt lemezekhez társított felügyelt identitás nem lesz átadva az új bérlőnek, így előfordulhat, hogy az ügyfél által felügyelt kulcsok már nem működnek. További információ: Előfizetés átadása a Microsoft Entra-címtárak között.

Következő lépések