Créer une machine virtuelle dotée d’une protection maximale à l’aide de PowerShell

S’applique à : Windows Server 2022, Windows Server 2019, Windows Server 2016

En production, vous utilisez généralement un gestionnaire d’infrastructure (par exemple, VMM) pour déployer des machines virtuelles dotées d’une protection maximale. Toutefois, les étapes illustrées ci-dessous vous permettent de déployer et de valider l’ensemble du scénario sans gestionnaire de structure.

En résumé, vous allez créer un disque de modèle, un fichier de données de protection, un fichier de réponses d’installation sans assistance et d’autres artefacts de sécurité sur n’importe quelle machine, puis copier ces fichiers sur un hôte Service Guardian et approvisionner la machine virtuelle dotée d’une protection maximale.

Créer un disque modèle signé

Pour créer une machine virtuelle dotée d’une protection maximale, vous avez d’abord besoin d’un disque de modèle de machine virtuelle dotée d’une protection maximale préchiffré avec son volume de système d’exploitation (ou ses partitions de démarrage et racine sur Linux) signé. Suivez les liens ci-dessous pour plus d’informations sur la création d’un disque de modèle.

Vous aurez également besoin d’une copie du catalogue de signatures de volume du disque pour créer le fichier de données de protection. Pour enregistrer ce fichier, exécutez la commande suivante sur l’ordinateur sur lequel vous avez créé le disque de modèle :

Save-VolumeSignatureCatalog -TemplateDiskPath "C:\temp\MyTemplateDisk.vhdx" -VolumeSignatureCatalogPath "C:\temp\MyTemplateDiskCatalog.vsc"

Télécharger les métadonnées de Guardian

Pour chacune des infrastructures de virtualisation sur lesquelles vous souhaitez exécuter votre machine virtuelle dotée d’une protection maximale, vous devez obtenir les métadonnées de Guardian pour les clusters SGH de l’infrastructure. Votre fournisseur d’hébergement devrait être en mesure de vous fournir ces informations.

Si vous êtes dans un environnement d’entreprise et que vous pouvez communiquer avec le serveur SGH, les métadonnées du Guardian sont disponibles sur http://<NOMCLUSTERSGH>/KeyProtection/service/metadata/2014-07/metadata.xml

Créer un fichier PDK (données de protection)

Les données de protection sont créées et détenues par les propriétaires de machines virtuelles client et contiennent les secrets nécessaires pour créer des machines virtuelles dotées d’une protection maximale qui doivent être protégées par l’administrateur de l’infrastructure, comme le mot de passe administrateur de la machine virtuelle dotée d’une protection maximale. La protection des données est chiffrée de telle sorte que seuls les serveurs SGH et le locataire peuvent les déchiffrer. Une fois créé par le locataire/propriétaire de la machine virtuelle, le fichier PDK résultant doit être copié dans l’infrastructure protégée. Pour plus d’informations, consultez Qu’est-ce que la protection des données et pourquoi est-elle nécessaire ?.

En outre, vous aurez besoin d’un fichier de réponses d’installation sans assistance (unattend.xml pour Windows, varie pour Linux). Consultez Créer un fichier de réponses pour obtenir des conseils sur les éléments à inclure dans le fichier de réponses.

Exécutez les cmdlets suivantes sur une machine sur laquelle les outils d’administration de serveur distant pour machines virtuelles dotées d’une protection maximale sont installés. Si vous créez un PDK pour une machine virtuelle Linux, vous devez le faire sur un serveur exécutant Windows Server, version 1709 ou ultérieure.

# Create owner certificate, don't lose this!
# The certificate is stored at Cert:\LocalMachine\Shielded VM Local Certificates
$Owner = New-HgsGuardian –Name 'Owner' –GenerateCertificates

# Import the HGS guardian for each fabric you want to run your shielded VM
$Guardian = Import-HgsGuardian -Path C:\HGSGuardian.xml -Name 'TestFabric'

# Create the PDK file
# The "Policy" parameter describes whether the admin can see the VM's console or not
# Use "EncryptionSupported" if you are testing out shielded VMs and want to debug any issues during the specialization process
New-ShieldingDataFile -ShieldingDataFilePath 'C:\temp\Contoso.pdk' -Owner $Owner –Guardian $guardian –VolumeIDQualifier (New-VolumeIDQualifier -VolumeSignatureCatalogFilePath 'C:\temp\MyTemplateDiskCatalog.vsc' -VersionRule Equals) -WindowsUnattendFile 'C:\unattend.xml' -Policy Shielded

