À propos des métadonnées de VM


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. Les métadonnées sont stockées sous forme de paires key:value.

Il existe un ensemble de clés de métadonnées par défaut pour les VM exécutées sur Compute Engine. Pour obtenir la liste de ces clés de métadonnées par défaut, consultez la page Valeurs de métadonnées par défaut. Vous pouvez également utiliser vos propres clés de métadonnées personnalisées sur une VM ou un projet individuel. Pour en savoir plus, consultez la section Définir des métadonnées personnalisées.

Après avoir défini une entrée de métadonnées par défaut ou personnalisée, vous pouvez consulter les informations sur les métadonnées de cette VM ou de ce projet. Pour afficher les métadonnées, consultez la page Interroger les métadonnées de VM.

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 key:value 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 par défaut é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.

Maintenance de l'hôte

Le serveur de métadonnées fournit des informations sur les options de programmation des VM via l'entrée du répertoire de métadonnées scheduling/ et l'attribut 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 la page Définir et interroger des attributs d'invité.

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 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.

Limites

  • Toutes les requêtes contenant l'en-tête X-Forwarded-For sont automatiquement rejetées par le serveur de métadonnées. Cet en-tête indique généralement que la requête a été exécutée par un serveur proxy et peut ne pas être une requête effectuée par un utilisateur autorisé. Pour des raisons de sécurité, toutes ces requêtes sont refusées.

  • Lorsque vous exécutez la commande curl pour récupérer les métadonnées du serveur, notez que certains caractères encodés ne sont pas disponibles dans le chemin de la requête. Les caractères encodés ne sont acceptés que dans le chemin de la requête.

    Par exemple, la requête suivante est susceptible de ne pas aboutir :

    curl "http://metadata.google.internal/computeMetadata/v1/VM/service-accounts/123456789-compute%40developer.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"

    Pour que cette requête fonctionne, vous devez remplacer le caractère encodé non disponible dans le chemin de la requête (%40) par la valeur acceptée équivalente (@).

    curl "http://metadata.google.internal/computeMetadata/v1/VM/service-accounts/1234567898-compute@developer.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"

    Le tableau suivant récapitule les caractères encodés qui ne sont pas acceptés dans le chemin d'une requête.

    Caractère encodé Valeur acceptée
    %21
    
    !
    %24
    
    $
    %27
    
    '
    %28
    
    (
    %29
    
    )
    %2A
    
    *
    %2C
    
    ,
    %40
    
    @

Composantes d'une requête de métadonnées

Le tableau suivant récapitule les principaux composants d'une requête de métadonnées.

Composants Description
URL racine

Toutes les valeurs de métadonnées sont définies comme des sous-chemins d'accès situés sous l'URL racine suivante :


http://metadata.google.internal/computeMetadata/v1
En-tête de requête

L'en-tête suivant doit figurer dans toutes vos requêtes :


Metadata-Flavor: Google

Cet en-tête indique que la requête a été envoyée avec l'intention de récupérer des valeurs de métadonnées, et non involontairement à partir d'une source non sécurisée. De plus, il permet au serveur de métadonnées de renvoyer les données demandées. Si vous ne fournissez pas cet en-tête, le serveur de métadonnées refuse votre requête.

Étapes suivantes