Partager via


Set-AzureRmVMDiskEncryptionExtension

Active le chiffrement sur une machine virtuelle IaaS en cours d’exécution dans Azure.

Avertissement

Le module AzureRM PowerShell a été officiellement déconseillé depuis le 29 février 2024. Les utilisateurs sont invités à migrer d’AzureRM vers le module Az PowerShell afin de s’assurer d’une prise en charge et des mises à jour continues.

Bien que le module AzureRM puisse toujours fonctionner, il n’est plus conservé ou pris en charge, plaçant toute utilisation continue à la discrétion et au risque de l’utilisateur. Consultez nos ressources sur la migration pour obtenir des conseils sur la transition vers le module 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

L’applet de commande Set-AzureRmVMDiskEncryptionExtension active le chiffrement sur une machine virtuelle IaaS (Infrastructure as a Service) en cours d’exécution dans Azure. Cette applet de commande active le chiffrement en installant l’extension de chiffrement de disque sur la machine virtuelle. Si aucun paramètre Name n’est spécifié, une extension portant le nom par défaut AzureDiskEncryption pour les machines virtuelles qui exécutent le système d’exploitation Windows ou AzureDiskEncryptionForLinux pour les machines virtuelles Linux est installée. Cette applet de commande nécessite la confirmation des utilisateurs en tant qu’une des étapes permettant d’activer le chiffrement nécessite un redémarrage de la machine virtuelle. Il est recommandé d’enregistrer votre travail sur la machine virtuelle avant d’exécuter cette applet de commande.

Exemples

Exemple 1 : Activer le chiffrement

$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

Cet exemple illustre l’activation du chiffrement sans spécifier d’informations d’identification AD.

Exemple 2 : Activer le chiffrement avec une entrée pipeline

$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

Cet exemple illustre l’envoi de paramètres à l’aide d’une entrée pipeline pour activer le chiffrement sans spécifier d’informations d’identification AD.

Exemple 3 : Activer le chiffrement à l’aide de l’ID client Microsoft Entra et de la clé secrète client

$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

Cet exemple active le chiffrement à l’aide de l’ID client Microsoft Entra et de la clé secrète client.

Exemple 4 : Activer le chiffrement à l’aide de l’ID client Microsoft Entra et de l’empreinte numérique de certification du client

$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

Cet exemple active le chiffrement à l’aide de l’ID client Microsoft Entra et des empreintes numériques de certification du client.

Exemple 5 : Activer le chiffrement à l’aide de l’ID client Microsoft Entra, de la clé secrète client et de la clé de chiffrement de disque en utilisant la clé de chiffrement de clé

$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

Cet exemple active le chiffrement à l’aide de l’ID client Microsoft Entra, de la clé secrète client et de la clé de chiffrement de disque en utilisant la clé de chiffrement de clé.

Exemple 6 : Activer le chiffrement à l’aide de l’ID client Microsoft Entra, de l’empreinte numérique du certificat client et de la clé de chiffrement de disque en utilisant la clé de chiffrement de clé

$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

Cet exemple active le chiffrement à l’aide de l’ID client Microsoft Entra, de l’empreinte numérique du certificat client et de la clé de chiffrement de disque en utilisant la clé de chiffrement de clé.

Paramètres

-AadClientCertThumbprint

Spécifie l’empreinte numérique du certificat client de l’application Microsoft Entra qui dispose des autorisations nécessaires pour écrire des secrets dans KeyVault. En guise de prérequis, le certificat client Microsoft Entra doit être précédemment déployé dans le magasin de certificats d’ordinateur my local de la machine virtuelle. L’applet de commande Add-AzureRmVMSecret peut être utilisée pour déployer un certificat sur une machine virtuelle dans Azure. Pour plus d’informations, consultez l’aide de l’applet de commande Add-AzureRmVMSecret . Le certificat doit être déployé précédemment sur l’ordinateur local de la machine virtuelle, mon magasin de certificats.

Type:String
Position:3
valeur par défaut:None
Obligatoire:True
Accept pipeline input:True
Accept wildcard characters:False

-AadClientID

Spécifie l’ID client de l’application Microsoft Entra qui dispose des autorisations nécessaires pour écrire des secrets dans KeyVault.

Type:String
Position:2
valeur par défaut:None
Obligatoire:True
Accept pipeline input:True
Accept wildcard characters:False

-AadClientSecret

Spécifie la clé secrète client de l’application Microsoft Entra qui dispose des autorisations nécessaires pour écrire des secrets dans KeyVault.

Type:String
Position:3
valeur par défaut:None
Obligatoire:True
Accept pipeline input:True
Accept wildcard characters:False

-Confirm

Vous demande une confirmation avant d’exécuter l’applet de commande.

Type:SwitchParameter
Aliases:cf
Position:Named
valeur par défaut:False
Obligatoire:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultProfile

Informations d’identification, compte, locataire et abonnement utilisés pour la communication avec Azure.

Type:IAzureContextContainer
Aliases:AzureRmContext, AzureCredential
Position:Named
valeur par défaut:None
Obligatoire:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableAutoUpgradeMinorVersion

Indique que cette applet de commande désactive la mise à niveau automatique de la version mineure de l’extension.

Type:SwitchParameter
Position:14
valeur par défaut:None
Obligatoire:False
Accept pipeline input:True
Accept wildcard characters:False

-DiskEncryptionKeyVaultId

Spécifie l’ID de ressource du Coffre de clés dans lequel les clés de chiffrement de machine virtuelle doivent être chargées.

Type:String
Position:5
valeur par défaut:None
Obligatoire:True
Accept pipeline input:True
Accept wildcard characters:False

-DiskEncryptionKeyVaultUrl

