vSphere enables you to configure Virtual Intel® Software Guard Extensions (vSGX) for virtual machines. Using vSGX enables you to provide additional security to your workloads.

Some modern Intel CPUs implement a security extension called Intel® Software Guard Extensions (Intel® SGX). Intel SGX is a processor-specific technology for application developers who seek to protect select code and data from disclosure or modification. Intel SGX allows user-level code to define private regions of memory, called enclaves. The enclave contents are protected such that code running outside the enclave cannot access the enclave contents.

vSGX enables virtual machines to use Intel SGX technology if available on the hardware. To use vSGX, the ESXi host must be installed on an SGX-capable CPU and SGX must be enabled in the BIOS of the ESXi host. You can use the vSphere Client to enable SGX for a virtual machine.

In vSphere 8.0 and later, you can use remote attestation for a vSGX-enabled virtual machine. Intel SGX remote attestation is a security mechanism that allows you to establish an authenticated and secure communication channel with a trusted remote entity. To use remote attestation for virtual machines using SGX enclaves, hosts with a single CPU socket do not require Intel registration. To enable the remote attestation on a virtual machine running on a host with multiple CPU sockets, you must first register the host with the Intel Registration Server. If an SGX-capable host with multiple CPU sockets is not registered with the Intel Registration Server, you can only power on vSGX-enabled virtual machines that do not require remote attestation.

See the vCenter Server and Host Management documentation for more information about registering a multi-socket ESXi host with the Intel Registration Server.

Getting Started with vSGX

Virtual machines can use Intel SGX technology, if available on the hardware.

vSphere Requirements for vSGX

To use vSGX, your vSphere environment must meet these requirements:

  • Virtual machine requirements:
    • EFI firmware
    • Hardware version 17 or later
    • To enable remote attestation, hardware version 20 or later
  • Component requirements:
    • vCenter Server 7.0 and later
    • ESXi 7.0 and later
    • The ESXi host must be installed on an SGX-capable CPU and SGX must be enabled in the BIOS of the ESXi host.
    • To enable the remote attestation for the host, register the host with the Intel Registration Server. This way, the virtual machine running on the host can use the remote attestation. For more information on how to register a multi-socket ESXi, see the vCenter Server and Host Management documentation.
  • Guest OS support:
    • Linux
    • Windows Server 2016 (64 bit) and later
    • Windows 10 (64 bit) and later

Supported Intel Hardware for vSGX

For supported Intel hardware for vSGX, consult the VSphere Compatibility Guide at https://www.vmware.com/resources/compatibility/search.php.

You might need to turn off hyperthreading on certain CPUs to enable SGX on the ESXi host. For more information, see the VMware KB article at https://kb.vmware.com/s/article/71367.

Unsupported VMware Features on vSGX

The following features are not supported in a virtual machine when vSGX is enabled:

  • vMotion/DRS migration
  • Virtual machine suspend and resume
  • Virtual machine snapshots (Virtual machine snapshots are supported if you do not snapshot the virtual machine's memory.)
  • Fault tolerance
  • Guest Integrity (GI, platform foundation for VMware AppDefense™ 1.0)
Note:

These VMware features are not supported due to how the Intel SGX architecture functions. They are not the result of a VMware shortcoming.

Enable vSGX on a Virtual Machine

You can enable vSGX on a virtual machine at the same time that you create a virtual machine.

Prerequisites

See vSphere Requirements for vSGX.

Procedure

  1. Connect to vCenter Server by using the vSphere Client.
  2. Select an object in the inventory that is a valid parent object of a virtual machine, for example, an ESXi host or a cluster.
  3. Right-click the object, select New Virtual Machine, and follow the prompts to create a virtual machine.
  4. On the Customize hardware page, click the Virtual Hardware tab and expand Security Devices.
  5. To enable SGX, select the Enable check box.
  6. In the Enclave page cache size (MB) text box, enter the size of the cache size in MB.
    Note: The enclave page cache size must be multiple of 2 MB.
  7. To prevent the virtual machine from powering on hosts that do not support SGX remote attestation, such as unregistered multi-socket SGX hosts, select the Remote attestation check box.
  8. From the Launch control configuration drop-down menu, select the appropriate mode.
    Option Action
    Unlocked This option enables the launch enclave configuration of the guest operating system.
    Locked This option allows you to configure the launch enclave.
    1. Select the Launch enclave public key hash option.
    2. To use one of the public keys configured on the host, select Use from host and from the drop-down menu, select a public key hash.
    3. To enter the public key manually, select Enter manually and enter a valid SHA256 hash (64) characters key.
  9. Click OK.

Enable vSGX on an Existing Virtual Machine

You can enable vSGX on an existing virtual machine.

Prerequisites

See vSphere Requirements for vSGX.

Procedure

  1. Connect to vCenter Server by using the vSphere Client.
  2. Right-click the virtual machine in the inventory that you want to modify and select Edit Settings.
  3. In the Virtual Hardware tab, expand Security Devices.
  4. To enable SGX, select the Enable check box.
  5. In the Enclave page cache size (MB) text box, enter the size of the cache size in MB.
    Note: The enclave page cache size must be multiple of 2 MB.
  6. To prevent the virtual machine from powering on hosts that do not support SGX remote attestation, such as unregistered multi-socket SGX hosts, select the Remote attestation check box.
  7. From the Launch control configuration drop-down menu, select the appropriate mode.
    Option Action
    Unlocked This option enables the launch enclave configuration of the guest operating system.
    Locked This option allows you to configure the launch enclave.
    1. Select the Launch enclave public key hash option.
    2. To use one of the public keys configured on the host, select Use from host and from the drop-down menu, select a public key hash.
    3. To enter the public key manually, select Enter manually and enter a valid SHA256 hash (64) characters key.
  8. Click OK.

Remove vSGX from a Virtual Machine

You can remove vSGX from a virtual machine.

Procedure

  1. Connect to vCenter Server by using the vSphere Client.
  2. Right-click the virtual machine in the inventory that you want to modify and select Edit Settings.
  3. In the Edit Settings dialog box, under Security devices, deselect the Enable check box for SGX.
  4. Click OK.
    Verify that the vSGX entry no longer appears in the virtual machine Summary tab in the VM Hardware pane.