Auf Englisch lesen

Freigeben über


UEFI-Schlüssel für sicheren Start

Mit diesem Feature können Sie UEFI (Unified Extensible Firmware Interface)-Schlüssel für Treiber/Kernelmodule binden, die mit einem privaten Schlüssel signiert sind, der sich im Besitz von Drittanbietern befindet.

Übersicht

Wenn ein virtueller Azure-Computer (eine VM) mit vertrauenswürdigem Start bereitgestellt wird, werden während des Startvorgangs Signaturen aller Startkomponenten wie UEFI, Shim/Bootloader, Kernel und Kernelmodule/Treiber gegen vertrauenswürdiger vorinstallierter UEFI-Schlüssel überprüft. Ein Überprüfungsfehler bei einer der Startkomponenten führt dazu, dass die VM nicht gestartet wird oder nur die Kernelmodule/Treiber nicht geladen werden. Die Überprüfung kann fehlschlagen, wenn eine Komponente mit einem Schlüssel signiert ist, der sich nicht in der Liste der vorinstallierten UEFI-Schlüssel befindet, oder wenn eine Komponente nicht signiert ist.

Viele Arten von Software, die von Azure-Partnern bereitgestellt oder von Kunden beschafft werden (Notfallwiederherstellung, Netzwerküberwachung), installieren Treiber/Kernelmodule als Teil ihrer Lösung. Diese Treiber/Kernelmodule müssen signiert sein, damit eine VM mit vertrauenswürdigem Start gestartet werden kann. Viele Azure-Partner signieren ihre Treiber/Kernelmodule mit ihrem eigenen privaten Schlüssel. Dieser Ansatz erfordert, dass der öffentliche Schlüssel (UEFI-Schlüssel) des privaten Schlüsselpaars auf der UEFI-Ebene verfügbar ist, sodass die VM mit vertrauenswürdigem Start die Startkomponenten überprüfen und erfolgreich starten kann.

Für eine VM mit vertrauenswürdigem Start befindet sich jetzt ein neues Feature namens „UEFI-Schlüssel für den sicheren Start“ in der Vorschau. Mit diesem Feature können Sie UEFI-Schlüssel (db/dbx/pk/kek) für Treiber/Kernelmodule binden, die mit einem privaten Schlüssel signiert sind, der sich im Besitz Ihrer Drittanbieter befindet. In dieser öffentlichen Vorschau können Sie UEFI-Schlüssel mithilfe der Azure Compute Gallery binden. Das Binden von UEFI-Schlüsseln für das Azure Marketplace-Image oder als Teil der VM-Bereitstellungsparameter wird derzeit nicht unterstützt.

Hinweis

Das Binden von UEFI-Schlüsseln gilt hauptsächlich für Linux-basierte VMs mit vertrauenswürdigem Start.

Führen Sie die Schritte in den folgenden Verfahren aus, um eine VM mit vertrauenswürdigem Start zu binden und zu erstellen.

Abrufen der virtuellen Festplatte eines Azure Marketplace-Images

  1. Erstellen Sie eine Gen2-VM mithilfe eines Azure Marketplace-Images.

  2. Beenden Sie die VM, um auf den Betriebssystemdatenträger zuzugreifen.

    Screenshot, der zeigt, wie eine VM beendet wird.

  3. Öffnen Sie den Datenträger aus dem linken Bereich einer beendeten VM.

    Screenshot, der zeigt, wie auf eine virtuelle Betriebssystemfestplatte zugegriffen wird.

  4. Exportieren Sie den Datenträger, um auf die SAS einer virtuelle Betriebssystemfestplatte (Virtual Hard Disk, VHD) zuzugreifen.

    Screenshot, der zeigt, wie eine URL generiert wird.

  5. Kopieren Sie eine Betriebssystem-VHD mithilfe eines SAS-URI in das Speicherkonto:

    1. Verwenden Sie azcopy, um den Kopiervorgang auszuführen.
    2. Verwenden Sie dieses Speicherkonto und die kopierte VHD als Eingabe für die SIG-Erstellung.

Erstellen eines SIG-Images mithilfe einer VHD

