(Anteprima) Abilitare l'avvio attendibile nel set di scalabilità di macchine virtuali esistente
Si applica a: ✔️ Macchine virtuali Linux ✔️ Macchine virtuali Windows ✔️ Set di scalabilità di macchine virtuali uniformi
I set di scalabilità di macchine virtuali di Azure supportano l'abilitazione dell'avvio attendibile nelle macchine virtuali di tipo Set di scalabilità uniformi eseguendo l'aggiornamento al tipo di sicurezzaAvvio attendibile.
L'avvio attendibile abilita la sicurezza di calcolo di base nelle macchine virtuali di seconda generazione di Azure e nei set di scalabilità e li protegge da tecniche di attacco avanzate e persistenti, ad esempio kit di avvio e rootkit. A tale scopo, combina tecnologie dell'infrastruttura come avvio protetto, vTPM e monitoraggio dell'integrità dell'avvio nel set di scalabilità.
Limiti
L'abilitazione dell'avvio attendibile nei set di scalabilità di macchine virtuali con dischi dati collegati esistenti non è attualmente supportata.
- Per verificare se la scalabilità è configurata con il disco dati, passare a Set di scalabilità ->Dischi nel menu Impostazioni -> controllare nell'intestazione Dischi dati
L'abilitazione dell'avvio attendibile nei set di scalabilità di macchine virtuali flessibili esistenti non è attualmente supportata.
L'abilitazione dell'avvio attendibile nei cluster di Service Fabric e nei cluster gestiti di Service Fabric esistenti non è attualmente supportata.
Prerequisiti
- Registrare la funzionalità di anteprima
ImageSkuGenUpdateWithVMSS
nello spazio dei nomiMicrosoft.Compute
nella sottoscrizione del set di scalabilità. Per altre informazioni, vedere Configurare le funzionalità di anteprima nella sottoscrizione di Azure - Il set di scalabilità non dipende dalle funzionalità attualmente non supportate con l'avvio attendibile.
- Il set di scalabilità deve essere configurato con la famiglia di dimensioni supportate dall'avvio attendibile
Nota
- Le dimensioni della macchina virtuale possono essere modificate insieme all'aggiornamento dell'avvio attendibile. Assicurarsi che sia disponibile la quota per le nuove dimensioni della macchina virtuale per evitare errori di aggiornamento. Fare riferimento a Controllare le quote di vCPU.
- Le modifiche apportate alle dimensioni della macchina virtuale creeranno nuovamente l'istanza della macchina virtuale con nuove dimensioni e richiederanno tempi di inattività di singole istanze di macchina virtuale. Questa operazione può essere eseguita in modalità di aggiornamento in sequenza per evitare tempi di inattività del set di scalabilità.
- Il set di scalabilità deve essere configurato con immagine del sistema operativo supportata dall'avvio attendibile. Per Immagine del sistema operativo della Raccolta di calcolo di Azure, assicurarsi che la definizione dell'immagine sia contrassegnata come TrustedLaunchSupported
Abilitare l'avvio attendibile nel set di scalabilità uniforme esistente
Questa sezione illustra i passaggi per l'uso di un modello di ARM per abilitare l'avvio attendibile nell'uniforme del set di scalabilità di macchine virtuali uniforme esistente.
Apportare le modifiche seguenti al codice di distribuzione del modello di Resource Manager esistente. Per un modello completo, vedere Avvio rapido: Modello di Resource Manager per il set di scalabilità per l'avvio attendibile.
Importante
Il tipo di sicurezza Avvio attendibile è disponibile con il set di scalabilità apiVersion
2020-12-01
o versione successiva. Assicurarsi che la versione dell'API sia impostata correttamente prima dell'aggiornamento.
Immagine del sistema operativo: aggiornare il riferimento all'immagine del sistema operativo impostandolo sull'immagine del sistema operativo supportata dall'avvio attendibile di seconda generazione. Assicurarsi che l'immagine di origine di seconda generazione abbia il tipo di sicurezza
TrustedLaunchSupported
se si usa l'immagine del sistema operativo della Raccolta di calcolo di Azure."storageProfile": { "osDisk": { "createOption": "FromImage", "caching": "ReadWrite" }, "imageReference": { "publisher": "MicrosoftWindowsServer", "offer": "WindowsServer", "sku": "2022-datacenter-azure-edition", "version": "latest" } }
(Facoltativo) Dimensioni set di scalabilità: modificare le dimensioni del set di scalabilità se la famiglia di dimensioni correnti non è supportata con configurazione di sicurezza Avvio attendibile.
"sku": { "name": "Standard_D2s_v3", "tier": "Standard", "capacity": "[parameters('instanceCount')]" }
Profilo di sicurezza: aggiungere il blocco
securityProfile
invirtualMachineProfile
per abilitare la configurazione di sicurezza Avvio attendibile.Nota
Impostazioni consigliate:
vTPM
:true
esecureBoot
:true
secureBoot
devono essere impostati sufalse
se si usano driver o kernel personalizzati non firmati nel sistema operativo."securityProfile": { "securityType": "TrustedLaunch", "uefiSettings": { "secureBootEnabled": true, "vTpmEnabled": true } }
(Scelta consigliata) Estensione Attestazione guest: aggiungere l'Estensione Attestazione guest per la risorsa del set di scalabilità, in modo da abilitare il Monitoraggio dell'integrità di avvio per il set di scalabilità.
Importante
L'estensione Attestazione guest richiede
secureBoot
evTPM
impostati sutrue
.{ "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'))]" ] }
Nome dell'autore dell'estensione:
OS Type (Tipo di sistema operativo) Nome dell'autore dell'estensione Finestre Microsoft.Azure.Security.WindowsAttestation Linux Microsoft.Azure.Security.LinuxAttestation Esaminare le modifiche apportate al modello.
Espandere per visualizzare il modello di ARM di esempio completo, che supporta l'aggiornamento del set di scalabilità esistente all'avvio attendibile e il rollback (se necessario).
{ "$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'))]" ] } ] }
Eseguire la distribuzione del modello di Resource Manager.
$resourceGroupName = "myResourceGroup" $parameterFile = "folderPathToFile\parameters.json" $templateFile = "folderPathToFile\template.json" New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -TemplateFile $templateFile -TemplateParameterFile $parameterFile
Verificare che la distribuzione sia riuscita. Controllare il tipo di sicurezza e le impostazioni UEFI del set di scalabilità uniforme usando il portale di Azure. Controllare la sezione Tipo di sicurezza nella pagina Panoramica.
Aggiornare manualmente le istanze della macchina virtuale se la modalità di aggiornamento del set di scalabilità uniforme è impostata su
Manual
.$resourceGroupName = "myResourceGroup" $vmssName = "VMScaleSet001" Update-AzVmssInstance -ResourceGroupName $resourceGroupName -VMScaleSetName $vmssName -InstanceId "0"
Rollback
Per eseguire il rollback delle modifiche dall'avvio attendibile alla configurazione valida nota precedente, è necessario impostare securityType
del set di scalabilità su Standard.
Per eseguire il rollback delle modifiche dall'avvio attendibile alla configurazione valida nota precedente, impostare securityProfile
su Standard, come mostrato. Facoltativamente, è anche possibile annullare altre modifiche ai parametri, ad esempio immagine del sistema operativo e dimensioni della macchina virtuale, e ripetere i passaggi da 5 a 8 descritti con Abilitare l'avvio attendibile nel set di scalabilità esistente
"securityProfile": {
"securityType": "Standard",
"uefiSettings": "[null()]"
}
Passaggi successivi
Sscelta consigliata) Gli aggiornamenti successivi consentono a Monitoraggio dell'integrità dell'avvio di monitorare l'integrità della macchina virtuale usando Microsoft Defender per il cloud.
Altre informazioni su Avvio attendibile e le domande frequenti.