Ce document explique comment activer le démarrage sécurisé ou un module de plate-forme sécurisée virtualisé (vTPM) sur une instance de machine virtuelle (VM) dans Google Distributed Cloud (GDC) sous air gap.
Ce document est destiné aux développeurs des groupes d'administrateurs de plate-forme ou d'opérateurs d'applications qui configurent le démarrage sécurisé et les vTPM sur les VM dans un environnement Distributed Cloud. Pour en savoir plus, consultez la documentation sur les audiences pour GDC sous air gap.
À propos du démarrage sécurisé
Le démarrage sécurisé est une fonctionnalité qui permet de s'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 si cette vérification échoue. Il utilise le micrologiciel UEFI (Unified Extensible Firmware Interface) pour gérer les certificats et les clés que les fabricants utilisent pour signer le micrologiciel système, les bootloaders et les binaires chargés.
À chaque démarrage, le micrologiciel UEFI vérifie la signature numérique de chaque composant par rapport aux clés approuvées stockées et bloque tous les composants non signés ou mal signés.
Pour activer le démarrage sécurisé sur votre instance de VM, vous devez définir le type bootloader de la VM sur uefi.
Pour consulter la documentation officielle sur UEFI, accédez à https://uefi.org/sites/default/files/resources/UEFI_Secure_Boot_in_Modern_Computer_Security_Solutions_2013.pdf.
À propos des modules de plate-forme sécurisée virtualisés
Un vTPM est une puce informatique virtuelle spécialisée qui protège les clés et les certificats utilisés pour authentifier l'accès au système. Pour en savoir plus sur les vTPM, consultez https://trustedcomputinggroup.org/trusted-platform-module-tpm-summary/.
Vous pouvez également utiliser un vTPM pour protéger les 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 gdcloud CLI.
Toutes les commandes de Distributed Cloud utilisent la CLI gdcloud ou kubectl, et nécessitent un environnement de système d'exploitation.
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 :
Connectez-vous et générez le fichier kubeconfig pour le serveur de l'API Management si vous n'en avez pas.
Utilisez le chemin d'accès au fichier kubeconfig du serveur de l'API Management pour remplacer
MANAGEMENT_API_SERVERdans ces instructions.
Demander des rôles IAM
Pour activer le démarrage sécurisé ou le vTPM sur votre VM, contactez votre administrateur IAM de projet pour demander le rôle Administrateur de projet de machine virtuelle (project-vm-admin).
Tous les rôles de VM doivent être liés à l'espace de noms du projet dans lequel réside la VM. Suivez les étapes pour vérifier votre accès.
Activer le démarrage sécurisé
Activez le démarrage sécurisé pour une VM. Suivez les instructions ci-dessous pour une VM nommée VM_NAME dans l'espace de noms du projet (PROJECT_NAMESPACE).
Arrêtez votre VM si elle est en cours d'exécution avant d'appliquer le correctif. Si vous tentez d'appliquer un correctif à
shieldConfigpendant que la VM est en cours d'exécution, l'API renvoie une erreurForbidden:Changes to shieldConfig are not allowed while the VM is running. Pour obtenir des instructions, consultez Arrêter une VM.Mettez à jour votre ressource personnalisée de VM pour activer le démarrage sécurisé :
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT_NAMESPACE \ patch virtualmachines.virtualmachine.gdc.goog VM_NAME \ --type merge --patch $' spec: shieldConfig: bootType: uefi enableSecureBoot: true 'Une fois le correctif appliqué, démarrez votre VM en suivant les instructions de la section Démarrer une VM.
Vérifiez que vous avez activé le démarrage sécurisé. Établissez une connexion SSH à votre VM et exécutez la commande suivante :
mokutil --sb-stateSi vous avez activé le démarrage sécurisé, la commande renvoie
SecureBoot enabled.Si l'outil
mokutilindique 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é
Ouvrez votre ressource personnalisée de VM dans un éditeur :
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT_NAMESPACE \ edit virtualmachines.virtualmachine.gdc.goog VM_NAMERecherchez les champs ou valeurs manquants, comme indiqué dans le champ
specde la section "Exécuter la commande suivante". Ils sont obligatoires.S'il en manque ou s'ils sont incorrects, modifiez
specpour ajouter les champs manquants et corriger les valeurs erronées.Enregistrez le fichier.
Suivez les étapes de la section Redémarrer la VM.
Si les étapes précédentes ne permettent pas de résoudre votre problème, consultez la documentation correspondant au système d'exploitation de la VM pour vérifier que la version du système d'exploitation est compatible avec le démarrage sécurisé.
Activer vTPM
Activez vTPM pour une VM. Suivez les instructions ci-dessous pour une VM nommée VM_NAME dans l'espace de noms du projet (PROJECT_NAMESPACE).
Arrêtez votre VM si elle est en cours d'exécution avant d'appliquer le correctif. Si vous tentez d'appliquer un correctif à
shieldConfigpendant que la VM est en cours d'exécution, l'API renvoie une erreurForbidden:Changes to shieldConfig are not allowed while the VM is running. Pour obtenir des instructions, consultez Arrêter une VM.Mettez à jour votre ressource personnalisée de VM pour activer vTPM :
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT_NAMESPACE \ patch virtualmachines.virtualmachine.gdc.goog VM_NAME \ --type merge --patch $' spec: shieldConfig: enableVtpm: true 'Une fois le correctif appliqué, démarrez votre VM en suivant les instructions de la section Démarrer une VM.
Vérifiez que vous avez activé vTPM. Établissez une connexion SSH à votre VM et exécutez la commande suivante :
dmesg | grep -i tpmSi vous avez activé vTPM, la commande renvoie le module TPM dans le cadre des tables ACPI. La sortie ressemble à ceci :
[ 7.620985] tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1, rev-id 1)Si les
ACPI tablesn'affichent pas le module TPM, suivez les étapes de la section Résoudre les problèmes de configuration de vTPM.
Résoudre les problèmes de configuration de vTPM
Ouvrez votre ressource personnalisée de VM dans un éditeur :
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT_NAMESPACE \ edit virtualmachines.virtualmachine.gdc.goog VM_NAMERecherchez les champs ou valeurs manquants, comme indiqué dans le champ
specde la section Exécuter la commande suivante. Ils sont obligatoires.S'il en manque ou s'ils sont incorrects, modifiez
specpour ajouter les champs manquants et corriger les valeurs erronées.Enregistrez le fichier.
Suivez les étapes de la section Redémarrer la VM.
Si les étapes précédentes ne permettent pas de résoudre votre problème, consultez la documentation correspondant au système d'exploitation de la VM pour vérifier que la version du système d'exploitation est compatible avec vTPM.