Erstellen Sie ein SIG-Image, indem Sie die bereitgestellte Azure Resource Manager-Vorlage (ARM-Vorlage) bereitstellen.

Screenshot, der zeigt, wie eine Azure-Vorlage verwendet wird.

Zugreifen auf die SIG aus der JSON-Vorlage der Betriebssystem-VHD
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "galleryName": {
            "defaultValue": "customuefigallery",
            "type": "String",
            "metadata": {
                "description": "Name of the gallery"
            }
        },
        "imageDefinitionName": {
            "defaultValue": "image_def",
            "type": "String",
            "metadata": {
                "description": "Name of the image definition"
            }
        },
        "versionName": {
            "defaultValue": "1.0.0",
            "type": "String",
            "metadata": {
                "description": "Name of the image version"
            }
        },
		"storageAccountName": {
		    "defaultValue": "",
			"type": "string",
			"metadata": {
			    "description": "Storage account name containing the OS vhd"
			}
		},
        "vhdURI": {
            "defaultValue": "",
            "type": "String",
			"metadata": {
			    "description": "OS vhd URL"
			}
        },
        "imagePublisher": {
            "defaultValue": "",
            "type": "String",
            "metadata": {
                "description": "Publisher name of the image"
            }
        },
        "offer": {
            "defaultValue": "",
            "type": "String",
            "metadata": {
                "description": "Offer of the image"
            }
        },
        "sku": {
            "defaultValue": "",
            "type": "String",
            "metadata": {
                "description": "Sku of the image"
            }
        },
        "osType": {
            "defaultValue": "Linux",
            "allowedValues": [
                "Windows",
                "Linux"
            ],
            "type": "String",
            "metadata": {
                "description": "Operating system type"
            }
        },
		"gallerySecurityType": {
			"defaultValue": "TrustedLaunchSupported",
			"type": "String",
			"allowedValues": [
			    "TrustedLaunchSupported",
				"TrustedLaunchAndConfidentialVMSupported"
			],
			"metadata": {
				"description": "Gallery Image security type"
			}
		},
		"customDBKey": {
            "defaultValue": "",
            "type": "String",
            "metadata": {
                "description": "Custom UEFI DB cert. in base64 format"
            }
		}
    },
	"variables": {
		"linuxSignatureTemplate": "MicrosoftUefiCertificateAuthorityTemplate",
		"windowsSignatureTemplate": "MicrosoftWindowsTemplate"
	},
    "resources": [
        {
            "type": "Microsoft.Compute/galleries",
            "apiVersion": "2022-01-03",
            "name": "[parameters('galleryName')]",
            "location": "[resourceGroup().location]",
            "tags": {
                "AzSecPackAutoConfigReady": "true"
            },
            "properties": {
                "identifier": {}
            }
        },
        {
            "type": "Microsoft.Compute/galleries/images",
            "apiVersion": "2022-08-03",
            "name": "[concat(parameters('galleryName'), '/', parameters('imageDefinitionName'))]",
            "location": "[resourceGroup().location]",
            "dependsOn": [
                "[resourceId('Microsoft.Compute/galleries', parameters('galleryName'))]"
            ],
            "tags": {
                "AzSecPackAutoConfigReady": "true"
            },
            "properties": {
                "hyperVGeneration": "V2",
                "architecture": "x64",
                "osType": "[parameters('osType')]",
                "osState": "Generalized",
                "identifier": {
                    "publisher": "[parameters('imagePublisher')]",
                    "offer": "[parameters('offer')]",
                    "sku": "[parameters('sku')]"
                },
                "features": [
                    {
                        "name": "SecurityType",
                        "value": "TrustedLaunchAndConfidentialVMSupported"
                    }
                ],
                "recommended": {
                    "vCPUs": {
                        "min": 1,
                        "max": 16
                    },
                    "memory": {
                        "min": 1,
                        "max": 32
                    }
                }
            }
        },
        {
            "type": "Microsoft.Compute/galleries/images/versions",
            "apiVersion": "2022-08-03",
            "name": "[concat(parameters('galleryName'), '/',parameters('imageDefinitionName'),'/', parameters('versionName'))]",
            "location": "[resourceGroup().location]",
            "dependsOn": [
                "[resourceId('Microsoft.Compute/galleries/images', parameters('galleryName'), parameters('imageDefinitionName'))]",
                "[resourceId('Microsoft.Compute/galleries', parameters('galleryName'))]"
            ],
            "properties": {
                "publishingProfile": {
                    "targetRegions": [
                        {
                            "name": "[resourceGroup().location]",
                            "regionalReplicaCount": 1
                        }
                    ]
                },
                "storageProfile": {
                    "osDiskImage": {
                        "hostCaching": "ReadOnly",
                        "source": {
                            "uri": "[parameters('vhdURI')]",
							"storageAccountId": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
                        }
                    }
                },
                "securityProfile": {
                    "uefiSettings": {
                        "signatureTemplateNames": [
						    "[if(equals(parameters('osType'),'Linux'), variables('linuxSignatureTemplate'), variables('windowsSignatureTemplate'))]"
                        ],
                        "additionalSignatures": {
                            "db": [
								{
									"type": "x509",
									"value": ["[parameters('customDBKey')]"]
								}
                            ]
                        }
                    }
                }
            }
        }
    ]
}

