(Vorschau) Aktivieren des vertrauenswürdigen Starts für vorhandene VM-Skalierungsgruppe
Gilt für: ✔️ Linux-VMs ✔️ Windows-VMs ✔️ Virtual Machine Scale Sets Uniform
Microsoft Azure Virtual Machine Scale Sets unterstützen das Aktivieren des vertrauenswürdigen Starts auf vorhandenen VMs mit Uniform-Skalierungsgruppen durch ein Upgrade auf den Sicherheitstyp Vertrauenswürdiger Start.
Der vertrauenswürdige Start ermöglicht grundlegende Computesicherheit auf virtuellen Computern und Skalierungsgruppen von Azure Generation 2 und schützt sie vor erweiterten und persistenten Angriffstechniken wie Boot Kits und Rootkits. Dies geschieht durch die Kombination von Infrastrukturtechnologien wie sicherer Start, vTPM und Überwachung der Startintegrität in Ihrer Skalierungsgruppe.
Begrenzungen
Die Aktivierung des vertrauenswürdigen Starts auf vorhandenen VM-Skalierungsgruppen mit angefügten Datenträgern wird derzeit nicht unterstützt.
- Um zu überprüfen, ob die Skalierungsgruppe mit einem Datenträger konfiguriert ist, navigieren Sie zur Skalierungsgruppe >Datenträger im Menü Einstellungen > Überschrift Datenträger.
Die Aktivierung des vertrauenswürdigen Starts auf vorhandenen VM-Skalierungsgruppen Flex wird derzeit nicht unterstützt.
Die Aktivierung des vertrauenswürdigen Starts auf vorhandenen Service Fabric-Clustern und verwalteten Service Fabric-Clustern wird derzeit nicht unterstützt.
Voraussetzungen
- Registrieren Sie die Previewfunktion
ImageSkuGenUpdateWithVMSS
unter demMicrosoft.Compute
-Namespace im Skalierungsgruppenabonnement. Weitere Informationen finden Sie unter Einrichten von Previewfunktionen im Azure-Abonnement. - Die Skalierungsgruppe ist von -Features, die derzeit beim vertrauenswürdigen Start nicht unterstützt werden, nicht abhängig.
- Die Skalierungsgruppe sollte mit der für vertrauenswürdiger Start unterstützten Größenfamilie konfiguriert werden.
Hinweis
- Die VM-Größe kann zusammen mit dem Upgrade für vertrauenswürdiger Start geändert werden. Stellen Sie sicher, dass das Kontingent für die neue VM-Größe verfügbar ist, um Upgradefehler zu vermeiden. Weitere Informationen finden Sie unter Überprüfen von vCPU-Kontingenten.
- Bei Änderungen der VM-Größe wird die VM-Instanz mit der neuen Größe neu erstellt, und dies ist mit Downtime einzelner VM-Instanzen verbunden. Es kann in einer Art rollierendem Upgrade durchgeführt werden, um Skalierungsgruppen-Downtime zu vermeiden.
- Die Skalierungsgruppe sollte mit dem vom vertrauenswürdigen Start unterstützten Betriebssystemimage konfiguriert werden. Stellen Sie beim Betriebssystemimage des Azure-Computekatalogs sicher, dass die Imagedefinition als TrustedLaunchSupported gekennzeichnet ist.
Aktivieren des vertrauenswürdigen Starts auf vorhandener Skalierungsgruppe Uniform
In diesem Abschnitt werden die Schritte für die Verwendung einer ARM-Vorlage zum Aktivieren des vertrauenswürdigen Starts in einer vorhandenen VM-Skalierungsgruppe Uniform dokumentiert.
Nehmen Sie die folgenden Änderungen an Ihrem vorhandenen ARM-Vorlagenbereitstellungscode vor. Eine vollständige Vorlage finden Sie unter Schnellstart: ARM-Vorlage für den vertrauenswürdigen Start der Skalierungsgruppe.
Wichtig
Der Sicherheitstyp für den vertrauenswürdigen Start ist bei Skalierungsgruppe apiVersion
2020-12-01
oder höher verfügbar. Stellen Sie sicher, dass die API-Version vor dem Upgrade korrekt festgelegt ist.
Betriebssystemimage: Aktualisieren Sie den Betriebssystemimageverweis auf das von Gen2-vertrauenswürdiger Start unterstützte Betriebssystemimage. Stellen Sie sicher, dass das Gen2-Quellimage den Sicherheitstyp
TrustedLaunchSupported
hat, wenn das Betriebssystemimage der Azure Compute Gallery verwendet wird."storageProfile": { "osDisk": { "createOption": "FromImage", "caching": "ReadWrite" }, "imageReference": { "publisher": "MicrosoftWindowsServer", "offer": "WindowsServer", "sku": "2022-datacenter-azure-edition", "version": "latest" } }
(Optional) Skalierungsgruppengröße: Ändern Sie die Skalierungsgruppengröße, wenn die aktuelle Größenfamilie nicht von der Sicherheitskonfiguration für den vertrauenswürdigen Start unterstützt wird.
"sku": { "name": "Standard_D2s_v3", "tier": "Standard", "capacity": "[parameters('instanceCount')]" }
Sicherheitsprofil: Fügen Sie einen
securityProfile
-Block untervirtualMachineProfile
hinzu, um die Sicherheitskonfiguration für den vertrauenswürdigen Start zu aktivieren.Hinweis
Empfohlene Einstellungen:
vTPM
:true
undsecureBoot
:true
secureBoot
sollte auffalse
festgelegt werden, wenn Sie einen nicht signierten benutzerdefinierten Treiber oder Kernel im Betriebssystem verwenden."securityProfile": { "securityType": "TrustedLaunch", "uefiSettings": { "secureBootEnabled": true, "vTpmEnabled": true } }
(Empfohlen) Gastnachweiserweiterung: Fügen Sie die Erweiterung „Gastnachweis“ (GA) für die Skalierungsgruppenressource hinzu. Damit wird die Überwachung der Startintegrität für die Skalierungsgruppe aktiviert.
Wichtig
Für die Erweiterung „Gastnachweis“ ist erforderlich, dass
secureBoot
undvTPM
auftrue
festgelegt werden.{ "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'))]" ] }
Name des Erweiterungsherausgebers:
Betriebssystemtyp Name des Erweiterungsherausgebers Windows Microsoft.Azure.Security.WindowsAttestation Linux Microsoft.Azure.Security.LinuxAttestation Überprüfen Sie die an der Vorlage vorgenommenen Änderungen.
Erweitern Sie diese Option, um die vollständige ARM-Beispielvorlage anzuzeigen, die das Upgrade vorhandener Skalierungsgruppen auf vertrauenswürdiger Start und Rollback (falls erforderlich) unterstützt.
{ "$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'))]" ] } ] }
Führen Sie die ARM-Vorlagenbereitstellung aus.
$resourceGroupName = "myResourceGroup" $parameterFile = "folderPathToFile\parameters.json" $templateFile = "folderPathToFile\template.json" New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -TemplateFile $templateFile -TemplateParameterFile $parameterFile
Vergewissern Sie sich, dass die Bereitstellung erfolgreich war. Überprüfen Sie mithilfe des Azure-Portals den Sicherheitstyp und die UEFI-Einstellungen der Skalierungsgruppe Uniform. Überprüfen Sie auf der Seite „Übersicht“ den Abschnitt „Sicherheitstyp“.
Aktualisieren Sie die VM-Instanzen manuell, wenn der Upgrademodus der Skalierungsgruppe Uniform auf
Manual
festgelegt ist.$resourceGroupName = "myResourceGroup" $vmssName = "VMScaleSet001" Update-AzVmssInstance -ResourceGroupName $resourceGroupName -VMScaleSetName $vmssName -InstanceId "0"
Rollback
Um ein Rollback der Änderungen vom vertrauenswürdigen Start auf die vorherige bekannte gute Konfiguration durchzuführen, müssen Sie die Einstellung securityType
der Skalierungsgruppe auf Standard festlegen.
Wenn Sie ein Rollback der Änderungen vom vertrauenswürdigen Start auf die vorherige bekannte gute Konfiguration durchführen möchten, legen Sie securityProfile
wie dargestellt auf Standard fest. Optional können Sie auch andere Parameteränderungen wiederherstellen: Betriebssystemimage, VM-Größe, und wiederholen Sie die Schritte 5-8, die unter Aktivieren des vertrauenswürdigem Starts für eine vorhandene Skalierungsgruppe beschrieben werden.
"securityProfile": {
"securityType": "Standard",
"uefiSettings": "[null()]"
}
Nächste Schritte
(Empfohlen) Aktivieren Sie nach einem Upgrade die Überwachung der Startintegrität, um die Integrität der VM mit Microsoft Defender for Cloud zu überwachen.
Erfahren Sie mehr über den vertrauenswürdigen Start, und lesen Sie die häufig gestellten Fragen.