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
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |