(Preview) Povolení důvěryhodného spuštění ve stávající škálovací sadě virtuálních počítačů
Platí pro: ✔️ Uniformní škálovací sady virtuálních počítačů s Windows na virtuálním ✔️ ✔️ počítači s Linuxem
Škálovací sady virtuálních počítačů Azure podporují povolení důvěryhodného spuštění na existujících virtuálních počítačích Uniform Scale Sets upgradem na typ zabezpečení Důvěryhodné spuštění .
Důvěryhodné spuštění umožňuje základní výpočetní zabezpečení na virtuálních počítačích Azure Generation 2 a škálovacích sadách a chrání je před pokročilými a trvalými technikami útoku, jako jsou spouštěcí sady a rootkity. To dělá tak, že ve škálovací sadě zkombinujete technologie infrastruktury, jako je zabezpečené spouštění, virtuální počítač vTPM a monitorování integrity spouštění.
Omezení
Povolení důvěryhodného spuštění ve stávajících škálovacích sadách virtuálních počítačů s připojenými datovými disky se v současné době nepodporuje.
- Pokud chcete ověřit, jestli je škálovací sada nakonfigurovaná s datovým diskem, přejděte do škálovací sady ->Disky v nabídce Nastavení –> zkontrolujte v části Datové disky.
- Pokud chcete ověřit, jestli je škálovací sada nakonfigurovaná s datovým diskem, přejděte do škálovací sady ->Disky v nabídce Nastavení –> zkontrolujte v části Datové disky.
Povolení důvěryhodného spuštění ve stávajících škálovacích sadách virtuálních počítačů Flex se v současné době nepodporuje.
Povolení důvěryhodného spuštění u existujících clusterů Service Fabric a spravovaných clusterů Service Fabric se v současné době nepodporuje.
Požadavky
- Zaregistrujte funkci
ImageSkuGenUpdateWithVMSS
Preview vMicrosoft.Compute
oboru názvů v předplatném škálovací sady. Další podrobnosti najdete v tématu Nastavení funkcí preview v předplatném Azure. - Škálovací sada není závislá na funkcích, které aktuálně nejsou podporovány při důvěryhodném spuštění.
- Škálovací sada by měla být nakonfigurovaná s rodinou podporovaných velikostí důvěryhodného spuštění.
Poznámka:
- Velikost virtuálního počítače je možné změnit spolu s upgradem důvěryhodného spuštění. Ujistěte se, že je daná kvóta pro novou velikost virtuálního počítače, abyste se vyhnuli selháním upgradu. Projděte si informace o kontrole kvót virtuálních procesorů.
- Změny velikosti virtuálního počítače znovu vytvoří instanci virtuálního počítače s novou velikostí a budou vyžadovat výpadek jednotlivých instancí virtuálního počítače. Dá se provést postupným upgradem, aby nedocházelo k výpadkům škálovací sady.
- Škálovací sada by měla být nakonfigurovaná s podporovanou imagí důvěryhodného spuštění operačního systému. V případě image operačního systému výpočetní galerie Azure se ujistěte, že je definice image označená jako TrustedLaunchSupported.
Povolení důvěryhodného spuštění v existující škálovací sadě Uniform
Tato část dokumentuje kroky pro použití šablony ARM k povolení důvěryhodného spuštění na existující škálovací sadě virtuálních počítačů uniformně.
Proveďte následující změny existujícího kódu nasazení šablony ARM. Úplnou šablonu najdete v šabloně ARM důvěryhodného startu pro důvěryhodné spuštění.
Důležité
Důvěryhodný typ zabezpečení spuštění je k dispozici se škálovací sadou apiVersion
2020-12-01
nebo vyššími. Před upgradem se ujistěte, že je správně nastavená verze rozhraní API.
Image operačního systému: Aktualizace odkazu na image operačního systému na podporovanou image operačního systému Gen2-Trusted Ujistěte se, že zdrojová image Gen2 má
TrustedLaunchSupported
typ zabezpečení, pokud používáte image operačního systému Galerie výpočetních prostředků Azure."storageProfile": { "osDisk": { "createOption": "FromImage", "caching": "ReadWrite" }, "imageReference": { "publisher": "MicrosoftWindowsServer", "offer": "WindowsServer", "sku": "2022-datacenter-azure-edition", "version": "latest" } }
(Volitelné) Velikost škálovací sady: Upravte velikost škálovací sady, pokud aktuální řada velikostí není podporována s konfigurací zabezpečení důvěryhodného spuštění .
"sku": { "name": "Standard_D2s_v3", "tier": "Standard", "capacity": "[parameters('instanceCount')]" }
Profil zabezpečení: Přidáním
securityProfile
bloku podvirtualMachineProfile
povolte konfiguraci zabezpečení důvěryhodného spuštění.Poznámka:
Doporučená nastavení:
true
vTPM
a: asecureBoot
:true
secureBoot
by měly být nastavenyfalse
, pokud používáte jakýkoli nepodepsaný vlastní ovladač nebo jádro v operačním systému."securityProfile": { "securityType": "TrustedLaunch", "uefiSettings": { "secureBootEnabled": true, "vTpmEnabled": true } }
(Doporučeno) Rozšíření ověření identity hosta: Přidání rozšíření Host Attestation (GA) pro prostředek škálovací sady, které umožňuje monitorování integrity spouštění pro škálovací sadu.
Důležité
Rozšíření ověření identity hosta vyžaduje
secureBoot
avTPM
je nastaveno natrue
hodnotu .{ "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'))]" ] }
Název vydavatele přípony:
Typ operačního systému Název vydavatele rozšíření Windows Microsoft.Azure.Security.WindowsAttestation Linux Microsoft.Azure.Security.LinuxAttestation Zkontrolujte změny provedené v šabloně.
Rozbalením zobrazíte kompletní ukázkovou šablonu ARM, která podporuje upgrade existující škálovací sady na důvěryhodné spuštění a vrácení zpět (v případě potřeby).
{ "$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'))]" ] } ] }
Spusťte nasazení šablony ARM.
$resourceGroupName = "myResourceGroup" $parameterFile = "folderPathToFile\parameters.json" $templateFile = "folderPathToFile\template.json" New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -TemplateFile $templateFile -TemplateParameterFile $parameterFile
Ověřte, že nasazení proběhlo úspěšně. Pomocí webu Azure Portal zkontrolujte typ zabezpečení a nastavení rozhraní UEFI škálovací sady. Na stránce Přehled zkontrolujte část Typ zabezpečení.
Pokud je režim jednotného upgradu škálovací sady nastavený na
Manual
ručně, aktualizujte instance virtuálních počítačů ručně.$resourceGroupName = "myResourceGroup" $vmssName = "VMScaleSet001" Update-AzVmssInstance -ResourceGroupName $resourceGroupName -VMScaleSetName $vmssName -InstanceId "0"
Vrácení zpět
Pokud chcete vrátit změny z důvěryhodného spuštění na předchozí známou dobrou konfiguraci, musíte nastavit škálovací sadu securityType
na standard.
Pokud chcete vrátit změny z důvěryhodného spuštění na předchozí známou dobrou konfiguraci, nastavte securityProfile
na hodnotu Standard , jak je znázorněno. Volitelně můžete také vrátit další změny parametrů – image operačního systému, velikost virtuálního počítače a opakovat kroky 5–8 popsané s povolením důvěryhodného spuštění ve stávající škálovací sadě.
"securityProfile": {
"securityType": "Standard",
"uefiSettings": "[null()]"
}
Další kroky
(Doporučeno) Po upgradu umožňují monitorování integrity spouštění ke sledování stavu virtuálního počítače pomocí Microsoft Defenderu pro cloud.
Přečtěte si další informace o důvěryhodném spuštění a projděte si nejčastější dotazy.