Set-AzureRmVMDiskEncryptionExtension
Habilita el cifrado en una máquina virtual IaaS en ejecución en Azure.
Advertencia
El módulo de PowerShell de AzureRM ha quedado en desuso oficialmente a partir del 29 de febrero de 2024. Se recomienda a los usuarios migrar de AzureRM al módulo Az PowerShell para seguir recibiendo soporte técnico y actualizaciones.
Aunque el módulo AzureRM puede seguir funcionando, ya no se mantiene ni se admite, colocando cualquier uso continuado a discreción y riesgo del usuario. Consulte nuestros recursos de migración para ver una guía sobre la transición al módulo Az.
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 mediante la instalación de 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: Habilitación del 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 Microsoft Entra 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 Microsoft Entra y el secreto de cliente.
Ejemplo 4: Habilitación del cifrado mediante el identificador de cliente de Microsoft Entra 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 Microsoft Entra y las huellas digitales de certificación de cliente.
Ejemplo 5: Habilitación del cifrado mediante el identificador de cliente de Microsoft Entra, 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 Microsoft Entra, 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 Microsoft Entra, 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 Microsoft Entra, 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 Microsoft Entra que tiene permisos para escribir secretos en KeyVault.
Como requisito previo, el certificado de cliente de Microsoft Entra 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 de 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.
Tipo: | String |
Position: | 3 |
valor predeterminado: | None |
Requerido: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-AadClientID
Especifica el identificador de cliente de la aplicación Microsoft Entra que tiene permisos para escribir secretos en KeyVault.
Tipo: | String |
Position: | 2 |
valor predeterminado: | None |
Requerido: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-AadClientSecret
Especifica el secreto de cliente de la aplicación Microsoft Entra que tiene permisos para escribir secretos en KeyVault.
Tipo: | String |
Position: | 3 |
valor predeterminado: | None |
Requerido: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Confirm
Le solicita su confirmación antes de ejecutar el cmdlet.
Tipo: | SwitchParameter |
Aliases: | cf |
Position: | Named |
valor predeterminado: | False |
Requerido: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DefaultProfile
Credenciales, cuenta, inquilino y suscripción usados para la comunicación con Azure.
Tipo: | IAzureContextContainer |
Aliases: | AzureRmContext, AzureCredential |
Position: | Named |
valor predeterminado: | None |
Requerido: | False |
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.
Tipo: | SwitchParameter |
Position: | 14 |
valor predeterminado: | None |
Requerido: | False |
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.
Tipo: | String |
Position: | 5 |
valor predeterminado: | None |
Requerido: | True |
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.
Tipo: | String |
Position: | 4 |
valor predeterminado: | None |
Requerido: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-EncryptFormatAll
Cifrar y dar formato a todas las unidades de datos que aún no están cifradas
Tipo: | SwitchParameter |
Position: | Named |
valor predeterminado: | None |
Requerido: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ExtensionPublisherName
Nombre del publicador de extensión. Especifique este parámetro solo para invalidar el valor predeterminado de "Microsoft.Azure.Security".
Tipo: | String |
Position: | Named |
valor predeterminado: | None |
Requerido: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ExtensionType
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.
Tipo: | String |
Position: | Named |
valor predeterminado: | None |
Requerido: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
Obliga al comando a ejecutarse sin solicitar la confirmación del usuario.
Tipo: | SwitchParameter |
Position: | Named |
valor predeterminado: | None |
Requerido: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-KeyEncryptionAlgorithm
Especifica el algoritmo que se usa para encapsular y desencapsular la clave de cifrado de claves de la máquina virtual. El valor predeterminado es RSA-OAEP.
Tipo: | String |
valores aceptados: | RSA-OAEP, RSA1_5 |
Position: | 8 |
valor predeterminado: | None |
Requerido: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-KeyEncryptionKeyUrl
Especifica la dirección URL de la clave de cifrado de claves 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.
Tipo: | String |
Position: | 6 |
valor predeterminado: | None |
Requerido: | False |
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.
Tipo: | String |
Position: | 7 |
valor predeterminado: | None |
Requerido: | False |
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.
Tipo: | String |
Aliases: | ExtensionName |
Position: | 12 |
valor predeterminado: | None |
Requerido: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Passphrase
Especifica la frase de contraseña que se usa solo para cifrar máquinas virtuales Linux. Este parámetro no se usa para máquinas virtuales que ejecutan el sistema operativo Windows.
Tipo: | String |
Position: | 13 |
valor predeterminado: | None |
Requerido: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ResourceGroupName
Especifica el nombre del grupo de recursos de la máquina virtual.
Tipo: | String |
Position: | 0 |
valor predeterminado: | None |
Requerido: | True |
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ó.
Tipo: | String |
Position: | 10 |
valor predeterminado: | None |
Requerido: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SkipVmBackup
Omitir la creación de copias de seguridad para máquinas virtuales Linux
Tipo: | SwitchParameter |
Position: | 15 |
valor predeterminado: | None |
Requerido: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-TypeHandlerVersion
Especifica la versión de la extensión de cifrado.
Tipo: | String |
Aliases: | HandlerVersion, Version |
Position: | 11 |
valor predeterminado: | None |
Requerido: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-VMName
Especifica el nombre de la máquina virtual.
Tipo: | String |
Aliases: | ResourceName |
Position: | 1 |
valor predeterminado: | None |
Requerido: | True |
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.
Tipo: | String |
valores aceptados: | OS, Data, All |
Position: | 9 |
valor predeterminado: | None |
Requerido: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.
Tipo: | SwitchParameter |
Aliases: | wi |
Position: | Named |
valor predeterminado: | False |
Requerido: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |