(Préversion) Activer le lancement fiable sur un groupe de machines virtuelles identiques existant
S’applique à : ✔️ Machines virtuelles Linux ✔️ Machines virtuelles Windows ✔️ Groupes de machines virtuelles identiques uniformes
Azure Virtual Machine Scale Sets prend en charge l’activation du lancement fiable sur des groupes identiques uniformes existants en procédant à une mise à niveau vers le type de sécurité Lancement fiable.
Le lancement fiable active la sécurité de calcul fondamentale sur les machines virtuelles et groupes identiques Azure Génération 2 et protège contre les techniques d’attaque avancées et persistantes telles que les kits de démarrage et les rootkits. Cela est possible en combinant des technologies d’infrastructure telles que le démarrage sécurisé, vTPM et la surveillance de l’intégrité du démarrage sur votre groupe identique.
Limites
Actuellement, l’activation du lancement fiable sur des groupes de machines virtuelles identiques existants avec des disques de données attachés n’est pas prise en charge.
- Pour vérifier si le groupe identique est configuré avec le disque de données, accédez au groupe identique ->Disques sous le menu Paramètres -> vérifiez sous le titre Disques de données
Actuellement, l’activation du lancement fiable sur des groupes de machines virtuelles identiques flexibles existants n’est pas prise en charge.
Actuellement, l’activation du lancement fiable sur les clusters Service Fabric et les clusters managés Service Fabric existants n’est pas prise en charge.
Prérequis
- Inscrire la fonctionnalité en préversion
ImageSkuGenUpdateWithVMSS
sous l’espace de nomsMicrosoft.Compute
dans l’abonnement du groupe identique. Pour plus d’informations, consultez Configurer des fonctionnalités en préversion dans un abonnement Azure. - Le groupe identique n’est pas dépendant des fonctionnalités actuellement non prises en charge avec le lancement fiable.
- Le groupe identique doit être configuré avec la famille de tailles prises en charge par le lancement fiable
Remarque
- Vous pouvez changer la taille des machines virtuelles quand vous passez au lancement fiable. Vérifiez que le quota pour la nouvelle taille de machine virtuelle est fonctionnelle pour éviter les échecs de mise à niveau. Consultez Vérifier les quotas de processeur virtuel.
- Les changements de taille de machine virtuelle recréent une instance de machine virtuelle avec une nouvelle taille et demandent un temps d’arrêt de chaque instance de machine virtuelle. Il est possible d’effectuer une mise à niveau progressive pour éviter les temps d’arrêt du groupe identique.
- Le groupe identique doit être configuré avec l’image de système d’exploitation prise en charge par le lancement fiable. Pour l’image de système d’exploitation Azure Compute Gallery, vérifiez que la définition de l’image est marquée comme TrustedLaunchSupported
Activer le lancement fiable sur un groupe identique uniforme existant
Cette section décrit les étapes permettant d’utiliser un modèle ARM pour activer le lancement fiable sur un groupe de machines virtuelles identiques uniforme existant.
Apportez les modifications suivantes à votre code de déploiement de modèle ARM existant. Pour obtenir un modèle complet, reportez-vous à Quickstart Trusted launch Scale set ARM template.
Important
Le type de sécurité de lancement fiable est disponible avec un groupe identique apiVersion
2020-12-01
ou version supérieure. Vérifiez que la version d’API est correctement définie avant la mise à niveau.
Image de système d’exploitation : mettez à jour la référence de l’image de système d’exploitation avec l’image de système d’exploitation prise en charge par le lancement fiable Gen2. Vérifiez que l’image Gen2 source a
TrustedLaunchSupported
comme type de sécurité si vous utilisez l’image de système d’exploitation Azure Compute Gallery."storageProfile": { "osDisk": { "createOption": "FromImage", "caching": "ReadWrite" }, "imageReference": { "publisher": "MicrosoftWindowsServer", "offer": "WindowsServer", "sku": "2022-datacenter-azure-edition", "version": "latest" } }
(Facultatif) Taille du groupe identique : changez la taille du groupe identique si la famille de tailles actuelle n’est pas prise en charge avec la configuration de sécurité du lancement fiable.
"sku": { "name": "Standard_D2s_v3", "tier": "Standard", "capacity": "[parameters('instanceCount')]" }
Profil de sécurité : ajoutez le bloc
securityProfile
sousvirtualMachineProfile
pour activer la configuration de sécurité du lancement fiable.Remarque
Paramètres recommandés :
vTPM
:true
etsecureBoot
:true
secureBoot
doivent être définis surfalse
si vous utilisez un noyau ou un pilote personnalisé non signé sur le système d’exploitation."securityProfile": { "securityType": "TrustedLaunch", "uefiSettings": { "secureBootEnabled": true, "vTpmEnabled": true } }
(Recommandé) Extension d’attestation d’invité : ajoutez Extension d’attestation d’invité (GA) pour la ressource de groupe identique, ce qui active Surveillance de l’intégrité du démarrage pour le groupe identique.
Important
Avec l’extension d’attestation d’invité,
secureBoot
etvTPM
doivent être définis surtrue
.{ "condition": "[and(parameters('vTPM'), parameters('secureBoot'))]", "type": "Microsoft.Compute/virtualMachineScaleSets/extensions", "apiVersion": "2022-03-01", "name": "[format('{0}/{1}', parameters('vmssName'), GuestAttestation)]", "location": "[parameters('location')]", "properties": { "publisher": "Microsoft.Azure.Security.WindowsAttestation", "type": "GuestAttestation", "typeHandlerVersion": "1.0", "autoUpgradeMinorVersion": true, "enableAutomaticUpgrade": true, "settings": { "AttestationConfig": { "MaaSettings": { "maaEndpoint": "[substring('emptystring', 0, 0)]", "maaTenantName": "GuestAttestation" } } } }, "dependsOn": [ "[resourceId('Microsoft.Compute/virtualMachineScaleSets', parameters('vmssName'))]" ] }
Nom de l’éditeur d’extension :
Type de système d’exploitation Nom de l’éditeur d’extension Windows Microsoft.Azure.Security.WindowsAttestation Linux Microsoft.Azure.Security.LinuxAttestation Passez en revue les modifications apportées au modèle.
Développez pour afficher l’exemple complet de modèle ARM, qui prend en charge la mise à niveau d’un groupe identique existant vers le lancement fiable et la restauration (si nécessaire).
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "vmSku": { "type": "string", "defaultValue": "Standard_D2s_v3", "metadata": { "description": "Size of VMs in the VM Scale Set." } }, "sku": { "type": "string", "defaultValue": "2022-datacenter-azure-edition", "allowedValues": [ "2022-datacenter-azure-edition" ], "metadata": { "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version." } }, "vmssName": { "type": "string", "maxLength": 61, "metadata": { "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." } }, "instanceCount": { "type": "int", "defaultValue": 2, "maxValue": 100, "minValue": 1, "metadata": { "description": "Number of VM instances (100 or less)." } }, "adminUsername": { "type": "string", "metadata": { "description": "Admin username on all VMs." } }, "adminPassword": { "type": "securestring", "metadata": { "description": "Admin password on all VMs." } }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location for all resources." } }, "publicIpName": { "type": "string", "defaultValue": "myPublicIP", "metadata": { "description": "Name for the Public IP used to access the virtual machine Scale set." } }, "publicIPAllocationMethod": { "type": "string", "defaultValue": "Static", "allowedValues": [ "Dynamic", "Static" ], "metadata": { "description": "Allocation method for the Public IP used to access the virtual machine set." } }, "publicIpSku": { "type": "string", "defaultValue": "Standard", "allowedValues": [ "Basic", "Standard" ], "metadata": { "description": "SKU for the Public IP used to access the virtual machine Scale set." } }, "dnsLabelPrefix": { "type": "string", "defaultValue": "[toLower(format('{0}-{1}', parameters('vmssName'), uniqueString(resourceGroup().id)))]", "metadata": { "description": "Unique DNS Name for the Public IP used to access the virtual machine Scale set." } }, "healthExtensionProtocol": { "type": "string", "defaultValue": "TCP", "allowedValues": [ "TCP", "HTTP", "HTTPS" ] }, "healthExtensionPort": { "type": "int", "defaultValue": 3389 }, "healthExtensionRequestPath": { "type": "string", "defaultValue": "/" }, "overprovision": { "type": "bool", "defaultValue": false }, "upgradePolicy": { "type": "string", "defaultValue": "Manual", "allowedValues": [ "Manual", "Rolling", "Automatic" ] }, "maxBatchInstancePercent": { "type": "int", "defaultValue": 20 }, "maxUnhealthyInstancePercent": { "type": "int", "defaultValue": 20 }, "maxUnhealthyUpgradedInstancePercent": { "type": "int", "defaultValue": 20 }, "pauseTimeBetweenBatches": { "type": "string", "defaultValue": "PT5S" }, "securityType": { "type": "string", "defaultValue": "TrustedLaunch", "allowedValues": [ "Standard", "TrustedLaunch" ], "metadata": { "description": "Security Type of the Virtual Machine." } }, "encryptionAtHost": { "type": "bool", "defaultValue": false, "metadata": { "description": "This property can be used by user in the request to enable or disable the Host Encryption for the virtual machine or virtual machine Scale set. This will enable the encryption for all the disks including Resource/Temp disk at host itself. The default behavior is: The Encryption at host will be disabled unless this property is set to true for the resource." } } }, "variables": { "namingInfix": "[toLower(substring(format('{0}{1}', parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", "addressPrefix": "10.0.0.0/16", "subnetPrefix": "10.0.0.0/24", "virtualNetworkName": "[format('{0}vnet', variables('namingInfix'))]", "subnetName": "[format('{0}subnet', variables('namingInfix'))]", "loadBalancerName": "[format('{0}lb', variables('namingInfix'))]", "natPoolName": "[format('{0}natpool', variables('namingInfix'))]", "bePoolName": "[format('{0}bepool', variables('namingInfix'))]", "natStartPort": 50000, "natEndPort": 50119, "natBackendPort": 3389, "nicName": "[format('{0}nic', variables('namingInfix'))]", "ipConfigName": "[format('{0}ipconfig', variables('namingInfix'))]", "imageReference": { "2022-datacenter-azure-edition": { "publisher": "MicrosoftWindowsServer", "offer": "WindowsServer", "sku": "[parameters('sku')]", "version": "latest" } }, "extensionName": "GuestAttestation", "extensionPublisher": "Microsoft.Azure.Security.WindowsAttestation", "extensionVersion": "1.0", "maaTenantName": "GuestAttestation", "maaEndpoint": "[substring('emptyString', 0, 0)]", "uefiSettingsJson": { "secureBootEnabled": true, "vTpmEnabled": true }, "rollingUpgradeJson": { "maxBatchInstancePercent": "[parameters('maxBatchInstancePercent')]", "maxUnhealthyInstancePercent": "[parameters('maxUnhealthyInstancePercent')]", "maxUnhealthyUpgradedInstancePercent": "[parameters('maxUnhealthyUpgradedInstancePercent')]", "pauseTimeBetweenBatches": "[parameters('pauseTimeBetweenBatches')]" } }, "resources": [ { "type": "Microsoft.Network/virtualNetworks", "apiVersion": "2022-05-01", "name": "[variables('virtualNetworkName')]", "location": "[parameters('location')]", "properties": { "addressSpace": { "addressPrefixes": [ "[variables('addressPrefix')]" ] }, "subnets": [ { "name": "[variables('subnetName')]", "properties": { "addressPrefix": "[variables('subnetPrefix')]" } } ] } }, { "type": "Microsoft.Network/publicIPAddresses", "apiVersion": "2022-05-01", "name": "[parameters('publicIpName')]", "location": "[parameters('location')]", "sku": { "name": "[parameters('publicIpSku')]" }, "properties": { "publicIPAllocationMethod": "[parameters('publicIPAllocationMethod')]", "dnsSettings": { "domainNameLabel": "[parameters('dnsLabelPrefix')]" } } }, { "type": "Microsoft.Network/loadBalancers", "apiVersion": "2022-05-01", "name": "[variables('loadBalancerName')]", "location": "[parameters('location')]", "sku": { "name": "[parameters('publicIpSku')]", "tier": "Regional" }, "properties": { "frontendIPConfigurations": [ { "name": "LoadBalancerFrontEnd", "properties": { "publicIPAddress": { "id": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIpName'))]" } } } ], "backendAddressPools": [ { "name": "[variables('bePoolName')]" } ], "inboundNatPools": [ { "name": "[variables('natPoolName')]", "properties": { "frontendIPConfiguration": { "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', variables('loadBalancerName'), 'loadBalancerFrontEnd')]" }, "protocol": "Tcp", "frontendPortRangeStart": "[variables('natStartPort')]", "frontendPortRangeEnd": "[variables('natEndPort')]", "backendPort": "[variables('natBackendPort')]" } } ] }, "dependsOn": [ "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIpName'))]" ] }, { "type": "Microsoft.Compute/virtualMachineScaleSets", "apiVersion": "2022-03-01", "name": "[parameters('vmssName')]", "location": "[parameters('location')]", "sku": { "name": "[parameters('vmSku')]", "tier": "Standard", "capacity": "[parameters('instanceCount')]" }, "properties": { "virtualMachineProfile": { "storageProfile": { "osDisk": { "createOption": "FromImage", "caching": "ReadWrite" }, "imageReference": "[variables('imageReference')[parameters('sku')]]" }, "osProfile": { "computerNamePrefix": "[variables('namingInfix')]", "adminUsername": "[parameters('adminUsername')]", "adminPassword": "[parameters('adminPassword')]" }, "securityProfile": { "encryptionAtHost": "[parameters('encryptionAtHost')]", "securityType": "[parameters('securityType')]", "uefiSettings": "[if(equals(parameters('securityType'), 'TrustedLaunch'), variables('uefiSettingsJson'), null())]" }, "networkProfile": { "networkInterfaceConfigurations": [ { "name": "[variables('nicName')]", "properties": { "primary": true, "ipConfigurations": [ { "name": "[variables('ipConfigName')]", "properties": { "subnet": { "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]" }, "loadBalancerBackendAddressPools": [ { "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerName'), variables('bePoolName'))]" } ], "loadBalancerInboundNatPools": [ { "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('loadBalancerName'), variables('natPoolName'))]" } ] } } ] } } ] }, "extensionProfile": { "extensions": [ { "name": "HealthExtension", "properties": { "publisher": "Microsoft.ManagedServices", "type": "ApplicationHealthWindows", "typeHandlerVersion": "1.0", "autoUpgradeMinorVersion": false, "settings": { "protocol": "[parameters('healthExtensionProtocol')]", "port": "[parameters('healthExtensionPort')]", "requestPath": "[if(equals(parameters('healthExtensionProtocol'), 'TCP'), null(), parameters('healthExtensionRequestPath'))]" } } } ] }, "diagnosticsProfile": { "bootDiagnostics": { "enabled": true } } }, "orchestrationMode": "Uniform", "overprovision": "[parameters('overprovision')]", "upgradePolicy": { "mode": "[parameters('upgradePolicy')]", "rollingUpgradePolicy": "[if(equals(parameters('upgradePolicy'), 'Rolling'), variables('rollingUpgradeJson'), null())]", "automaticOSUpgradePolicy": { "enableAutomaticOSUpgrade": true } } }, "dependsOn": [ "[resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName'))]", "[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]" ] }, { "condition": "[and(equals(parameters('securityType'), 'TrustedLaunch'), and(equals(variables('uefiSettingsJson').secureBootEnabled, true()), equals(variables('uefiSettingsJson').vTpmEnabled, true())))]", "type": "Microsoft.Compute/virtualMachineScaleSets/extensions", "apiVersion": "2022-03-01", "name": "[format('{0}/{1}', parameters('vmssName'), variables('extensionName'))]", "location": "[parameters('location')]", "properties": { "publisher": "[variables('extensionPublisher')]", "type": "[variables('extensionName')]", "typeHandlerVersion": "[variables('extensionVersion')]", "autoUpgradeMinorVersion": true, "enableAutomaticUpgrade": true, "settings": { "AttestationConfig": { "MaaSettings": { "maaEndpoint": "[variables('maaEndpoint')]", "maaTenantName": "[variables('maaTenantName')]" } } } }, "dependsOn": [ "[resourceId('Microsoft.Compute/virtualMachineScaleSets', parameters('vmssName'))]" ] } ] }
Exécutez le déploiement du modèle ARM.
$resourceGroupName = "myResourceGroup" $parameterFile = "folderPathToFile\parameters.json" $templateFile = "folderPathToFile\template.json" New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -TemplateFile $templateFile -TemplateParameterFile $parameterFile
Vérifiez que déploiement a réussi. Vérifiez le type de sécurité et les paramètres UEFI du groupe identique uniforme à l’aide du portail Azure. Consultez la section Type de sécurité de la page de présentation.
Mettez à jour les instances de machine virtuelle manuellement si le mode de mise à niveau du groupe identique uniforme est défini sur
Manual
.$resourceGroupName = "myResourceGroup" $vmssName = "VMScaleSet001" Update-AzVmssInstance -ResourceGroupName $resourceGroupName -VMScaleSetName $vmssName -InstanceId "0"
Restauration
Pour annuler les changements apportés pour le lancement fiable et revenir à la dernière bonne configuration connue, vous devez définir le securityType
du groupe identique sur Standard.
Pour annuler les changements apportés pour le lancement fiable et revenir à la dernière bonne configuration connue, définissez securityProfile
sur Standard, comme illustré. Si vous le souhaitez, vous pouvez également annuler les changements d’autres paramètres, tels que l’image de système d’exploitation et la taille de machine virtuelle, et répéter les étapes 5 à 8 décrites dans Activer le lancement fiable sur un groupe identique existant
"securityProfile": {
"securityType": "Standard",
"uefiSettings": "[null()]"
}
Étapes suivantes
(Recommandé) Après les mises à niveau, activez le Monitoring de l’intégrité du démarrage pour surveiller l’intégrité de la machine virtuelle à l’aide de Microsoft Defender pour le cloud.
Découvrez plus en détail le Lancement fiable et passez en revue les questions fréquemment posées.