Partilhar via


Set-AzureRmVMDiskEncryptionExtension

Habilita a criptografia em uma máquina virtual IaaS em execução no Azure.

Aviso

O módulo AzureRM do PowerShell foi oficialmente preterido a partir de 29 de fevereiro de 2024. Os usuários são aconselhados a migrar do AzureRM para o módulo Az PowerShell para garantir suporte e atualizações contínuos.

Embora o módulo AzureRM ainda possa funcionar, ele não é mais mantido ou suportado, colocando qualquer uso continuado a critério e risco do usuário. Consulte nossos recursos de migração para obter orientação sobre a transição para o módulo Az.

Sintaxe

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

O cmdlet Set-AzureRmVMDiskEncryptionExtension habilita a criptografia em uma máquina virtual IaaS (infraestrutura como serviço) em execução no Azure. Esse cmdlet habilita a criptografia instalando a extensão de criptografia de disco na máquina virtual. Se nenhum parâmetro Name for especificado, uma extensão com o nome padrão AzureDiskEncryption para máquinas virtuais que executam o sistema operacional Windows ou AzureDiskEncryptionForLinux para máquinas virtuais Linux será instalada. Esse cmdlet requer a confirmação dos usuários, pois uma das etapas para habilitar a criptografia requer uma reinicialização da máquina virtual. É aconselhável que você salve seu trabalho na máquina virtual antes de executar este cmdlet.

Exemplos

Exemplo 1: Ativar encriptação

$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

Este exemplo demonstra a habilitação da criptografia sem especificar as credenciais do AD.

Exemplo 2: Habilitar a criptografia com entrada canalizada

$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

Este exemplo demonstra o envio de parâmetros usando a entrada em pipeline para habilitar a criptografia sem especificar credenciais do AD.

Exemplo 3: Habilitar a criptografia usando a ID do Cliente do Microsoft Entra e o Segredo do 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

Este exemplo habilita a criptografia usando a ID do cliente Microsoft Entra e o segredo do cliente.

Exemplo 4: Habilitar a criptografia usando a ID do cliente Microsoft Entra e a impressão digital da certificação do 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

Este exemplo habilita a criptografia usando a ID do cliente Microsoft Entra e impressões digitais de certificação do cliente.

Exemplo 5: Habilitar a criptografia usando a ID do cliente Microsoft Entra, o segredo do cliente e a chave de criptografia do disco wrap usando a chave de criptografia de chave

$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

Este exemplo habilita a criptografia usando a ID do cliente Microsoft Entra, o segredo do cliente e a chave de criptografia do disco wrap usando a chave de criptografia de chave.

Exemplo 6: Habilite a criptografia usando a ID do cliente Microsoft Entra, a impressão digital do certificado do cliente e a chave de criptografia do disco wrap usando a chave de criptografia de chave

$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

Este exemplo habilita a criptografia usando a ID do cliente Microsoft Entra, a impressão digital do certificado do cliente e a chave de criptografia do disco wrap usando a chave de criptografia de chave.

Parâmetros

-AadClientCertThumbprint

Especifica a impressão digital do certificado de cliente do aplicativo Microsoft Entra que tem permissões para gravar segredos no KeyVault. Como pré-requisito, o certificado de cliente do Microsoft Entra deve ser implantado previamente no armazenamento de certificados do computador my local da máquina virtual. O cmdlet Add-AzureRmVMSecret pode ser usado para implantar um certificado em uma máquina virtual no Azure. Para obter mais detalhes, consulte a ajuda do cmdlet Add-AzureRmVMSecret . O certificado deve ser implantado previamente no computador local da máquina virtual meu armazenamento de certificados.

Tipo:String
Position:3
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-AadClientID

Especifica a ID do cliente do aplicativo Microsoft Entra que tem permissões para gravar segredos no KeyVault.

Tipo:String
Position:2
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-AadClientSecret

Especifica o segredo do cliente do aplicativo Microsoft Entra que tem permissões para gravar segredos no KeyVault.

Tipo:String
Position:3
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-Confirm

Solicita a sua confirmação antes de executar o cmdlet.

Tipo:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-DefaultProfile

