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. Compute Engine mantiene las claves y los valores de metadatos para las VMs y los proyectos en los directorios. Cada directorio almacena entradas de metadatos en forma de pares clave-valor. Algunos directorios contienen subdirectorios.

En este documento, se proporciona una descripción general de los metadatos de VM y se explican los tipos y las propiedades de los 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 clave-valor de metadatos 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 predefinidas de Compute Engine 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 la opción de programación de una VM en el directorio de metadatos scheduling/ mediante la clave 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 Establece y consulta atributos de invitado.

Atributos de socio

Los atributos de socio son un tipo específico de metadatos de instancia. Los servicios de Google Cloud pueden usar atributos de socio para crear un espacio de nombres dentro del cual pueden definir entradas de metadatos de instancias. Puedes establecer, actualizar, borrar y ver los valores de las entradas de metadatos de la instancia para configurar ese servicio.

Por ejemplo, cuando usas identidades de carga de trabajo administradas para Compute Engine, puedes especificar los detalles de configuración en las entradas de metadatos del espacio de nombres de ese servicio.

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, certificados de cliente y claves privadas 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. Debes poner en la zona de pruebas cualquier proceso que no debería poder acceder al servidor de metadatos.

Extremos del servidor de metadatos

Se puede acceder al servidor de metadatos desde los siguientes extremos:

  • Un extremo HTTP: http://metadata.google.internal/computeMetadata/v1. Se puede acceder a él desde todas las VMs, incluidas las VMs protegidas.
  • Un extremo HTTPS: https://metadata.google.internal/computeMetadata/v1. Solo se puede acceder a esta función desde VMs blindadas.

Extremo del servidor de metadatos HTTPS