Verwenden Sie diese Erstellungsvorlage für das Azure Compute Gallery-Image. Geben Sie die URL der Betriebssystem-VHD und den zugehörigen Speicherkontonamen aus dem vorherigen Schritt an.

Erstellen einer VM (Bereitstellen einer ARM-Vorlage über das Portal)

Erstellen Sie eine VM mit vertrauenswürdigem Start oder eine vertrauliche VM mithilfe des Azure Compute Gallery-Images, das zuvor erstellt wurde.

Das folgende Beispiel zeigt eine Erstellungsvorlage für eine VM mit TrustedLaunch mit einem Azure Compute Gallery-Image.

Zugriff auf die Bereitstellung von TVM aus einer SIG-JSON-Vorlage
{
  "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
  "contentVersion": "1.0.0.0",
  "parameters": {
    "networkInterfaceName": {
      "type": "String",
      "defaultValue": "TVM-nic"
    },
    "networkSecurityGroupName": {
      "type": "String",
      "defaultValue": "TVM-nsg"
    },
    "subnetName": {
      "type": "String",
      "defaultValue": "default"
    },
    "virtualNetworkName": {
      "type": "String",
      "defaultValue": "TVM-vnet"
    },
    "addressPrefixes": {
      "type": "Array",
      "defaultValue": [
        "10.27.0.0/16"
      ]
    },
    "subnets": {
      "type": "Array",
      "defaultValue": [
        {
          "name": "default",
          "properties": {
            "addressPrefix": "10.27.0.0/24"
          }
        }
      ]
    },
    "publicIpAddressName": {
      "type": "String",
      "defaultValue": "TVM-ip"
    },
    "publicIpAddressType": {
      "type": "String",
      "defaultValue": "Static"
    },
    "publicIpAddressSku": {
      "type": "String",
      "defaultValue": "Standard"
    },
    "pipDeleteOption": {
      "type": "String",
      "defaultValue": "Detach"
    },
    "virtualMachineName": {
      "type": "String",
      "defaultValue": "TVM"
    },
    "virtualMachineComputerName": {
      "type": "String",
      "defaultValue": "TVM"
    },
    "osDiskType": {
      "type": "String",
      "defaultValue": "Premium_LRS"
    },
    "osDiskDeleteOption": {
      "type": "String",
      "defaultValue": "Detach"
    },
    "virtualMachineSize": {
      "type": "String",
      "defaultValue": "Standard_D2s_v3"
    },
    "nicDeleteOption": {
      "type": "String",
      "defaultValue": "Detach"
    },
    "adminUsername": {
      "type": "String",
      "defaultValue": "vmadmin"
    },
    "adminPassword": {
      "type": "SecureString"
    },
    "securityType": {
      "type": "String",
      "defaultValue": "TrustedLaunch"
    },
    "secureBoot": {
      "type": "Bool",
      "defaultValue": true
    },
    "vTPM": {
      "type": "Bool",
      "defaultValue": true
    },
    "galleryName": {
      "type": "String"
    },
	"galleryImageName": {
		"type": "String"
	},
	"galleryImageVersion": {
		"type": "String"
	}
  },
  "variables": {
    "nsgId": "[resourceId(resourceGroup().name, 'Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]",
    "vnetName": "[parameters('virtualNetworkName')]",
    "vnetId": "[resourceId(resourceGroup().name,'Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]",
    "subnetRef": "[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]"
  },
  "resources": [
    {
      "type": "Microsoft.Network/networkInterfaces",
      "apiVersion": "2021-03-01",
      "name": "[parameters('networkInterfaceName')]",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[concat('Microsoft.Network/networkSecurityGroups/', parameters('networkSecurityGroupName'))]",
        "[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]",
        "[concat('Microsoft.Network/publicIpAddresses/', parameters('publicIpAddressName'))]"
      ],
      "properties": {
        "ipConfigurations": [
          {
            "name": "ipconfig",
            "properties": {
              "subnet": {
                "id": "[variables('subnetRef')]"
              },
              "privateIPAllocationMethod": "Dynamic",
              "publicIpAddress": {
                "id": "[resourceId(resourceGroup().name, 'Microsoft.Network/publicIpAddresses', parameters('publicIpAddressName'))]",
                "properties": {
                  "deleteOption": "[parameters('pipDeleteOption')]"
                }
              }
            }
          }
        ],
        "networkSecurityGroup": {
          "id": "[variables('nsgId')]"
        }
      }
    },
    {
      "type": "Microsoft.Network/networkSecurityGroups",
      "apiVersion": "2019-02-01",
      "name": "[parameters('networkSecurityGroupName')]",
      "location": "[resourceGroup().location]"
    },
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2020-11-01",
      "name": "[parameters('virtualNetworkName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": "[parameters('addressPrefixes')]"
        },
        "subnets": "[parameters('subnets')]"
      }
    },
    {
      "type": "Microsoft.Network/publicIpAddresses",
      "apiVersion": "2020-08-01",
      "name": "[parameters('publicIpAddressName')]",
      "location": "[resourceGroup().location]",
      "sku": {
        "name": "[parameters('publicIpAddressSku')]"
      },
      "properties": {
        "publicIpAllocationMethod": "[parameters('publicIpAddressType')]"
      }
    },
    {
      "type": "Microsoft.Compute/virtualMachines",
      "apiVersion": "2021-07-01",
      "name": "[parameters('virtualMachineName')]",
      "location": "[resourceGroup().location]",
      "identity": {
        "type": "SystemAssigned"
      },
      "dependsOn": [
        "[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]"
      ],
      "properties": {
        "hardwareProfile": {
          "vmSize": "[parameters('virtualMachineSize')]"
        },
        "storageProfile": {
          "osDisk": {
            "createOption": "fromImage",
            "managedDisk": {
              "storageAccountType": "[parameters('osDiskType')]"
            },
            "deleteOption": "[parameters('osDiskDeleteOption')]"
          },
          "imageReference": {
            "id": "[resourceId('Microsoft.Compute/galleries/images/versions', parameters('galleryName'), parameters('galleryImageName'), parameters('galleryImageVersion'))]"
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName'))]",
              "properties": {
                "deleteOption": "[parameters('nicDeleteOption')]"
              }
            }
          ]
        },
        "osProfile": {
          "computerName": "[parameters('virtualMachineComputerName')]",
          "adminUsername": "[parameters('adminUsername')]",
          "adminPassword": "[parameters('adminPassword')]"
        },
        "securityProfile": {
          "securityType": "[parameters('securityType')]",
          "uefiSettings": {
            "secureBootEnabled": "[parameters('secureBoot')]",
            "vTpmEnabled": "[parameters('vTPM')]"
          }
        },
        "diagnosticsProfile": {
          "bootDiagnostics": {
            "enabled": true
          }
        }
      }
    }
  ]
}