As credenciais, a conta, o locatário e a assinatura usados para comunicação com o Azure.

Tipo:IAzureContextContainer
Aliases:AzureRmContext, AzureCredential
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-DisableAutoUpgradeMinorVersion

Indica que esse cmdlet desabilita a atualização automática da versão secundária da extensão.

Tipo:SwitchParameter
Position:14
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-DiskEncryptionKeyVaultId

Especifica o ID do recurso do KeyVault para o qual as chaves de criptografia da máquina virtual devem ser carregadas.

Tipo:String
Position:5
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-DiskEncryptionKeyVaultUrl

Especifica a URL do KeyVault para a qual as chaves de criptografia da máquina virtual devem ser carregadas.

Tipo:String
Position:4
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-EncryptFormatAll

Criptografar-Formatar todas as unidades de dados que ainda não estão criptografadas

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-ExtensionPublisherName

O nome do editor da extensão. Especifique esse parâmetro apenas para substituir o valor padrão de "Microsoft.Azure.Security".

Tipo:String
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-ExtensionType

O tipo de extensão. Especifique esse parâmetro para substituir seu valor padrão de "AzureDiskEncryption" para VMs Windows e "AzureDiskEncryptionForLinux" para VMs Linux.

Tipo:String
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-Force

Força o comando a ser executado sem pedir a confirmação do usuário.

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-KeyEncryptionAlgorithm

Especifica o algoritmo usado para encapsular e desencapsular a chave de criptografia de chave da máquina virtual. O valor padrão é RSA-OAEP.

Tipo:String
Valores aceites:RSA-OAEP, RSA1_5
Position:8
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-KeyEncryptionKeyUrl

Especifica a URL da chave de criptografia de chave usada para encapsular e desencapsular a chave de criptografia da máquina virtual. Este deve ser o URL com versão completa.

Tipo:String
Position:6
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-KeyEncryptionKeyVaultId

Especifica a ID do recurso do KeyVault que contém a chave de criptografia de chave usada para encapsular e desempacotar a chave de criptografia da máquina virtual. Este deve ser um URL com versão completa.

Tipo:String
Position:7
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-Name

Especifica o nome do recurso do Azure Resource Manager que representa a extensão. O valor padrão é AzureDiskEncryption para máquinas virtuais que executam o sistema operacional Windows ou AzureDiskEncryptionForLinux para máquinas virtuais Linux.

Tipo:String
Aliases:ExtensionName
Position:12
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-Passphrase

Especifica a senha usada apenas para criptografar máquinas virtuais Linux. Este parâmetro não é usado para máquinas virtuais que executam o sistema operacional Windows.

Tipo:String
Position:13
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-ResourceGroupName

Especifica o nome do grupo de recursos da máquina virtual.

Tipo:String
Position:0
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-SequenceVersion

Especifica o número de sequência das operações de criptografia para uma máquina virtual. Isso é exclusivo para cada operação de criptografia executada na mesma máquina virtual. O cmdlet Get-AzureRmVMExtension pode ser usado para recuperar o número de sequência anterior que foi usado.

Tipo:String
Position:10
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-SkipVmBackup

Ignorar a criação de backup para VMs Linux

Tipo:SwitchParameter
Position:15
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-TypeHandlerVersion

Especifica a versão da extensão de criptografia.

Tipo:String
Aliases:HandlerVersion, Version
Position:11
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-VMName

Especifica o nome da máquina virtual.

Tipo:String
Aliases:ResourceName
Position:1
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-VolumeType

Especifica o tipo de volumes de máquina virtual para executar a operação de criptografia. Os valores permitidos para máquinas virtuais que executam o sistema operacional Windows são os seguintes: Todos, SO e Dados. Os valores permitidos para máquinas virtuais Linux são os seguintes: Todos, SO e Dados quando suportados pela distribuição Linux.

Tipo:String
Valores aceites:OS, Data, All
Position:9
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-WhatIf

Apresenta o que aconteceria mediante a execução do cmdlet. O cmdlet não é executado.

Tipo:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

Entradas

String

SwitchParameter

Saídas

PSAzureOperationResponse