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éprécié 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.

Il est possible que le module AzureRM fonctionne encore, mais il ne fait plus l’objet de maintenance ni de support. L’utilisateur peut continuer à s’en servir s’il le souhaite, à ses propres risques. Consultez nos ressources sur la migration pour obtenir des conseils sur la transition vers le module Az.

Syntaxe

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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-Confirm

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

Type:SwitchParameter
Alias:cf
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-DefaultProfile

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

Type:IAzureContextContainer
Alias:AzureRmContext, AzureCredential
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Alias:ExtensionName
Position:12
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-SkipVmBackup

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

Type:SwitchParameter
Position:15
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-TypeHandlerVersion

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

Type:String
Alias:HandlerVersion, Version
Position:11
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-VMName

Spécifie le nom de la machine virtuelle.

Type:String
Alias:ResourceName
Position:1
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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
Alias:wi
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

String

SwitchParameter

Sorties

PSAzureOperationResponse