Chaque instance de machine virtuelle (VM) stocke ses métadonnées sur un serveur de métadonnées. Votre VM a automatiquement accès à l'API du serveur de métadonnées, sans aucune autorisation supplémentaire. Compute Engine conserve les clés et les valeurs de métadonnées de vos VM et de vos projets dans des répertoires. Chaque répertoire stocke les entrées de métadonnées sous forme de paires clé/valeur. Certains répertoires contiennent des sous-répertoires.
Ce document présente les métadonnées de VM et explique leurs types et leurs propriétés.
Utiliser les métadonnées des VM
Les sections suivantes décrivent quelques cas dans lesquels vous pouvez gérer vos VM à l'aide d'entrées de métadonnées.
Scripts de démarrage et d'arrêt
Le serveur de métadonnées est particulièrement intéressant lorsqu'il est utilisé en combinaison avec des scripts de démarrage et d'arrêt. En effet, il vous permet d'obtenir des informations uniques sur une VM de manière automatisée, sans autorisation supplémentaire.
Par exemple, vous pouvez écrire un script de démarrage qui récupère la paire clé/valeur de métadonnées pour l'adresse IP externe d'une VM et vous servir de cette adresse IP dans votre script pour configurer une base de données. Les clés de métadonnées prédéfinies de Compute Engine étant les mêmes sur toutes les VM, vous pouvez réutiliser votre script sans avoir à le mettre à jour pour chacune d'entre elles. Cela vous permet de créer un code moins fragile pour vos applications.
- Pour en savoir plus sur les scripts de démarrage, consultez la présentation des scripts de démarrage.
- Pour en savoir plus sur les scripts d'arrêt, consultez la page Exécuter des scripts d'arrêt.
Maintenance de l'hôte
Le serveur de métadonnées fournit des informations sur les options de programmation des VM dans le répertoire de métadonnées scheduling/ à l'aide de la clé maintenance-event. Vous pouvez utiliser ces valeurs de métadonnées pour être informé lorsqu'un événement de maintenance est sur le point de se produire afin de pouvoir préparer votre environnement en conséquence.
Pour en savoir plus, consultez la page Recevoir des notifications de migration à chaud.
Attributs d'invité
Les attributs d'invité sont un type spécifique de métadonnées personnalisées auxquelles vos applications peuvent accéder en écriture alors qu'elles sont en cours d'exécution sur vos VM. N'utilisez les attributs d'invité que pour les cas d'utilisation nécessitant de petites quantités de données qui ne changent pas fréquemment. Pour en savoir plus sur les attributs d'invité, consultez Définir et interroger des attributs d'invité.
Attributs partenaire
Les attributs partenaire sont un type spécifique de métadonnées d'instance. Google Cloud Les services peuvent utiliser des attributs partenaire pour créer un espace de noms dans lequel ils peuvent définir des entrées de métadonnées d'instance. Vous pouvez définir, mettre à jour, supprimer et afficher les valeurs des entrées de métadonnées d'instance pour configurer ce service.
Points à noter concernant la sécurité des métadonnées
Lorsque vous effectuez une requête pour obtenir des informations auprès du serveur de métadonnées, votre requête et la réponse de métadonnées qui s'en suit ne quittent jamais l'hôte physique exécutant la VM.
Néanmoins, tout processus autorisé à interroger l'URL des métadonnées peut accéder à l'ensemble des valeurs du serveur de métadonnées. Cela comprend toutes les valeurs de métadonnées personnalisées, les certificats client et les clés privées que vous écrivez sur le serveur. Nous vous recommandons d'être prudent lorsque vous écrivez des valeurs sensibles sur le serveur de métadonnées ou lorsque vous exécutez des processus tiers. Vous devez mettre en bac à sable tout processus qui ne doit pas pouvoir accéder au serveur de métadonnées.
Points de terminaison du serveur de métadonnées
Le serveur de métadonnées est accessible depuis les points de terminaison HTTP et HTTPS.
Points de terminaison HTTP du serveur de métadonnées
Les points de terminaison HTTP sont accessibles depuis tous les types d'instances de calcul, y compris les VM protégées.
Vous pouvez utiliser les points de terminaison suivants pour accéder au serveur de métadonnées à l'aide de HTTP :
- Nom DNS (recommandé) :
http://metadata.google.internal/computeMetadata/v1 - Adresse IPv4 :
http://169.254.169.254/computeMetadata/v1 - Adresse IPv6 (uniquement pour les VM IPv6 uniquement) :
http://[fd20:ce::254]/computeMetadata/v1
Points de terminaison HTTPS du serveur de métadonnées
Les points de terminaison du serveur de métadonnées HTTPS offrent une sécurité supplémentaire pour la transmission des informations entre le serveur de métadonnées et la VM. Ces points de terminaison ne sont disponibles que pour les VM protégées.
Vous pouvez utiliser les points de terminaison suivants pour accéder au serveur de métadonnées à partir d'une VM protégée à l'aide de HTTPS :
- Nom DNS (recommandé) :
https://metadata.google.internal/computeMetadata/v1 - Adresse IPv4 :
https://169.254.169.254/computeMetadata/v1 - Adresse IPv6 (uniquement pour les VM IPv6 uniquement) :
https://[fd20:ce::254]/computeMetadata/v1
Avantages de l'utilisation du point de terminaison HTTPS du serveur de métadonnées
L'utilisation du point de terminaison HTTPS pour interroger le serveur de métadonnées présente les avantages suivants :
Améliore la sécurité : permet d'empêcher l'accès non autorisé à vos métadonnées sensibles. Il empêche un attaquant d'effectuer l'une des actions suivantes :
- Spoofing ou usurpation d'identité du serveur de métadonnées pour accéder à une VM
- Affichage ou falsification de métadonnées sensibles avant qu'elles n'atteignent la VM
Réduit les coûts : vous permet d'éviter les coûts associés aux failles de sécurité
Fonctionnement du processus
Pour les VM protégées sur lesquelles l'environnement invité est installé, les processus suivants ont lieu sur votre VM :
Compute Engine crée trois certificats comme suit :
- Un certificat racine autosigné : un certificat unique généré par Compute Engine pour la VM. Compute Engine génère ce certificat uniquement lors du premier démarrage de la VM, et il est valide pendant 50 ans.
- Un certificat d'identité de serveur : un certificat pour le serveur de métadonnées.
Un certificat d'identité de client : un certificat pour le client. Le serveur de métadonnées ne met pas ce certificat en cache. L'environnement invité reçoit un nouveau certificat du serveur de métadonnées à chaque appel au point de terminaison du certificat client. Ce certificat est valide pendant sept jours. L'environnement invité doit appeler le point de terminaison au moins tous les sept jours pour obtenir un nouveau certificat et en conserver un valide.
Pour connaître les emplacements de stockage des certificats d'identité client et racine, consultez Où sont stockés les certificats ?.
Lors du premier démarrage, Compute Engine transfère la partie publique du certificat racine vers l'environnement invité de la VM à l'aide d'une variable UEFI générée par Google. Ce certificat racine est ensuite stocké sur la VM.
L'environnement invité demande régulièrement un certificat d'identité client. Dans ce cas, l'agent invité télécharge ce certificat à partir du serveur de métadonnées et le valide à l'aide du certificat racine de cette VM.
Lorsque vous effectuez une requête auprès du point de terminaison HTTPS du serveur de métadonnées, vous spécifiez les certificats d'identité client qui sont ensuite utilisés par le serveur de métadonnées et la VM pour vérifier que cette requête est autorisée.
Activer la configuration automatique des certificats
Si vous souhaitez que vos instances ou vos projets
configurent automatiquement les certificats HTTPS MDS,
définissez la clé de métadonnées disable-https-mds-setup sur votre instance ou votre projet
sur FALSE.
Pour en savoir plus, consultez Clés de métadonnées prédéfinies.
Où sont stockés les certificats ?
Les sections suivantes listent l'emplacement de stockage des certificats racine et d'identité client générés par Compute Engine.
Certificats racine
CentOS/RHEL/Rocky
Les certificats racine pour les VM CentOS, Red Hat Enterprise Linux (RHEL) et Rocky Linux sont stockés à l'emplacement suivant :
/run/google-mds-mtls/root.crt
Debian/Ubuntu
Les certificats racine pour les VM Debian et Ubuntu sont stockés à l'emplacement suivant :
/run/google-mds-mtls/root.crt
Fedora
Les certificats racine pour les VM Fedora sont stockés à l'emplacement suivant :
/run/google-mds-mtls/root.crt
SLES
Les certificats racine pour les VM SUSE Linux Enterprise Server (SLES) sont stockés à l'emplacement suivant :
/run/google-mds-mtls/root.crt
Windows
Les certificats racine pour les VM Windows sont stockés à l'emplacement suivant :
C:\ProgramData\Google\ComputeEngine\mds-mtls-root.crt
Certificats d'identité client
Les certificats d'identité client sont accessibles à tous les processus exécutés sur la VM. Cela est nécessaire pour que tous les processus aient accès au serveur de métadonnées à l'aide du point de terminaison HTTPS, comme pour le point de terminaison HTTP. Pour en savoir plus, consultez Points à noter concernant la sécurité des métadonnées.
Linux
Les certificats d'identité client pour les VM Linux sont stockés à l'emplacement suivant :
/run/google-mds-mtls/client.key
Windows
Les certificats d'identité client pour les VM Windows sont stockés aux emplacements suivants :
C:\ProgramData\Google\ComputeEngine\mds-mtls-client.key
Activer le stockage des certificats racine dans le magasin de confiance du système d'exploitation
Si vous souhaitez que Compute Engine ajoute automatiquement le certificat racine du serveur de métadonnées HTTPS à votre magasin de confiance du système d'exploitation, définissez la clé de métadonnées enable-https-mds-native-cert-store sur votre instance ou votre projet sur TRUE.
Si vous activez cette option, Compute Engine ajoute le certificat racine aux emplacements suivants en plus de son emplacement par défaut.
CentOS/RHEL/Rocky
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
Debian/Ubuntu
/etc/ssl/certs/ca-certificates.crt
Fedora
/etc/pki/tls/certs/ca-bundle.crt
SLES
/etc/ssl/ca-bundle.pem
Windows
Cert:\LocalMachine\Root
Pour en savoir plus, consultez Clés de métadonnées prédéfinies.
Rotation des certificats racine
Le certificat racine du serveur de métadonnées HTTPS est alterné chaque fois qu'une instance démarre et s'arrête. Dans ce cas, tous les certificats basés sur le certificat racine précédent ne sont plus valides pour établir des connexions HTTPS au serveur de métadonnées. Si la configuration automatique des certificats est activée, l'environnement invité met à jour les certificats client et racine précédents sur le système de fichiers à l'aide du même processus que lors d'un premier démarrage.
Clés de métadonnées prédéfinies et personnalisées
Chaque entrée de métadonnées est stockée sur le serveur de métadonnées en tant que paire clé/valeur. Les clés de métadonnées sont sensibles à la casse. Vos clés peuvent être des clés de métadonnées prédéfinies ou personnalisées.
Clés de métadonnées prédéfinies
Les clés de métadonnées prédéfinies sont des clés de métadonnées créées par Compute Engine.
Lorsque vous créez une VM, Compute Engine définit automatiquement les valeurs de métadonnées de certaines de ces clés sur cette VM (par exemple, l'ID d'instance de VM ou l'ID de projet). Pour les clés prédéfinies dans lesquelles Compute Engine ne définit pas automatiquement de valeur, vous pouvez choisir parmi un ensemble de valeurs disponibles en fonction de la configuration système.
Par exemple, pour activer OS Login pour une VM, vous pouvez définir la valeur de la clé prédéfinie enable-oslogin sur TRUE pour cette VM. Pour désactiver OS Login pour cette VM, vous pouvez mettre à jour la valeur de la clé vers FALSE.Vous ne pouvez mettre à jour que les valeurs de ces clés, pas les clés elles-mêmes.
Pour en savoir plus sur les clés de métadonnées prédéfinies et obtenir la liste de ces clés, consultez Clés de métadonnées prédéfinies.
Clés de métadonnées personnalisées
Les métadonnées personnalisées vous permettent de créer et d'utiliser vos propres paires clé/valeur de métadonnées sur une VM ou un projet individuel. Vous pouvez ajouter de nouvelles clés de métadonnées personnalisées, mettre à jour les valeurs de vos clés existantes et supprimer toutes les entrées de métadonnées personnalisées lorsque vous n'en avez plus besoin. La définition de métadonnées personnalisées est utile pour transmettre des valeurs arbitraires aux VM d'un projet. Cette opération permet également de créer des scripts de démarrage et d'arrêt.
Pour découvrir comment ajouter, mettre à jour ou supprimer des métadonnées personnalisées pour vos VM, consultez Configurer des métadonnées personnalisées.
Types de métadonnées
Les entrées de métadonnées de VM peuvent fournir des informations spécifiques à une VM ou à un projet individuel. Vos métadonnées sont divisées en métadonnées de projet, zonales et d'instance, en fonction du champ d'application que vous définissez pour les métadonnées.
Métadonnées de projet
Les métadonnées de projet sont définies au niveau du projet et fournissent des informations qui s'appliquent à toutes les VM d'un projet. Lorsque vous définissez ces métadonnées, les entrées de métadonnées se propagent à toutes les VM de ce projet.
Vous pouvez utiliser des clés de métadonnées prédéfinies et personnalisées pour définir des métadonnées de projet. En savoir plus sur les clés de métadonnées de projet prédéfinies et sur la définition de métadonnées de projet personnalisées.
Métadonnées zonales
Les métadonnées zonales sont définies au niveau zonal d'un projet et fournissent des informations sur les VM de cette zone spécifique du projet. Lorsque vous définissez des métadonnées zonales, les entrées de métadonnées se propagent à toutes les VM de la zone configurée de ce projet. Par rapport aux métadonnées de projet, les métadonnées zonales vous aident à isoler les pannes et offrent une plus grande fiabilité.
Compute Engine ne fournit aucune clé prédéfinie pour les métadonnées zonales. Vous devez créer vos propres clés de métadonnées personnalisées pour définir des métadonnées zonales. En savoir plus sur la définition de métadonnées zonales personnalisées.
Métadonnées de l'instance
Les métadonnées d'instance fournissent des informations sur une instance de VM spécifique. Vous définissez les métadonnées d'instance séparément pour chaque instance de VM.
Vous pouvez utiliser des clés de métadonnées prédéfinies et personnalisées pour définir des métadonnées d'instance. En savoir plus sur les clés de métadonnées d'instance prédéfinies et sur la définition de métadonnées d'instance personnalisées.
Organisation des métadonnées
Compute Engine stocke et gère les clés et les valeurs de métadonnées de vos VM et de vos projets dans des listes de répertoires. Selon le type de métadonnées, Compute Engine stocke les entrées de métadonnées dans l'un des répertoires suivants :
| Type de métadonnées | Annuaire |
|---|---|
| Métadonnées de projet et zonales |
|
| Métadonnées d'instance |
|
Chaque répertoire stocke les entrées de métadonnées sous forme de paires clé/valeur. Certaines entrées de métadonnées correspondent à des répertoires contenant d'autres clés de métadonnées. Les entrées de métadonnées qui fonctionnent comme des répertoires sont marquées par une barre oblique (/) dans le nom de la clé de métadonnées. Par exemple, /project/attributes/ est un
répertoire sous le répertoire project/ qui contient d'autres clés de métadonnées. Pour créer votre propre liste de répertoires de métadonnées, vous devez utiliser une barre oblique finale (/) dans le nom de la clé de métadonnées lorsque vous créez votre entrée de métadonnées personnalisée.
Lorsque vous interrogez un point de terminaison de métadonnées, le format du corps de la réponse dépend du point de terminaison. Si vous interrogez un point de terminaison qui stocke une seule valeur, telle que hostname, le corps de la réponse contient cette valeur en texte brut. Si vous interrogez un point de terminaison qui fait office de répertoire, tel que /project/attributes/, le corps de la réponse contient une liste des entrées de ce répertoire, avec une entrée par ligne.
Pour en savoir plus sur l'interrogation des points de terminaison de métadonnées, y compris sur l'interrogation récursive des répertoires ou sur la mise en forme de la réponse au format JSON, consultez Afficher et interroger les métadonnées de VM.
Le projet et ses entrées de métadonnées zonales sont stockés dans le même répertoire project/. Si vous définissez des valeurs différentes pour les mêmes clés de métadonnées personnalisées pour les VM au niveau du projet et au niveau zonal, les valeurs des métadonnées zonales du projet pour ces clés sont prioritaires sur les métadonnées à l'échelle du projet dans les zones respectives.
- Si vous ajoutez une valeur de métadonnées zonale de projet pour une clé de métadonnées ayant déjà une valeur de projet, Compute Engine remplace la valeur de projet pour les VM de la zone spécifiée et met à jour le répertoire
/projectavec la valeur zonale du projet. - Si vous ajoutez une nouvelle valeur de métadonnées de projet pour une clé de métadonnées ayant déjà une valeur de métadonnées zonale, rien ne change. Compute Engine conserve la valeur de métadonnées zonale dans le répertoire
/projectde la zone spécifique. - Si vous ne spécifiez pas de valeur de métadonnées zonale de projet pour une clé de métadonnées personnalisée dans une zone spécifique, mais que la clé a une valeur de métadonnées de projet, vos VM continueront d'avoir les valeurs de métadonnées de projet dans ces zones.
Par exemple, supposons que vous définissez une paire de métadonnées de projet key-1=value-1. Supposons également que vous définissez une paire de métadonnées zonales key-1=zonal-value-1 uniquement pour la zone us-central1-a. Toutes les VM de la zone us-central1-a de votre projet héritent de key-1=zonal-value1 en tant que paire de métadonnées. La paire de métadonnées
reste key-1=value-1 pour toutes les VM des autres zones dans lesquelles vous n'avez
défini aucune métadonnée zonale pour key-1.
Étape suivante
- Découvrez les clés de métadonnées prédéfinies que Google Cloud propose.
- Découvrez comment configurer des entrées de métadonnées personnalisées.
- Découvrez comment définir et interroger des attributs d'invité.
- Après avoir défini des valeurs pour vos clés de métadonnées, découvrez comment afficher et interroger les informations sur les métadonnées de VM pour une VM ou un projet.
- Découvrez comment recevoir des notifications de migration à chaud du serveur de métadonnées.