Set-AzureRmVMDiskEncryptionExtension

Habilita el cifrado en una máquina virtual IaaS en ejecución en Azure.

Importante

Como los módulos de Az PowerShell ya tienen todas las funcionalidades de los de AzureRM PowerShell, incluso más, el 29 de febrero de 2024 se van a retirar estos últimos.

Para evitar interrupciones del servicio, actualice los scripts que usan los módulos de AzureRM PowerShell para que utilicen los de Az PowerShell antes del 29 de febrero de 2024. Para actualizar automáticamente los scripts, siga la guía de inicio rápido.

Syntax

Set-AzureRmVMDiskEncryptionExtension
   [-ResourceGroupName] <String>
   [-VMName] <String>
   [-DiskEncryptionKeyVaultUrl] <String>
   [-DiskEncryptionKeyVaultId] <String>
   [[-KeyEncryptionKeyUrl] <String>]
   [[-KeyEncryptionKeyVaultId] <String>]
   [[-KeyEncryptionAlgorithm] <String>]
   [[-VolumeType] <String>]
   [[-SequenceVersion] <String>]
   [[-TypeHandlerVersion] <String>]
   [[-Name] <String>]
   [[-Passphrase] <String>]
   [-Force]
   [-DisableAutoUpgradeMinorVersion]
   [-SkipVmBackup]
   [-ExtensionType <String>]
   [-ExtensionPublisherName <String>]
   [-EncryptFormatAll]
   [-DefaultProfile <IAzureContextContainer>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-AzureRmVMDiskEncryptionExtension
   [-ResourceGroupName] <String>
   [-VMName] <String>
   [-AadClientID] <String>
   [-AadClientSecret] <String>
   [-DiskEncryptionKeyVaultUrl] <String>
   [-DiskEncryptionKeyVaultId] <String>
   [[-KeyEncryptionKeyUrl] <String>]
   [[-KeyEncryptionKeyVaultId] <String>]
   [[-KeyEncryptionAlgorithm] <String>]
   [[-VolumeType] <String>]
   [[-SequenceVersion] <String>]
   [[-TypeHandlerVersion] <String>]
   [[-Name] <String>]
   [[-Passphrase] <String>]
   [-Force]
   [-DisableAutoUpgradeMinorVersion]
   [-SkipVmBackup]
   [-ExtensionType <String>]
   [-ExtensionPublisherName <String>]
   [-EncryptFormatAll]
   [-DefaultProfile <IAzureContextContainer>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-AzureRmVMDiskEncryptionExtension
   [-ResourceGroupName] <String>
   [-VMName] <String>
   [-AadClientID] <String>
   [-AadClientCertThumbprint] <String>
   [-DiskEncryptionKeyVaultUrl] <String>
   [-DiskEncryptionKeyVaultId] <String>
   [[-KeyEncryptionKeyUrl] <String>]
   [[-KeyEncryptionKeyVaultId] <String>]
   [[-KeyEncryptionAlgorithm] <String>]
   [[-VolumeType] <String>]
   [[-SequenceVersion] <String>]
   [[-TypeHandlerVersion] <String>]
   [[-Name] <String>]
   [[-Passphrase] <String>]
   [-Force]
   [-DisableAutoUpgradeMinorVersion]
   [-SkipVmBackup]
   [-ExtensionType <String>]
   [-ExtensionPublisherName <String>]
   [-EncryptFormatAll]
   [-DefaultProfile <IAzureContextContainer>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

El cmdlet Set-AzureRmVMDiskEncryptionExtension habilita el cifrado en una máquina virtual de infraestructura como servicio (IaaS) en ejecución en Azure. Este cmdlet habilita el cifrado instalando la extensión de cifrado de disco en la máquina virtual. Si no se especifica ningún parámetro Name , se instala una extensión con el nombre predeterminado AzureDiskEncryption para las máquinas virtuales que ejecutan el sistema operativo Windows o AzureDiskEncryptionForLinux para máquinas virtuales Linux. Este cmdlet requiere confirmación de los usuarios como uno de los pasos para habilitar el cifrado requiere un reinicio de la máquina virtual. Se recomienda guardar el trabajo en la máquina virtual antes de ejecutar este cmdlet.

Ejemplos

Ejemplo 1: Habilitar el cifrado

$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGName -VMName $VMName -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId

En este ejemplo se muestra cómo habilitar el cifrado sin especificar credenciales de AD.

Ejemplo 2: Habilitación del cifrado con entrada canalización

$params = New-Object PSObject -Property @{
    ResourceGroupName = "[resource-group-name]"
    VMName = "[vm-name]"
    DiskEncryptionKeyVaultId = "/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]"
    DiskEncryptionKeyVaultUrl = "https://[keyvault-name].vault.azure.net"
    KeyEncryptionKeyVaultId = "/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]"
    KeyEncryptionKeyUrl = "https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]"
    VolumeType = "All"
}

$params | Set-AzureRmVmDiskEncryptionExtension

En este ejemplo se muestra el envío de parámetros mediante la entrada canalización para habilitar el cifrado sin especificar credenciales de AD.

Ejemplo 3: Habilitación del cifrado mediante el identificador de cliente de Azure AD y el secreto de cliente

$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
$AADClientID = "<clientID of your Azure AD app>"
$AADClientSecret = "<clientSecret of your Azure AD app>"
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGName -VMName $VMName -AadClientID $AADClientID -AadClientSecret $AADClientSecret -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId

En este ejemplo se habilita el cifrado mediante el identificador de cliente de Azure AD y el secreto de cliente.

Ejemplo 4: Habilitación del cifrado mediante el identificador de cliente de Azure AD y la huella digital de certificación de cliente

$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
#The KeyVault must have enabledForDiskEncryption property set on it
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId

# create Azure AD application and associate the certificate
$CertPath = "C:\certificates\examplecert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AzureAdApplication = New-AzureRmADApplication -DisplayName "<Your Application Display Name>" -HomePage "<https://YourApplicationHomePage>" -IdentifierUris "<https://YouApplicationUri>" -CertValue $CertValue
$ServicePrincipal = New-AzureRmADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId

$AADClientID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint

#Upload pfx to KeyVault
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$JSONObject = @"
    {
        "data" : "$filecontentencoded",
        "dataType" : "pfx",
        "password" : "$CertPassword"
    }
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)

$Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName $VaultName -Name $KeyVaultSecretName -SecretValue $Secret
Set-AzureRmKeyVaultAccessPolicy -VaultName $VaultName -ResourceGroupName $RGName -EnabledForDeployment

#deploy cert to VM
$CertUrl = (Get-AzureKeyVaultSecret -VaultName $VaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName).ResourceId
$VM = Get-AzureRmVM -ResourceGroupName $RGName -Name $VMName
$VM = Add-AzureRmVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
Update-AzureRmVM -VM $VM -ResourceGroupName $RGName

#Enable encryption on the virtual machine using Azure AD client ID and client cert thumbprint
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId

En este ejemplo se habilita el cifrado mediante el identificador de cliente de Azure AD y las huellas digitales de certificación de cliente.

Ejemplo 5: Habilitación del cifrado mediante el identificador de cliente de Azure AD, el secreto de cliente y la clave de cifrado de disco mediante la clave de cifrado de claves

$RGName = "MyResourceGroup"
$VMName = "MyTestVM"

$AADClientID = "<clientID of your Azure AD app>"
$AADClientSecret = "<clientSecret of your Azure AD app>"

$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId

$KEKName = "MyKeyEncryptionKey"
$KEK = Add-AzureKeyVaultKey -VaultName $VaultName -Name $KEKName -Destination "Software"
$KeyEncryptionKeyUrl = $KEK.Key.kid

Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGName -VMName $VMName -AadClientID $AADClientID -AadClientSecret $AADClientSecret -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $KeyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId

En este ejemplo se habilita el cifrado mediante el identificador de cliente de Azure AD, el secreto de cliente y la clave de cifrado de disco mediante la clave de cifrado de claves.

Ejemplo 6: Habilitación del cifrado mediante el identificador de cliente de Azure AD, la huella digital del certificado de cliente y la clave de cifrado de disco mediante la clave de cifrado de claves

$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
#The KeyVault must have enabledForDiskEncryption property set on it
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
$KEKName = "MyKeyEncryptionKey"
$KEK = Add-AzureKeyVaultKey -VaultName $VaultName -Name $KEKName -Destination "Software"
$KeyEncryptionKeyUrl = $KEK.Key.kid

# create Azure AD application and associate the certificate
$CertPath = "C:\certificates\examplecert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AzureAdApplication = New-AzureRmADApplication -DisplayName "<Your Application Display Name>" -HomePage "<https://YourApplicationHomePage>" -IdentifierUris "<https://YouApplicationUri>" -CertValue $CertValue
$ServicePrincipal = New-AzureRmADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId

$AADClientID = $AzureAdApplication.ApplicationId
$AADClientCertThumbprint= $Cert.Thumbprint

#Upload pfx to KeyVault
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($FileContentBytes)
$JSONObject = @"
    {
        "data" : "$filecontentencoded",
        "dataType" : "pfx",
        "password" : "$CertPassword"
    }
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($JSONObject)
$JsonEncoded = [System.Convert]::ToBase64String($JSONObjectBytes)
$Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName $VaultName-Name $KeyVaultSecretName -SecretValue $Secret
Set-AzureRmKeyVaultAccessPolicy -VaultName $VaultName -ResourceGroupName $RGName -EnabledForDeployment

#deploy cert to VM
$CertUrl = (Get-AzureKeyVaultSecret -VaultName $VaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName).ResourceId
$VM = Get-AzureRmVM -ResourceGroupName $RGName -Name $VMName
$VM = Add-AzureRmVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
Update-AzureRmVM -VM $VM -ResourceGroupName $RGName

#Enable encryption on the virtual machine using Azure AD client ID and client cert thumbprint
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGname -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $KeyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId

En este ejemplo se habilita el cifrado mediante el identificador de cliente de Azure AD, la huella digital del certificado de cliente y la clave de cifrado de disco mediante la clave de cifrado de claves.

Parámetros

-AadClientCertThumbprint

Especifica la huella digital del certificado de cliente de aplicación de AzureActive Directory (Azure AD) que tiene permisos para escribir secretos en KeyVault. Como requisito previo, el certificado de cliente de Azure AD debe implementarse previamente en el almacén de certificados del equipo my local de la máquina virtual. El cmdlet Add-AzureRmVMSecret se puede usar para implementar un certificado en una máquina virtual en Azure. Para más información, consulte la ayuda del cmdlet Add-AzureRmVMSecret . El certificado debe implementarse previamente en el equipo local de la máquina virtual mi almacén de certificados.

Type:String
Position:3
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-AadClientID

Especifica el identificador de cliente de la aplicación de Azure AD que tiene permisos para escribir secretos en KeyVault.

Type:String
Position:2
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-AadClientSecret

Especifica el secreto de cliente de la aplicación de Azure AD que tiene permisos para escribir secretos en KeyVault.

Type:String
Position:3
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Confirm

Le solicita su confirmación antes de ejecutar el cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-DefaultProfile

Credenciales, cuenta, inquilino y suscripción usados para la comunicación con Azure.

Type:IAzureContextContainer
Aliases:AzureRmContext, AzureCredential
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-DisableAutoUpgradeMinorVersion

Indica que este cmdlet deshabilita la actualización automática de la versión secundaria de la extensión.

Type:SwitchParameter
Position:14
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-DiskEncryptionKeyVaultId

Especifica el identificador de recurso de KeyVault al que se deben cargar las claves de cifrado de la máquina virtual.

Type:String
Position:5
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-DiskEncryptionKeyVaultUrl

Especifica la dirección URL de KeyVault a la que se deben cargar las claves de cifrado de la máquina virtual.

Type:String
Position:4
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-EncryptFormatAll

Encrypt-Format todas las unidades de datos que aún no están cifradas

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-ExtensionPublisherName

Nombre del publicador de extensiones. Especifique este parámetro solo para invalidar el valor predeterminado de "Microsoft.Azure.Security".

Type:String
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-ExtensionType

El tipo de extensión. Especifique este parámetro para invalidar su valor predeterminado de "AzureDiskEncryption" para máquinas virtuales Windows y "AzureDiskEncryptionForLinux" para máquinas virtuales Linux.

Type:String
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Force

Obliga al comando a ejecutarse sin solicitar la confirmación del usuario.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-KeyEncryptionAlgorithm

Especifica el algoritmo que se usa para encapsular y desencapsular la clave de cifrado de clave de la máquina virtual. El valor predeterminado es RSA-OAEP.

Type:String
Accepted values:RSA-OAEP, RSA1_5
Position:8
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-KeyEncryptionKeyUrl

Especifica la dirección URL de la clave de cifrado de clave que se usa para encapsular y desencapsular la clave de cifrado de la máquina virtual. Debe ser la dirección URL con versión completa.

Type:String
Position:6
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-KeyEncryptionKeyVaultId

Especifica el identificador de recurso de KeyVault que contiene la clave de cifrado de claves que se usa para encapsular y desencapsular la clave de cifrado de la máquina virtual. Debe ser una dirección URL con versión completa.

Type:String
Position:7
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Name

Especifica el nombre del recurso de Azure Resource Manager que representa la extensión. El valor predeterminado es AzureDiskEncryption para máquinas virtuales que ejecutan el sistema operativo Windows o AzureDiskEncryptionForLinux para máquinas virtuales Linux.

Type:String
Aliases:ExtensionName
Position:12
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Passphrase

Especifica la frase de contraseña usada solo para cifrar máquinas virtuales Linux. Este parámetro no se usa para las máquinas virtuales que ejecutan el sistema operativo Windows.

Type:String
Position:13
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-ResourceGroupName

Especifica el nombre del grupo de recursos de la máquina virtual.

Type:String
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-SequenceVersion

Especifica el número de secuencia de las operaciones de cifrado de una máquina virtual. Esto es único por cada operación de cifrado realizada en la misma máquina virtual. El cmdlet Get-AzureRmVMExtension se puede usar para recuperar el número de secuencia anterior que se usó.

Type:String
Position:10
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-SkipVmBackup

Omitir la creación de copias de seguridad para máquinas virtuales Linux

Type:SwitchParameter
Position:15
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-TypeHandlerVersion

Especifica la versión de la extensión de cifrado.

Type:String
Aliases:HandlerVersion, Version
Position:11
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-VMName

Especifica el nombre de la máquina virtual.

Type:String
Aliases:ResourceName
Position:1
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-VolumeType

Especifica el tipo de volúmenes de máquina virtual para realizar la operación de cifrado. Los valores permitidos para las máquinas virtuales que ejecutan el sistema operativo Windows son los siguientes: All, OS y Data. Los valores permitidos para las máquinas virtuales Linux son los siguientes: All, OS y Data cuando sea compatible con la distribución de Linux.

Type:String
Accepted values:OS, Data, All
Position:9
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-WhatIf

Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

String

SwitchParameter

Salidas

PSAzureOperationResponse