GCP - Compute Instances

Soutenez HackTricks

Informations de base

Les Google Cloud Compute Instances sont des machines virtuelles personnalisables sur l'infrastructure cloud de Google, offrant une puissance de calcul évolutive et à la demande pour une large gamme d'applications. Elles fournissent des fonctionnalités telles que le déploiement global, le stockage persistant, des choix flexibles de systèmes d'exploitation et des intégrations réseau et de sécurité robustes, en faisant un choix polyvalent pour héberger des sites web, traiter des données et exécuter des applications efficacement dans le cloud.

VM Confidentielle

Les VM confidentielles utilisent des fonctionnalités de sécurité matérielle offertes par la dernière génération de processeurs AMD EPYC, qui incluent le chiffrement de la mémoire et la virtualisation sécurisée chiffrée. Ces fonctionnalités permettent à la VM de protéger les données traitées et stockées en son sein, même contre le système d'exploitation hôte et l'hyperviseur.

Pour exécuter une VM confidentielle, il peut être nécessaire de modifier des éléments tels que le type de machine, l'interface réseau, l'image du disque de démarrage.

Disque & Chiffrement de Disque

Il est possible de sélectionner le disque à utiliser ou d'en créer un nouveau. Si vous en sélectionnez un nouveau, vous pouvez :

  • Sélectionner la taille du disque

  • Sélectionner le système d'exploitation

  • Indiquer si vous souhaitez supprimer le disque lorsque l'instance est supprimée

  • Chiffrement : Par défaut, une clé gérée par Google sera utilisée, mais vous pouvez également sélectionner une clé de KMS ou indiquer une clé brute à utiliser.

Déployer un Conteneur

Il est possible de déployer un conteneur à l'intérieur de la machine virtuelle. Il est possible de configurer l'image à utiliser, définir la commande à exécuter à l'intérieur, les arguments, monter un volume, et les variables d'environnement (informations sensibles ?) et configurer plusieurs options pour ce conteneur comme exécuter en tant que privilégié, stdin et pseudo TTY.

Compte de Service

Par défaut, le compte de service par défaut de Compute Engine sera utilisé. L'email de ce SA est comme : <proj-num>-compute@developer.gserviceaccount.com Ce compte de service a le rôle d'éditeur sur l'ensemble du projet (hauts privilèges).

Et les portées d'accès par défaut sont les suivantes :

  • https://www.googleapis.com/auth/devstorage.read_only -- Accès en lecture aux buckets :)

  • https://www.googleapis.com/auth/logging.write

  • https://www.googleapis.com/auth/monitoring.write

  • https://www.googleapis.com/auth/servicecontrol

  • https://www.googleapis.com/auth/service.management.readonly

  • https://www.googleapis.com/auth/trace.append

Cependant, il est possible de lui accorder cloud-platform d'un clic ou de spécifier des portées personnalisées.

Pare-feu

Il est possible d'autoriser le trafic HTTP et HTTPS.

Réseau

  • Transfert IP : Il est possible d'activer le transfert IP dès la création de l'instance.

  • Nom d'hôte : Il est possible de donner à l'instance un nom d'hôte permanent.

  • Interface : Il est possible d'ajouter une interface réseau.

Sécurité Supplémentaire

Ces options augmenteront la sécurité de la VM et sont recommandées :

  • Démarrage sécurisé : Le démarrage sécurisé aide à protéger vos instances VM contre les malwares au niveau du démarrage et du noyau, ainsi que contre les rootkits.

  • Activer vTPM : Le module de plateforme sécurisée virtuelle (vTPM) valide l'intégrité pré-démarrage et démarrage de votre VM invitée, et offre la génération et la protection des clés.

  • Supervision de l'intégrité : La surveillance de l'intégrité vous permet de surveiller et de vérifier l'intégrité du démarrage en temps réel de vos instances VM protégées à l'aide de rapports Stackdriver. Nécessite l'activation de vTPM.

Accès à la VM

La manière courante de permettre l'accès à la VM est d'autoriser certaines clés publiques SSH à accéder à la VM. Cependant, il est également possible de permettre l'accès à la VM via le service os-config en utilisant IAM. De plus, il est possible d'activer la 2FA pour accéder à la VM en utilisant ce service. Lorsque ce service est activé, l'accès via clés SSH est désactivé.

Métadonnées

Il est possible de définir une automatisation (userdata dans AWS) qui sont des commandes shell qui seront exécutées chaque fois que la machine s'allume ou redémarre.

Il est également possible d'ajouter des valeurs de métadonnées supplémentaires sous forme de paires clé-valeur qui seront accessibles depuis le point de terminaison des métadonnées. Ces informations sont couramment utilisées pour les variables d'environnement et les scripts de démarrage/arrêt. Cela peut être obtenu en utilisant la méthode describe à partir d'une commande dans la section d'énumération, mais cela pourrait également être récupéré de l'intérieur de l'instance en accédant au point de terminaison des métadonnées.

# view project metadata
curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

# view instance metadata
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

Moreover, auth token for the attached service account and general info about the instance, network and project is also going to be available from the metadata endpoint. For more info check:

Encryption

Une clé de chiffrement gérée par Google est utilisée par défaut, mais une clé de chiffrement gérée par le client (CMEK) peut être configurée. Vous pouvez également configurer ce qu'il faut faire lorsque le CMEK utilisé est révoqué : rien ou arrêter la VM.

Soutenez HackTricks

Last updated