Spécifie l’URL KeyVault vers laquelle les clés de chiffrement de machine virtuelle doivent être chargées.

Type:String
Position:4
valeur par défaut:None
Obligatoire:True
Accept pipeline input:True
Accept wildcard characters:False

-EncryptFormatAll

Chiffrer-Mettre en forme tous les lecteurs de données qui ne sont pas déjà chiffrés

Type:SwitchParameter
Position:Named
valeur par défaut:None
Obligatoire:False
Accept pipeline input:False
Accept wildcard characters:False

-ExtensionPublisherName

Nom de l’éditeur d’extension. Spécifiez ce paramètre uniquement pour remplacer la valeur par défaut de « Microsoft.Azure.Security ».

Type:String
Position:Named
valeur par défaut:None
Obligatoire:False
Accept pipeline input:True
Accept wildcard characters:False

-ExtensionType

Type d’extension. Spécifiez ce paramètre pour remplacer sa valeur par défaut « AzureDiskEncryption » pour les machines virtuelles Windows et « AzureDiskEncryptionForLinux » pour les machines virtuelles Linux.

Type:String
Position:Named
valeur par défaut:None
Obligatoire:False
Accept pipeline input:True
Accept wildcard characters:False

-Force

Force l’exécution de la commande sans demander la confirmation de l’utilisateur.

Type:SwitchParameter
Position:Named
valeur par défaut:None
Obligatoire:False
Accept pipeline input:False
Accept wildcard characters:False

-KeyEncryptionAlgorithm

Spécifie l’algorithme utilisé pour encapsuler et décompresser la clé de chiffrement de clé de la machine virtuelle. La valeur par défaut est RSA-OAEP.

Type:String
valeurs acceptées:RSA-OAEP, RSA1_5
Position:8
valeur par défaut:None
Obligatoire:False
Accept pipeline input:True
Accept wildcard characters:False

-KeyEncryptionKeyUrl

Spécifie l’URL de la clé de chiffrement de clé utilisée pour encapsuler et décompresser la clé de chiffrement de machine virtuelle. Il doit s’agir de l’URL complète avec version.

Type:String
Position:6
valeur par défaut:None
Obligatoire:False
Accept pipeline input:True
Accept wildcard characters:False

-KeyEncryptionKeyVaultId

Spécifie l’ID de ressource du Coffre de clés qui contient la clé de chiffrement de clé utilisée pour encapsuler et décompresser la clé de chiffrement de la machine virtuelle. Il doit s’agir d’une URL complète avec version.

Type:String
Position:7
valeur par défaut:None
Obligatoire:False
Accept pipeline input:True
Accept wildcard characters:False

-Name

Spécifie le nom de la ressource Azure Resource Manager qui représente l’extension. La valeur par défaut est AzureDiskEncryption pour les machines virtuelles qui exécutent le système d’exploitation Windows ou AzureDiskEncryptionForLinux pour les machines virtuelles Linux.

Type:String
Aliases:ExtensionName
Position:12
valeur par défaut:None
Obligatoire:False
Accept pipeline input:True
Accept wildcard characters:False

-Passphrase

Spécifie la phrase secrète utilisée pour chiffrer uniquement les machines virtuelles Linux. Ce paramètre n’est pas utilisé pour les machines virtuelles qui exécutent le système d’exploitation Windows.

Type:String
Position:13
valeur par défaut:None
Obligatoire:False
Accept pipeline input:True
Accept wildcard characters:False

-ResourceGroupName

Spécifie le nom du groupe de ressources de la machine virtuelle.

Type:String
Position:0
valeur par défaut:None
Obligatoire:True
Accept pipeline input:True
Accept wildcard characters:False

-SequenceVersion

Spécifie le numéro de séquence des opérations de chiffrement pour une machine virtuelle. Il s’agit d’une opération de chiffrement unique par opération de chiffrement effectuée sur la même machine virtuelle. L’applet de commande Get-AzureRmVMExtension peut être utilisée pour récupérer le numéro de séquence précédent utilisé.

Type:String
Position:10
valeur par défaut:None
Obligatoire:False
Accept pipeline input:True
Accept wildcard characters:False

-SkipVmBackup

Ignorer la création de sauvegarde pour les machines virtuelles Linux

Type:SwitchParameter
Position:15
valeur par défaut:None
Obligatoire:False
Accept pipeline input:True
Accept wildcard characters:False

-TypeHandlerVersion

Spécifie la version de l’extension de chiffrement.

Type:String
Aliases:HandlerVersion, Version
Position:11
valeur par défaut:None
Obligatoire:False
Accept pipeline input:True
Accept wildcard characters:False

-VMName

Spécifie le nom de la machine virtuelle.

Type:String
Aliases:ResourceName
Position:1
valeur par défaut:None
Obligatoire:True
Accept pipeline input:True
Accept wildcard characters:False

-VolumeType

Spécifie le type de volumes de machine virtuelle à effectuer l’opération de chiffrement. Les valeurs autorisées pour les machines virtuelles qui exécutent le système d’exploitation Windows sont les suivantes : Tous, système d’exploitation et données. Les valeurs autorisées pour les machines virtuelles Linux sont les suivantes : Tous, système d’exploitation et données lorsqu’elles sont prises en charge par la distribution Linux.

Type:String
valeurs acceptées:OS, Data, All
Position:9
valeur par défaut:None
Obligatoire:False
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Montre ce qui se passe en cas d’exécution de l’applet de commande. L’applet de commande n’est pas exécutée.

Type:SwitchParameter
Aliases:wi
Position:Named
valeur par défaut:False
Obligatoire:False
Accept pipeline input:False
Accept wildcard characters:False

Entrées

String

SwitchParameter

Sorties

PSAzureOperationResponse