Démarrer une VM de manière sécurisée

Le démarrage sécurisé vous permet de vous assurer que le système n'exécute que des logiciels authentiques. Il vérifie pour cela la signature numérique de tous les composants de démarrage et interrompt le processus de démarrage si cette vérification échoue.

Google Distributed Cloud (GDC) air-gapped utilise le micrologiciel UEFI (Unified Extensible Firmware Interface) pour gérer les certificats et les clés utilisés pour la signature de logiciels.

Le micrologiciel UEFI gère de manière sécurisée les certificats contenant les clés que les fabricants de logiciels utilisent pour signer le micrologiciel système, le bootloader du système, ainsi que tous les binaires chargés. Pour consulter la documentation UEFI, accédez à https://uefi.org/sites/default/files/resources/UEFI_Secure_Boot_in_Modern_Computer_Security_Solutions_2013.pdf.

À chaque démarrage, le micrologiciel UEFI vérifie la signature numérique de chaque composant de démarrage à l'aide d'un magasin sécurisé de clés approuvées. Tout composant de démarrage que vous ne signez pas correctement (ou pas du tout) n'est pas autorisé à s'exécuter. Pour activer le démarrage sécurisé, vous devez définir le type bootloader de la VM sur uefi.

Un vTPM est un Trusted Platform Module virtualisé. Pour en savoir plus sur les vTPM, consultez https://trustedcomputinggroup.org/trusted-platform-module-tpm-summary/. Il s'agit d'une puce informatique spécialisée qui vous permet de protéger des objets, tels que des clés et des certificats servant à authentifier l'accès à votre système. Le module vTPM vous permet également de défendre vos codes secrets grâce à la protection ou au scellement. Pour en savoir plus sur le stockage scellé, consultez https://en.wikipedia.org/wiki/Trusted_Computing#SEALED-STORAGE. Pour en savoir plus sur cette démarche et consulter des exemples en langage Go, reportez-vous au projet Go-TPM sur GitHub : https://github.com/google/go-tpm.

Avant de commencer

Pour utiliser les commandes de l'interface de ligne de commande (CLI) gdcloud, assurez-vous d'avoir téléchargé, installé et configuré la CLI gdcloud. Toutes les commandes pour Distributed Cloud utilisent la CLI gdcloud ou kubectl et nécessitent un environnement de système d'exploitation (OS).

Obtenir le chemin d'accès au fichier kubeconfig

Pour exécuter des commandes sur le serveur de l'API Management, assurez-vous de disposer des ressources suivantes :

  1. Connectez-vous et générez le fichier kubeconfig pour le serveur d'API Management si vous n'en avez pas.

  2. Utilisez le chemin d'accès au fichier kubeconfig du serveur de l'API Management pour remplacer MANAGEMENT_API_SERVER dans ces instructions.

Demander des autorisations et un accès

Pour effectuer les tâches listées sur cette page, vous devez disposer du rôle Administrateur VirtualMachine du projet. Suivez les étapes pour vérifier que vous disposez du rôle Administrateur VirtualMachine du projet (project-vm-admin) dans l'espace de noms du projet dans lequel réside la VM.

Activer le démarrage sécurisé

Activez le démarrage sécurisé pour une VM. Suivez les instructions ci-dessous pour une VM appelée VM_NAME dans l'espace de noms du projet (PROJECT_NAMESPACE).

  1. Mettez à jour la ressource personnalisée de votre VM pour activer le démarrage sécurisé :

    kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $'
    spec:
     shieldConfig:
       bootType: uefi
       enableSecureBoot: true
    '
    
  2. Si la VM est en cours d'exécution, redémarrez-la en suivant les instructions pour redémarrer une VM.

  3. Vérifiez que vous avez activé le démarrage sécurisé. Établissez une connexion SSH avec votre VM et exécutez la commande suivante :

    mokutil --sb-state
    

    Si vous avez activé le démarrage sécurisé, la commande renvoie SecureBoot enabled.

    Si l'outil mokutil indique que vous n'avez pas activé le démarrage sécurisé, suivez les étapes de la section Résoudre les problèmes de configuration du démarrage sécurisé.

Résoudre les problèmes de configuration du démarrage sécurisé

  1. Ouvrez votre ressource personnalisée de VM dans un éditeur :

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
    
  2. Recherchez les champs ou valeurs manquants, comme indiqué dans le champ spec de Exécutez la commande suivante. Ces informations sont obligatoires.

  3. S'il en manque ou si certaines sont incorrectes, modifiez spec pour ajouter les champs manquants et corriger les valeurs erronées.

  4. Enregistrez le fichier.

  5. Suivez la procédure décrite dans Redémarrer la VM.

Si les étapes précédentes ne résolvent pas votre problème, consultez la documentation correspondant au système d'exploitation (OS) de la VM pour vérifier que la version de l'OS est compatible avec le démarrage sécurisé.

Activer le module vTPM (Virtual Trusted Platform Module)

Activez vTPM pour une VM. Suivez les instructions ci-dessous pour une VM appelée VM_NAME dans l'espace de noms du projet (PROJECT_NAMESPACE).

  1. Mettez à jour votre ressource personnalisée de VM pour activer vTPM :

    kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $'
    spec:
       shieldConfig:
          enableVtpm: true
    '
    
  2. Si la VM est en cours d'exécution, redémarrez-la en suivant les instructions pour redémarrer une VM.

  3. Vérifiez que vous avez activé vTPM. Établissez une connexion SSH avec votre VM et exécutez la commande suivante :

    dmesg | grep -i tpm
    

    Si vous avez activé le vTPM, la commande renvoie le module TPM dans les tables ACPI. La sortie ressemble à ceci :

    [    7.620985] tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1, rev-id 1)
    

    Si les ACPI tables n'affichent pas le module TPM, suivez les étapes de la section Dépanner la configuration du vTPM.

Résoudre les problèmes de configuration de vTPM

  1. Ouvrez votre ressource personnalisée de VM dans un éditeur :

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
    
  2. Recherchez les champs ou valeurs manquants, comme indiqué dans le champ spec de la section Exécuter la commande suivante. Ces informations sont obligatoires.

  3. S'il en manque ou si certaines sont incorrectes, modifiez spec pour ajouter les champs manquants et corriger les valeurs erronées.

  4. Enregistrez le fichier.

  5. Suivez la procédure décrite dans Redémarrer la VM.

Si les étapes précédentes ne résolvent pas votre problème, consultez la documentation correspondant au système d'exploitation (OS) de la VM pour vérifier que la version de l'OS est compatible avec vTPM.