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 gère les clés et les valeurs de métadonnées de vos VM et projets dans les répertoires. Chaque répertoire stocke des entrées de métadonnées sous la 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 les types et les propriétés de ces métadonnées.
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 l'option de planification d'une 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 de partenaire sont un type spécifique de métadonnées d'instance. Les services Google Cloud peuvent utiliser des attributs de 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.
Par exemple, lorsque vous utilisez des identités de charges de travail gérées pour Compute Engine, vous pouvez spécifier les détails de configuration dans les entrées de métadonnées de l'espace de noms de 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 inclut 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 placer dans un 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 suivants :
- Un point de terminaison HTTP :
http://metadata.google.internal/computeMetadata/v1
. Il est accessible depuis toutes les VM, y compris les VM protégées. - Un point de terminaison https :
https://metadata.google.internal/computeMetadata/v1
. Cette fonctionnalité n'est accessible que depuis des VM protégées.
Point de terminaison du serveur de métadonnées HTTPS
Le point de terminaison du serveur de métadonnées HTTPS (https://metadata.google.internal/computeMetadata/v1
) offre une sécurité supplémentaire pour la transmission des informations entre le serveur de métadonnées et la VM.
Ce point de terminaison n'est disponible que pour les VM protégées.
Avantages de l'utilisation du point de terminaison du serveur de métadonnées HTTPS
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 altération 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 :
Lorsque votre VM démarre, Compute Engine effectue les opérations suivantes :
Compute Engine crée trois certificats comme suit :
- Un certificat racine autosigné : un certificat unique généré pour la VM.
- 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. Ce certificat n'est pas mis en cache sur le serveur de métadonnées et est recréé à chaque appel du point de terminaison du certificat client à partir de l'environnement invité.
Pour connaître les emplacements de stockage des certificats d'identité client et des certificats racine, consultez la section Emplacement de stockage des certificats.
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 interrogez le point de terminaison du serveur de métadonnées HTTPS, 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.
Emplacement de stockage des certificats
Les sections suivantes indiquent l'emplacement de stockage des certificats d'identité racine et client générés par Compute Engine.
Certificats racine
CentOS/RHEL/Rocky
Les certificats racine des VM CentOS, Red Hat Enterprise Linux (RHEL) et Rocky Linux sont stockés aux emplacements suivants :
/run/google-mds-mtls/root.crt
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
Debian/Ubuntu
Les certificats racine des VM Debian et Ubuntu sont stockés aux emplacements suivants :
/run/google-mds-mtls/root.crt
/etc/ssl/certs/ca-certificates.crt
Fedora
Les certificats racine des VM Fedora sont stockés aux emplacements suivants :
/run/google-mds-mtls/root.crt
/etc/pki/tls/certs/ca-bundle.crt
SLES
Les certificats racine des VM SUSE Linux Enterprise Server (SLES) sont stockés aux emplacements suivants :
/run/google-mds-mtls/root.crt
/etc/ssl/ca-bundle.pem
Windows
Les certificats racines des VM Windows sont stockés aux emplacements suivants :
C:\ProgramData\Google\ComputeEngine\mds-mtls-root.crt
Cert:\LocalMachine\Root
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 la section Remarques sur 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
Cert:\LocalMachine\My
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 la liste de ces clés, consultez la page 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 individuelle ou sur un projet. 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 pas 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 savoir comment ajouter, mettre à jour ou supprimer des métadonnées personnalisées pour vos VM, consultez la page 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 individuelle ou à un projet. Vos métadonnées sont divisées en métadonnées de projet, zonales et d'instance, en fonction du champ d'application auquel vous avez défini les métadonnées.
Métadonnées de projet
Les métadonnées d'un 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. Apprenez-en plus sur les clés de métadonnées de projet prédéfinies et sur la définition des métadonnées de projet personnalisées.
Métadonnées zonales
Les métadonnées zonales sont définies au niveau d'une zone au sein d'un projet et fournissent des informations sur les VM de cette zone spécifique dans ce projet. Lorsque vous définissez des métadonnées zonales, les entrées de métadonnées se propagent à toutes les VM de cette zone configurée dans 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. Découvrez comment définir des 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. Apprenez-en 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 pour vos VM et 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 à l'échelle du projet et de sa zone |
|
Métadonnées de l'instance |
|
Chaque répertoire stocke des entrées de métadonnées sous la 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 fonctionnant comme des répertoires sont indiquées par une barre oblique finale (/
) dans le nom de la clé de métadonnées. Par exemple, /project/attributes/
est un répertoire du 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.
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
/project
avec la valeur zonale du projet. - Si vous ajoutez une valeur de métadonnées à l'échelle du 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 des métadonnées zonales dans le répertoire
/project
de 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 key-1=value-1
à l'échelle du projet. 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 pas défini de métadonnées zonales pour key-1
.
Étape suivante
- Découvrez les clés de métadonnées prédéfinies proposées par Google Cloud.
- 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 les valeurs de vos clés de métadonnées, découvrez comment afficher et interroger les informations de métadonnées d'une VM pour une VM ou un projet.
- Découvrez comment obtenir des notifications de migration à chaud à partir du serveur de métadonnées.