(Preview) Vertrouwde start inschakelen voor bestaande virtuele-machineschaalset
Van toepassing op: ✔️ Virtuele-machineschaalsets voor Virtuele-machineschaalsets voor Virtuele Linux-machines in Linux-VM ✔️ ✔️
Virtuele-machineschaalsets van Azure bieden ondersteuning voor het inschakelen van vertrouwde lancering op bestaande VM's van Uniform Scale sets door een upgrade uit te voeren naar het beveiligingstype Vertrouwd starten .
Vertrouwde lancering maakt basisbeveiliging voor rekenkracht mogelijk op virtuele Machines van de tweede generatie van Azure en beveiligt deze tegen geavanceerde en permanente aanvalstechnieken, zoals opstartkits en rootkits. Dit doet u door infrastructuurtechnologieën zoals Beveiligd opstarten, vTPM en Bewaking van opstartintegriteit in uw schaalset te combineren.
Beperkingen
Het inschakelen van vertrouwde start op bestaande virtuele-machineschaalsets met gekoppelde gegevensschijven wordt momenteel niet ondersteund.
- Als u wilt controleren of de schaalset is geconfigureerd met een gegevensschijf, gaat u naar de schaalset ->Schijven onder het menu Instellingen -> controleert u onder de kop Gegevensschijven
Vertrouwd starten inschakelen voor bestaande virtuele-machineschaalsets Flex wordt momenteel niet ondersteund.
Het inschakelen van vertrouwde start op bestaande Service Fabric-clusters en beheerde Service Fabric-clusters wordt momenteel niet ondersteund.
Vereisten
- Preview-functie
ImageSkuGenUpdateWithVMSS
registreren onderMicrosoft.Compute
naamruimte in een schaalsetabonnement. Raadpleeg preview-functies instellen in een Azure-abonnement voor meer informatie - Schaalset is niet afhankelijk van functies die momenteel niet worden ondersteund met vertrouwd starten.
- Schaalset moet worden geconfigureerd met de ondersteunde groottefamilie vertrouwde start
Notitie
- De grootte van de virtuele machine kan worden gewijzigd, samen met een upgrade van vertrouwde start. Zorg ervoor dat het quotum voor nieuwe VM-grootte in gebruik is om upgradefouten te voorkomen. Raadpleeg vCPU-quota controleren.
- Wijzigingen in de grootte van de virtuele machine maken het exemplaar van de virtuele machine opnieuw met een nieuwe grootte en vereisen downtime van een afzonderlijk exemplaar van de virtuele machine. Dit kan op een rolling upgrade worden uitgevoerd om uitvaltijd van schaalsets te voorkomen.
- Schaalset moet worden geconfigureerd met de ondersteunde installatiekopieën van het besturingssysteem met vertrouwde start. Voor de installatiekopieën van het besturingssysteem van de Azure Compute-galerie moet u ervoor zorgen dat de definitie van de installatiekopieën is gemarkeerd als TrustedLaunchSupported
Vertrouwde start inschakelen op bestaande schaalset Uniform
In deze sectie worden stappen beschreven voor het gebruik van een ARM-sjabloon om vertrouwd starten in te schakelen voor een bestaande virtuele-machineschaalset uniform.
Breng de volgende wijzigingen aan in uw bestaande ARM-sjabloonimplementatiecode. Raadpleeg de ARM-sjabloon voor vertrouwde startschaalsets voor vertrouwde start voor een volledige sjabloon.
Belangrijk
Het beveiligingstype Vertrouwde start is beschikbaar met schaalset apiVersion
2020-12-01
of hoger. Zorg ervoor dat de API-versie correct is ingesteld voordat de upgrade wordt uitgevoerd.
Installatiekopieën van het besturingssysteem: werk de verwijzing naar de door Gen2 vertrouwde start ondersteunde installatiekopieën van het besturingssysteem bij. Zorg ervoor dat de bron-Gen2-installatiekopie beveiligingstype heeft
TrustedLaunchSupported
als u de installatiekopie van het besturingssysteem van de Azure Compute Gallery gebruikt."storageProfile": { "osDisk": { "createOption": "FromImage", "caching": "ReadWrite" }, "imageReference": { "publisher": "MicrosoftWindowsServer", "offer": "WindowsServer", "sku": "2022-datacenter-azure-edition", "version": "latest" } }
(Optioneel) Schaalsetgrootte: wijzig de grootte van de schaalset als de huidige groottefamilie niet wordt ondersteund met de configuratie van vertrouwde startbeveiliging .
"sku": { "name": "Standard_D2s_v3", "tier": "Standard", "capacity": "[parameters('instanceCount')]" }
Beveiligingsprofiel: voeg
securityProfile
een blok toe ondervirtualMachineProfile
om de beveiligingsconfiguratie vertrouwde start in te schakelen.Notitie
Aanbevolen instellingen:
vTPM
true
ensecureBoot
:true
secureBoot
moet worden ingesteldfalse
op als u een niet-ondertekend aangepast stuurprogramma of kernel in het besturingssysteem gebruikt."securityProfile": { "securityType": "TrustedLaunch", "uefiSettings": { "secureBootEnabled": true, "vTpmEnabled": true } }
(Aanbevolen) Guest Attestation Extension: Add Guest Attestation (GA) extension for Scale set resource, which enable Boot integrity monitoring for Scale set.
Belangrijk
De extensie voor gastattest vereist
secureBoot
envTPM
ingesteld optrue
.{ "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'))]" ] }
Naam van extensie-uitgever:
Type besturingssysteem Naam van extensie-uitgever Windows Microsoft.Azure.Security.WindowsAttestation Linux Microsoft.Azure.Security.LinuxAttestation Controleer de wijzigingen in de sjabloon.
Vouw uit om de volledige ARM-voorbeeldsjabloon weer te geven, die ondersteuning biedt voor het upgraden van bestaande schaalsets naar vertrouwd starten en terugdraaien (indien nodig).
{ "$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'))]" ] } ] }
Voer de implementatie van de ARM-sjabloon uit.
$resourceGroupName = "myResourceGroup" $parameterFile = "folderPathToFile\parameters.json" $templateFile = "folderPathToFile\template.json" New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -TemplateFile $templateFile -TemplateParameterFile $parameterFile
Controleer of de implementatie is geslaagd. Controleer op het beveiligingstype en de UEFI-instellingen van de schaalset uniform met behulp van Azure Portal. Controleer de sectie Beveiligingstype op de pagina Overzicht.
Werk de VM-exemplaren handmatig bij als de uniforme upgrademodus van de schaalset is ingesteld op
Manual
.$resourceGroupName = "myResourceGroup" $vmssName = "VMScaleSet001" Update-AzVmssInstance -ResourceGroupName $resourceGroupName -VMScaleSetName $vmssName -InstanceId "0"
Terugdraaien
Als u wijzigingen van vertrouwde start naar een eerdere bekende goede configuratie wilt terugdraaien, moet u een set schaalsets instellen securityType
op Standard.
Als u wijzigingen van vertrouwde start naar een eerdere bekende goede configuratie wilt terugdraaien, stelt u deze in op securityProfile
Standard , zoals wordt weergegeven. Desgewenst kunt u ook andere parameterwijzigingen herstellen: installatiekopieën van het besturingssysteem, de VM-grootte en herhaal stap 5-8 beschreven met Vertrouwde start inschakelen voor bestaande schaalset
"securityProfile": {
"securityType": "Standard",
"uefiSettings": "[null()]"
}
Volgende stappen
(Aanbevolen) Na upgrades kunt u bewaking van opstartintegriteit inschakelen om de status van de VIRTUELE machine te bewaken met behulp van Microsoft Defender voor Cloud.
Meer informatie over vertrouwd starten en veelgestelde vragen bekijken.