Überprüfen der Anwesenheit von benutzerdefinierten UEFI-Schlüsseln in der VM

Führen Sie SSH auf der Linux-VM aus, und führen Sie mokutil--db oder mokutil--dbx aus, um die entsprechenden benutzerdefinierten UEFI-Schlüssel in den Ergebnissen zu überprüfen.

Unterstützte Regionen

Land / Region Regions
USA USA, Westen, USA, Osten, USA, Osten 2
Europa Europa, Norden, Europa, Westen, Europa, Westen 2, Schweiz, Norden
Asien-Pazifik Asien, Südosten und Asien, Osten
Indien Indien, Mitte
Deutschland Deutschland, Westen-Mitte
Vereinigte Arabische Emirate Vereinigte Arabische Emirate, Norden
Japan Japan, Osten

Zusätzliche Informationen

Wichtig

Methode zum Generieren eines Base64-Zertifikats für öffentliche Schlüssel, das als benutzerdefinierte UEFI-DB eingefügt werden soll: Auszüge aus Kapitel 3. Signieren eines Kernels und Moduls für Secure Boot Red Hat Enterprise Linux 8 | Red Hat-Kundenportal

Installationsabhängigkeiten

Bash
~$ sudo yum install pesign openssl kernel-devel mokutil keyutils