Provisionner une machine virtuelle dotée d’une protection maximale sur un hôte Service Guardian

Sur un hôte qui exécute Windows Server 2016, vous pouvez surveiller l’arrêt de la machine virtuelle pour signaler l’achèvement de la tâche d’approvisionnement et consulter les journaux des événements Hyper-V pour obtenir des informations sur les erreurs si l’approvisionnement échoue.

Vous pouvez également créer un nouveau disque de modèle chaque fois avant de créer une machine virtuelle dotée d’une protection maximale.

Copiez le fichier de disque du modèle (ServerOS.vhdx) et le fichier PDK (contoso.pdk) sur l’hôte Service Guardian pour vous préparer au déploiement.

Sur l’hôte Service Guardian, installez le module PowerShell Guarded Fabric Tools, qui contient la cmdlet New-ShieldedVM pour simplifier le processus d’approvisionnement. Si votre hôte Service Guardian a accès à Internet, exécutez la commande suivante :

Install-Module GuardedFabricTools -Repository PSGallery -MinimumVersion 1.0.0

Vous pouvez également télécharger le module sur un autre ordinateur disposant d’un accès à Internet et copier le module résultant dans C:\Program Files\WindowsPowerShell\Modules sur l’hôte Service Guardian.

Save-Module GuardedFabricTools -Repository PSGallery -MinimumVersion 1.0.0 -Path C:\temp\

Une fois le module installé, vous êtes prêt à approvisionner votre machine virtuelle dotée d’une protection maximale.

New-ShieldedVM -Name 'MyShieldedVM' -TemplateDiskPath 'C:\temp\MyTemplateDisk.vhdx' -ShieldingDataFilePath 'C:\temp\Contoso.pdk' -Wait

Si votre fichier de réponses aux données de protection inclut des valeurs de spécialisation, vous pouvez fournir les valeurs de remplacement à New-ShieldedVM. Dans cet exemple, le fichier de réponses est configuré avec des valeurs d’espace réservé pour une adresse IPv4 statique.

$specializationValues = @{
    "@IP4Addr-1@" = "192.168.1.10/24"
    "@MacAddr-1@" = "Ethernet"
    "@Prefix-1-1@" = "24"
    "@NextHop-1-1@" = "192.168.1.254"
}
New-ShieldedVM -Name 'MyStaticIPVM' -TemplateDiskPath 'C:\temp\MyTemplateDisk.vhdx' -ShieldingDataFilePath 'C:\temp\Contoso.pdk' -SpecializationValues $specializationValues -Wait

Si votre disque de modèle contient un système d’exploitation Linux, incluez l’indicateur -Linux lors de l’exécution de la commande :

New-ShieldedVM -Name 'MyLinuxVM' -TemplateDiskPath 'C:\temp\MyTemplateDisk.vhdx' -ShieldingDataFilePath 'C:\temp\Contoso.pdk' -Wait -Linux

Consultez le contenu d’aide avec Get-Help New-ShieldedVM -Full pour en savoir plus sur les autres options que vous pouvez passer à la cmdlet.

Une fois l’approvisionnement terminé, la machine virtuelle entre dans la phase de spécialisation spécifique au système d’exploitation, après quoi elle est prête à être utilisée. Veillez à connecter la machine virtuelle à un réseau valide afin de pouvoir vous y connecter une fois qu’elle est en cours d’exécution (à l’aide de RDP, PowerShell, SSH ou de votre outil de gestion préféré).

Exécution de machines virtuelles dotées d’une protection maximale sur un cluster Hyper-V

Si vous essayez de déployer des machines virtuelles dotées d’une protection maximale sur des hôtes protégés en cluster (à l’aide d’un cluster de basculement Windows), vous pouvez configurer la machine virtuelle dotée d’une protection maximale pour qu’elle soit hautement disponible à l’aide de la cmdlet suivante :

Add-ClusterVirtualMachineRole -VMName 'MyShieldedVM' -Cluster <Hyper-V cluster name>

La machine virtuelle dotée d’une protection maximale peut désormais être migrée en direct au sein du cluster.

Étape suivante