Acerca de los metadatos de VM


Cada instancia de máquina virtual (VM) almacena sus metadatos en un servidor de metadatos. La VM obtiene acceso de manera automática a la API del servidor de metadatos sin ninguna autorización adicional. Los metadatos se almacenan como pares key:value.

Hay un conjunto predeterminado de claves de metadatos disponibles para las VM que se ejecutan en Compute Engine. Para obtener una lista de estas claves de metadatos predeterminadas, consulta Valores de metadatos predeterminados. También puedes usar tus propias claves de metadatos personalizados en una VM o proyecto individual. Para obtener más información, consulta la sección sobre cómo establecer metadatos personalizados.

Después de configurar una entrada de metadatos predeterminada o personalizada, puedes revisar la información de metadatos de esa VM o proyecto. Para ver los metadatos, visita Consulta metadatos de VM.

Usos de metadatos de VM

En las siguientes secciones, se describen algunas situaciones en las que puedes usar entradas de metadatos para administrar tus VM.

Secuencia de comandos de inicio y apagado

El servidor de metadatos es muy útil cuando se usa en combinación con las secuencias de comandos de inicio y apagado porque puedes usarlo para obtener información única sobre una VM, sin autorización adicional y de manera programática.

Por ejemplo, puedes escribir una secuencia de comandos de inicio que obtenga el par de metadatos key:value para la IP externa de una VM y usarla en tu secuencia de comandos a fin de configurar una base de datos. Debido a que las claves de metadatos predeterminadas son las mismas en cada VM, puedes volver a usar la secuencia de comandos sin tener que actualizarla para cada VM. Esto te ayudará a crear un código menos frágil para las aplicaciones.

Mantenimiento de host

El servidor de metadatos proporciona información sobre una opción de programación de las VM mediante la entrada del directorio de metadatos scheduling/ y el atributo maintenance-event. Puedes usar estos valores de metadatos a fin de recibir notificaciones cuando esté por suceder un evento de mantenimiento, de modo que puedas preparar tu entorno para el evento. Para obtener más información, consulta Obtén avisos de migración en vivo.

Atributos de invitado

Los atributos de invitado son un tipo específico de metadatos personalizados en los que las aplicaciones pueden escribir mientras se ejecutan en la VM. Usa los atributos de invitado solo para casos de uso que requieran pequeñas cantidades de datos que no cambien con frecuencia. Para obtener más información sobre los atributos de invitado, consulta la sección Configura y consulta atributos de invitado.

Consideraciones de seguridad de metadatos

Cuando realizas una solicitud para obtener información del servidor de metadatos, la solicitud y la respuesta de metadatos posterior nunca abandonan el host físico que ejecuta la VM.

Sin embargo, cualquier proceso que pueda consultar la URL de metadatos tiene acceso a todos los valores del servidor de metadatos. Esto incluye cualquier valor de metadatos personalizados que escribas en el servidor. Google recomienda que tengas cuidado cuando escribas valores sensibles en el servidor de metadatos o cuando ejecutes procesos de terceros.

Limitaciones

  • El servidor de metadatos rechaza de forma automática todas las solicitudes que contengan el encabezado X-Forwarded-For. Por lo general, este encabezado indica que la solicitud se realizó a través de un proxy y podría provenir de un usuario no autorizado. Por motivos de seguridad, todas esas solicitudes se rechazan.

  • Cuando usas el comando curl para recuperar metadatos del servidor, ten en cuenta que algunos caracteres codificados no son compatibles con la ruta de la solicitud. Los caracteres codificados solo se admiten en la ruta de la consulta.

    Por ejemplo, la solicitud siguiente podría no funcionar:

    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"

    Para que esta solicitud funcione, debes reemplazar el carácter codificado no admitido en la ruta de la solicitud (%40) con el valor aceptado equivalente (@).

    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"

    En la siguiente tabla, se resumen los caracteres codificados que no se admiten en una ruta de solicitud.

    Carácter codificado Valor aceptado
    %21
    
    !
    %24
    
    $
    %27
    
    '
    %28
    
    (
    %29
    
    )
    %2A
    
    *
    %2C
    
    ,
    %40
    
    @

Partes de una solicitud de metadatos

En la siguiente tabla, se resumen las partes principales de una solicitud de consulta de metadatos.

Componentes Descripción
URL raíz

Todos los valores de metadatos se definen como subrutas de la siguiente URL raíz:


http://metadata.google.internal/computeMetadata/v1
Encabezado de la solicitud

El siguiente encabezado debe estar en todas las solicitudes:


Metadata-Flavor: Google

Este encabezado indica que la solicitud se envió con la intención de recuperar valores de metadatos, en lugar de hacerlo de forma involuntaria desde una fuente insegura, y permite que el servidor de metadatos muestre los datos que solicitaste. Si no proporcionas este encabezado, el servidor de metadatos rechaza tu solicitud.

Próximos pasos