El extremo del servidor de metadatos HTTPS (https://metadata.google.internal/computeMetadata/v1) proporciona seguridad adicional para la transmisión de información entre el servidor de metadatos y la VM. Este extremo solo está disponible para las VMs protegidas.

Beneficios de usar el extremo del servidor de metadatos HTTPS

El uso del extremo HTTPS para consultar el servidor de metadatos proporciona los siguientes beneficios:

  • Mejora la seguridad: Ayuda a evitar el acceso no autorizado a tus metadatos sensibles. Evita que un atacante pueda realizar cualquiera de las siguientes acciones:

    • Falsificación o suplantación de identidad del servidor de metadatos para obtener acceso a una VM
    • Visualizar o manipular metadatos sensibles antes de que lleguen a la VM
  • Reduce los costos: Te ayuda a evitar los costos asociados con las violaciones de la seguridad.

Cómo funciona el proceso

En el caso de las VMs protegidas que tienen instalado el entorno invitado, los siguientes procesos se llevan a cabo en la VM:

  1. Cuando se inicia la VM, Compute Engine completa las siguientes acciones:

    1. Compute Engine crea tres certificados de la siguiente manera:

      • Un certificado raíz autofirmado: Es un certificado único que se genera para la VM.
      • Un certificado de identidad del servidor: Es un certificado para el servidor de metadatos.
      • Un certificado de identidad de cliente: Es un certificado para el cliente. Este certificado no se almacena en caché en el servidor de metadatos y se vuelve a crear en cada llamada al extremo de certificado de cliente desde el entorno de invitado.

        Para conocer las ubicaciones de almacenamiento de los certificados de identidad de cliente y raíz, consulta Dónde se almacenan los certificados.

    2. Compute Engine transfiere la parte pública del certificado raíz al entorno invitado de la VM con una variable UEFI generada por Google. Luego, este certificado raíz se almacena en la VM.

  2. De forma periódica, el entorno invitado solicita un certificado de identidad de cliente. Cuando esto sucede, el agente invitado descarga este certificado del servidor de metadatos y lo valida con el certificado raíz de esa VM.

Cuando realizas una consulta al extremo del servidor de metadatos HTTPS, especificas los certificados de identidad del cliente que, luego, usan el servidor de metadatos y la VM para verificar que esta consulta esté autorizada.

Dónde se almacenan los certificados

En las siguientes secciones, se indica la ubicación de almacenamiento de los certificados de identidad raíz y cliente que genera Compute Engine.

Certificados raíz

CentOS/RHEL/Rocky

Los certificados raíz de las VMs de CentOS, Red Hat Enterprise Linux (RHEL) y Rocky Linux se almacenan en las siguientes ubicaciones:

  • /run/google-mds-mtls/root.crt
  • /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

Debian/Ubuntu

Los certificados raíz de las VMs de Debian y Ubuntu se almacenan en las siguientes ubicaciones:

  • /run/google-mds-mtls/root.crt
  • /etc/ssl/certs/ca-certificates.crt

Fedora

Los certificados raíz de las VMs de Fedora se almacenan en las siguientes ubicaciones:

  • /run/google-mds-mtls/root.crt
  • /etc/pki/tls/certs/ca-bundle.crt

SLES

Los certificados raíz de las VMs de SUSE Linux Enterprise Server (SLES) se almacenan en las siguientes ubicaciones:

  • /run/google-mds-mtls/root.crt
  • /etc/ssl/ca-bundle.pem

Windows

Los certificados raíz de las VMs de Windows se almacenan en las siguientes ubicaciones:

  • C:\ProgramData\Google\ComputeEngine\mds-mtls-root.crt
  • Cert:\LocalMachine\Root
Certificados de identidad del cliente

Todos los procesos que se ejecutan en la VM pueden acceder a los certificados de identidad del cliente. Esto es necesario para que todos los procesos tengan acceso al servidor de metadatos a través del extremo HTTPS, de manera similar al extremo HTTP. Para obtener más información, consulta Consideraciones de seguridad de los metadatos.

Linux

Los certificados de identidad de cliente para las VMs de Linux se almacenan en la siguiente ubicación:

/run/google-mds-mtls/client.key

Windows

Los certificados de identidad de cliente para las VMs de Windows se almacenan en las siguientes ubicaciones:

  • C:\ProgramData\Google\ComputeEngine\mds-mtls-client.key
  • Cert:\LocalMachine\My

Claves de metadatos predefinidos y personalizados

Cada entrada de metadatos se almacena en el servidor de metadatos como pares clave-valor. Las claves de metadatos distinguen mayúsculas de minúsculas. Tus claves pueden ser claves predefinidas o personalizadas de metadatos.

Claves de metadatos predefinidas

Las claves de metadatos predefinidas son claves de metadatos que crea Compute Engine. Cuando creas una VM, Compute Engine configura automáticamente los valores de metadatos para algunas de estas claves en esa VM, por ejemplo, el ID de instancia de VM o el ID del proyecto. En el caso de las claves predefinidas en las que Compute Engine no establece automáticamente un valor, puedes elegir entre un conjunto de valores que están disponibles según la configuración del sistema. Por ejemplo, para habilitar el Acceso al SO para una VM, puedes configurar el valor de la clave predefinida enable-oslogin como TRUE para esa VM. Para inhabilitar el Acceso al SO para esa VM, puedes actualizar el valor de la clave a FALSE. Solo puedes actualizar los valores de estas claves, pero no las claves en sí.

Para obtener más información sobre las claves de metadatos predefinidas y una lista de estas claves, consulta Claves de metadatos predefinidos.

Claves de metadatos personalizados

Los metadatos personalizados te permiten crear y usar tus propios pares clave-valor de metadatos en una VM individual o en un proyecto. Puedes agregar nuevas claves de metadatos personalizados, actualizar los valores de tus claves existentes y quitar las entradas de metadatos personalizados cuando no las necesites. Establecer metadatos personalizados es útil para pasar valores arbitrarios a las VMs en un proyecto. También es útil para crear secuencias de comandos de inicio y cierre.

Para obtener información sobre cómo agregar, actualizar o quitar metadatos personalizados de tus VMs, consulta Configura metadatos personalizados.

Tipos de metadatos

Las entradas de metadatos de VM pueden proporcionar información específica de una VM individual o un proyecto. Los metadatos se dividen en metadatos de proyecto, zonales y de instancia, según el permiso en el que establezcas los metadatos.

Metadatos del proyecto

Los metadatos del proyecto se definen en el alcance del proyecto y proporcionan información que se aplica a todas las VMs de un proyecto. Cuando configuras estos metadatos, las entradas de metadatos se propagan a todas las VMs de ese proyecto.

Puedes usar claves de metadatos predefinidas y personalizadas para establecer metadatos del proyecto. Obtén más información acerca de las claves predefinidas de metadatos de proyectos y cómo configurar metadatos personalizados del proyecto.

Metadatos zonales

Los metadatos zonales se definen en un permiso zonal dentro de un proyecto y proporcionan información acerca de las VMs en esa zona específica de ese proyecto. Cuando configuras metadatos zonales, las entradas de metadatos se propagan a todas las VMs en esa zona configurada en ese proyecto. Cuando se los compara con los metadatos del proyecto, los metadatos zonales te ayudan con el aislamiento de fallas y proporcionan mayor confiabilidad.

Compute Engine no proporciona ninguna clave predefinida para los metadatos zonales. Debes crear tus propias claves de metadatos personalizados para establecer metadatos zonales. Obtén más información acerca de cómo establecer metadatos zonales personalizados.

Metadatos de la instancia

Los metadatos de la instancia proporcionan información sobre una instancia de VM específica. Debes configurar los metadatos de la instancia por separado para cada instancia de VM individual.

Para establecer metadatos de instancias, puedes usar claves de metadatos predefinidas y personalizadas. Obtén más información sobre las claves de metadatos de instancia predefinidas y cómo configurar metadatos de instancia personalizados.

Cómo se organizan los metadatos

Compute Engine almacena y mantiene las claves y los valores de metadatos para las VMs y los proyectos en las listas de directorios. Según el tipo de metadatos, Compute Engine almacena entradas de metadatos en uno de los siguientes directorios:

Tipo de metadatos Directorio
Metadatos de todo el proyecto y zonales
  • Extremo HTTP:
    http://metadata.google.internal/computeMetadata/v1/project
  • Extremo HTTPS (versión preliminar):
    https://metadata.google.internal/computeMetadata/v1/project
Metadatos de la instancia
  • Extremo HTTP:
    http://metadata.google.internal/computeMetadata/v1/instance
  • Extremo HTTP/S:
    https://metadata.google.internal/computeMetadata/v1/instance

Cada directorio almacena entradas de metadatos en forma de pares clave-valor. Algunas entradas de metadatos son directorios que contienen otras claves de metadatos. Las entradas de metadatos que funcionan como directorios se marcan con una barra diagonal (/) en el nombre de la clave de metadatos. Por ejemplo, /project/attributes/ es un directorio en el directorio project/ que contiene otras claves de metadatos. Para crear tu propia lista de directorios de metadatos, debes usar una barra diagonal (/) en el nombre de la clave de metadatos cuando creas tu entrada de metadatos personalizados.

Las entradas de metadatos zonales y de proyectos se almacenan en el mismo directorio project/. Si configuras valores diferentes para las mismas claves de metadatos personalizados para VMs a nivel de proyecto y a nivel zonal, los valores de metadatos zonales para esas claves tienen prioridad sobre los valores de metadatos del proyecto en las zonas respectivas.

  • Si agregas un valor de metadatos zonales para una clave de metadatos que ya tiene un valor de metadatos del proyecto, Compute Engine anula el valor de metadatos del proyecto para las VMs de esta zona especificada y actualiza el directorio /project con el valor zonal.
  • Si agregas un valor de metadatos nuevo a nivel de proyecto para una clave de metadatos que ya tiene un valor de metadatos zonales, no cambiará nada. Compute Engine conserva el valor de metadatos zonales en el directorio /project de la zona específica.
  • Si no especificas un valor de metadatos zonales para una clave de metadatos personalizada en una zona específica, pero la clave tiene un valor de metadatos del proyecto, las VMs seguirán teniendo los valores de metadatos del proyecto en esas zonas.

Por ejemplo, supongamos que defines un par de metadatos de key-1=value-1 para todo el proyecto. Supongamos que también defines un par de metadatos zonales de para key-1=zonal-value-1 solo para la zona us-central1-a. Todas las VMs en la zona us-central1-a de tu proyecto heredan key-1=zonal-value1 como el par de metadatos. El par de metadatos permanece key-1=value-1 para todas las VMs en otras zonas en las que no configuraste ningún metadato zonal para key-1.

Próximos pasos