Erstellen eines Schlüsselpaars zum Signieren des Kernelmoduls

Bash
$ sudo efikeygen --dbdir /etc/pki/pesign --self-sign --module --common-name 'CN=Organization signing key' --nickname 'Custom Secure Boot key'

Exportieren eines öffentlichen Schlüssels in eine CER-Datei

Bash
$ sudo certutil -d /etc/pki/pesign -n 'Custom Secure Boot key' -Lr > sb_cert.cer

Konvertieren in ein base64-Format

Bash
$ openssl x509 -inform der -in sb_cert.cer -out sb_cert_base64.cer

Extrahieren einer base64-Zeichenfolge zur Verwendung in der ARM-Vorlage für die SIG-Erstellung

Bash
$ sed -e '/BEGIN CERTIFICATE/d;/END CERTIFICATE/d' sb_cert_base64.cer

Das folgende Beispiel einer Azure Compute Gallery-Vorlage enthält bereits ausgefüllte Einträge.

JSON
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json",
    "contentVersion": "1.0.0.0",
    "parameters": {
    },
    "resources": [
        {
            "type": "Microsoft.Compute/galleries",
            "apiVersion": "2022-01-03",
            "name": "customuefigallerytest",
            "location": "[resourceGroup().location]",
            "tags": {
                "AzSecPackAutoConfigReady": "true"
            },
            "properties": {
                "identifier": {}
            }
        },
        {
            "type": "Microsoft.Compute/galleries/images",
            "apiVersion": "2022-08-03",
            "name": "[concat('customuefigallerytest', '/', 'image_def')]",
            "location": "[resourceGroup().location]",
            "dependsOn": [
                "[resourceId('Microsoft.Compute/galleries', 'customuefigallerytest')]"
            ],
            "tags": {
                "AzSecPackAutoConfigReady": "true"
            },
            "properties": {
                "hyperVGeneration": "V2",
                "architecture": "x64",
                "osType": "Linux",
                "osState": "Generalized",
                "identifier": {
                    "publisher": "testpublisher",
                    "offer": "testoffer",
                    "sku": "testsku"
                },
                "features": [
                    {
                        "name": "SecurityType",
                        "value": "TrustedLaunchSupported"
                    }
                ],
                "recommended": {
                    "vCPUs": {
                        "min": 1,
                        "max": 16
                    },
                    "memory": {
                        "min": 1,
                        "max": 32
                    }
                }
            }
        },
        {
            "type": "Microsoft.Compute/galleries/images/versions",
            "apiVersion": "2022-08-03",
            "name": "[concat('customuefigallerytest', '/','image_def','/', '1.0.0')]",
            "location": "[resourceGroup().location]",
            "dependsOn": [
                "[resourceId('Microsoft.Compute/galleries/images', 'customuefigallerytest', 'image_def')]",
                "[resourceId('Microsoft.Compute/galleries', 'customuefigallerytest')]"
            ],
            "properties": {
                "publishingProfile": {
                    "targetRegions": [
                        {
                            "name": "[resourceGroup().location]",
                            "regionalReplicaCount": 1
                        }
                    ]
                },
                "storageProfile": {
                    "osDiskImage": {
                        "hostCaching": "ReadOnly",
                        "source": {
                            "uri": "https://sourceosvhdeastus2euap.blob.core.windows.net/ubuntu2204cvmsmalldisk/abcd",
                            "storageAccountId": "/subscriptions/130068aa-dcf8-46e8-a2cc-205ab4a32b30/resourceGroups/sharmade-customuefi-canarytest/providers/Microsoft.Storage/storageAccounts/sourceosvhdeastus2euap"
                        }
                    }
                },
                "securityProfile": {
                    "uefiSettings": {
                        "signatureTemplateNames": [
                            "MicrosoftUefiCertificateAuthorityTemplate"
                        ],
                        "additionalSignatures": {
                            "db": [
                                {
                                    "type": "x509",
                                    "value": [
                                        "MIIDNzCCAh+gAwIBAgIRANcuAK10JUqNpehWlkldzxEwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMQ3VzdG9tRGJLZXkzMB4XDTIzMDYxOTEwNTI0MloXDTMzMDYxNjEwNTI0MlowFzEVMBMGA1UEAxMMQ3VzdG9tRGJLZXkzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq+QdB6n3TDk12Qa/JcbmdfEpIrx4dKG9d5D/SRHWfJACInxtH64jzvGohVnAqIDqcKK+FvVLDPrqD7hbzV34AOXkyVoRtHEsdDErkG9CVBJlWleuew+if9TkW8wabFT3/sHSzVbG6+6AFOHsnDbO1Rpvh1ZPp2AgqiNg7XUHQM9zH00BYz7xtL9XEr+sRRgp0Bn0PGQGQU1Q302TK6jlHwJGMidke4Le2IIDJTUTGx3yWuX7f/T/u6alZeKjg+hYysJ7dpaaC5DyRTT5pJv62pZBJa3DkwWWSKroJozp9ujf93KYP7NoCLHkyiITAUK04hsHm/UvIt7ZhayTS24MbwIDAQABo34wfDAfBgNVHSMEGDAWgBQBXPUO5tTx8gh9G1iwS1KMwXUi/zAVBglghkgBhvhCAQEBAf8EBQMDAPABMBMGA1UdJQQMMAoGCCsGAQUFBwMDMA4GA1UdDwEB/wQEAwIEsDAdBgNVHQ4EFgQUAVz1DubU8fIIfRtYsEtSjMF1Iv8wDQYJKoZIhvcNAQELBQADggEBAA4xZmr3HhDOc2xzDMjqiVnCBMPT8nS9P+jCXezTeG1SIWrMmQUSs8rtU0YoNRIq1wbT/rqbYIwwhRfth0nUGf22zp4UdigVcpt+FQj9eGgeF6sJyHVWmMZu8rEi8BhHEsS6jHqExckp0vshhyW5whr86znWFWf/EsVGFkxd7kjv/KB0ff2ide5vLOWxoTfYmSxYyg2K1FQXP7L87Rb7O6PKzo0twVgeZ616e/yFLcmUQgnHBhb2IKtdo+CdTCxcw9/nNqGPwsNLsti2jyr5oNm9mX6wVaAuXCC3maX35DdWFVK0gXcENEw+Q6+JSyPV1ItXc5CD0NU9pd+R85qsFlY="
                                    ]
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}

Bereitstellen einer SIG-Vorlage mithilfe von az cli

Azure CLI
> az deployment group create --resource-group <resourceGroupName> --template-file "<location to template>\SIGWithCustomUEFIKeyExample.json"
Azure CLI
> $imagDef="/subscriptions/<subscription id>/resourceGroups/<resourcegroup name>/providers/Microsoft.Compute/galleries/customuefigallerytest/images/image_def/versions/1.0.0"
> az vm create --resource-group <resourcegroup name> --name <vm name> --image $imagDef --admin-username <username> --generate-ssh-keys --security-type TrustedLaunch