Vérifier qu'une instance de VM Intel TDX s'exécute sur Google Cloud

Pour déterminer qu'une instance Confidential VM Intel TDX s'exécute sur Google Cloud, vous devez établir sa provenance. Pour établir la provenance, vous devez effectuer les vérifications suivantes :

  • Vérification du devis et liaison du défi : vérifiez l'authenticité du devis Intel TDX à l'aide du certificat racine Intel intégré, et vérifiez éventuellement la fraîcheur par rapport à un défi attendu dans le champ REPORT_DATA du devis.

  • Vérification de la provenance de l’hôte : extrayez l’ID de provisionnement de la plate-forme (PPID) du certificat PCK intégré au devis. Utilisez le PPID pour récupérer le document JSON du registre d'hôte à partir d'un bucket Cloud Storage afin de vérifier la provenance.

  • Vérification de la provenance de l'instance : utilisez le numéro de projet, la zone et l'ID d'instance (PZID) de l'instance Confidential VM pour calculer un condensé SHA-384, puis vérifiez que le condensé correspond à la valeur du champ MR_OWNER dans le devis Intel TDX.

Vérifier la provenance à distance

Nous vous recommandons d'utiliser l' gceprovenance outil pour déterminer la provenance des machines Intel TDX. L'outil automatise l'extraction des valeurs requises et la récupération du document de provenance.

Pour vérifier la provenance à distance à l'aide de gceprovenance, procédez comme suit :

  1. Clonez le dépôt GitHub go-tdx-guest sur votre vérificateur à distance :

    git clone https://github.com/google/go-tdx-guest.git
    
  2. Selon votre système d'exploitation invité, vous devrez peut-être installer certaines dépendances Go pour créer les outils dans go-tdx-guest. La procédure varie en fonction de votre système d'exploitation. Par exemple, les commandes suivantes installent les dépendances nécessaires sur Ubuntu :

    sudo apt update
    sudo apt install golang-go build-essential
    
  3. Créez l'outil gceprovenance :

    go build -C go-tdx-guest/tools/gceprovenance .
    
  4. Générez un défi de 64 octets auquel l'instance Confidential VM Intel TDX doit être liée :

    head -c 64 /dev/urandom > challenge.bin
    
  5. Envoyez le fichier de défi à l'instance Confidential VM Intel TDX que vous souhaitez vérifier.

  6. Sur l'instance Confidential VM Intel TDX, transmettez le fichier de défi en tant qu'entrée (inblob) au Linux ConfigFS à l'adresse /sys/kernel/config/tsm/report/ :

    sudo mkdir -p /sys/kernel/config/tsm/report/report0
    sudo sh -c 'cat challenge.bin > /sys/kernel/config/tsm/report/report0/inblob'
    

    Le défi est ensuite écrit dans le champ REPORT_DATA du devis par le système.

  7. Récupérez les octets bruts du devis à partir du fichier outblob résultant, puis nettoyez le répertoire report0 :

    sudo cat /sys/kernel/config/tsm/report/report0/outblob > quote.bin
    sudo rmdir /sys/kernel/config/tsm/report/report0
    
  8. Interrogez le serveur de métadonnées local pour obtenir l'ID d'instance, le numéro de projet et la zone de l'instance Confidential VM :

    PROJECT_NUMBER=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id" -H "Metadata-Flavor: Google")
    INSTANCE_ID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/id" -H "Metadata-Flavor: Google")
    ZONE_PATH=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/zone" -H "Metadata-Flavor: Google")
    ZONE=$(basename "$ZONE_PATH")
    
  9. Envoyez le binaire du devis (quote.bin), le numéro de projet, l'ID d'instance et la zone au vérificateur à distance.

  10. Sur le vérificateur à distance, convertissez votre défi en une chaîne hexadécimale de 128 caractères, puis transmettez-le à gceprovenance. L'outil vérifie ensuite la signature du devis et les liaisons de provenance :

    CHALLENGE_HEX=$(hexdump -v -e '/1 "%02x"' challenge.bin)
    ./go-tdx-guest/tools/gceprovenance/gceprovenance verify \
        -quote PATH_TO_QUOTE \
        -instance projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID \
        -challenge $CHALLENGE_HEX
    

    Indiquez les éléments suivants :

    • PATH_TO_QUOTE : chemin d'accès au fichier de devis fourni.

    • PROJECT_NUMBER : numéro de projet fourni.

    • ZONE : zone fournie.

    • INSTANCE_ID : ID d'instance Confidential VM fourni.

    Une réponse réussie ressemble à ceci :

    GCE TDX provenance verification: OK
    
    Instance
      Zone: ZONE
      Project: PROJECT_NUMBER
      Instance ID: INSTANCE_ID
    
    Checks
      Quote verification: OK
      REPORT_DATA challenge: OK
      Host registry document: found
      PZID binding: OK
    
    PPID: PPID
    Quote: tdx_quote.bin
    Host registry: host_registry.json
    

Pour d'autres gceprovenance commandes, consultez le dépôt GitHub.