Cada instancia de máquina virtual almacena sus metadatos en un servidor de metadatos. Tu VM tiene acceso automáticamente a la API del servidor de metadatos sin necesidad de autorización adicional. Compute Engine mantiene las claves y los valores de los metadatos de tus máquinas virtuales y proyectos en directorios. Cada directorio almacena entradas de metadatos en forma de pares clave-valor. Algunos directorios contienen subdirectorios.
En este documento se ofrece una descripción general de los metadatos de las VMs y se explican los tipos y las propiedades de los metadatos de las VMs.
Usos de los metadatos de VM
En las siguientes secciones se describen algunos casos en los que puedes usar entradas de metadatos para gestionar tus VMs.
Secuencias de comandos de inicio y apagado
El servidor de metadatos es especialmente útil cuando se usa en combinación con secuencias de comandos de inicio y apagado, ya que puedes usarlo para obtener de forma programática información única sobre una VM sin necesidad de autorización adicional.
Por ejemplo, puedes escribir una secuencia de comandos de inicio que obtenga el par clave-valor de metadatos de la IP externa de una VM y usar esa IP en tu secuencia de comandos para configurar una base de datos. Como las claves de metadatos predefinidas de Compute Engine son las mismas en todas las VMs, puedes reutilizar tu secuencia de comandos sin tener que actualizarla para cada VM. De esta forma, puedes crear código menos frágil para tus aplicaciones.
- Para obtener más información sobre las secuencias de comandos de inicio, consulta la descripción general de las secuencias de comandos de inicio.
- Para obtener más información sobre las secuencias de comandos de cierre, consulta Ejecutar secuencias de comandos de cierre.
Mantenimiento del 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
. Puede usar estos valores de metadatos para recibir una notificación cuando vaya a producirse un evento de mantenimiento y, así, preparar su entorno para el evento.
Para obtener más información, consulta Recibir notificaciones de migración en tiempo real.
Atributos de huésped
Los atributos de invitado son un tipo específico de metadatos personalizados que tus aplicaciones pueden escribir mientras se ejecutan en tus máquinas virtuales. Utilice los atributos de invitado solo en los casos prácticos que requieran pequeñas cantidades de datos que no cambien con frecuencia. Para obtener más información sobre los atributos de invitado, consulta el artículo Configurar y consultar atributos de invitados.
Atributos de partner
Los atributos de partner son un tipo específico de metadatos de instancia. Google Cloud Los servicios pueden usar atributos de partner para crear un espacio de nombres en el que puedan definir entradas de metadatos de instancia. Puedes definir, actualizar, eliminar 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 gestionadas para Compute Engine, puedes especificar los detalles de configuración en las entradas de metadatos del espacio de nombres de ese servicio.
Consideraciones sobre la seguridad de los metadatos
Cuando haces una solicitud para obtener información del servidor de metadatos, tu 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 los valores de metadatos personalizados, los certificados de cliente y las claves privadas que escribas en el servidor. Google recomienda que tengas cuidado al escribir valores sensibles en el servidor de metadatos o al ejecutar procesos de terceros. Debes aislar en un espacio aislado cualquier proceso que no deba poder acceder al servidor de metadatos.
Endpoints del servidor de metadatos
Se puede acceder al servidor de metadatos desde los siguientes endpoints:
- Un endpoint HTTP:
http://metadata.google.internal/computeMetadata/v1
. Se puede acceder a este endpoint desde todas las VMs, incluidas las VMs blindadas. - Un endpoint HTTPS:
https://metadata.google.internal/computeMetadata/v1
. Solo se puede acceder a este endpoint desde VMs blindadas.
Endpoint del servidor de metadatos HTTPS
El endpoint del servidor de metadatos HTTPS (https://metadata.google.internal/computeMetadata/v1
) proporciona más seguridad para la transmisión de información entre el servidor de metadatos y la VM.
Este endpoint solo está disponible para máquinas virtuales protegidas.
Ventajas de usar el endpoint del servidor de metadatos HTTPS
Usar el endpoint HTTPS para consultar el servidor de metadatos ofrece las siguientes ventajas:
Mejora la seguridad: ayuda a evitar el acceso no autorizado a tus metadatos sensibles. Evita que un atacante pueda llevar a cabo cualquiera de las siguientes acciones:
- Suplantación de identidad o falsificación del servidor de metadatos para obtener acceso a una VM
- Ver o manipular metadatos sensibles antes de que lleguen a la VM
Reduce los costes: te ayuda a evitar los costes asociados a las brechas de seguridad.
Cómo funciona el proceso
En las VMs blindadas que tienen instalado el entorno invitado, se llevan a cabo los siguientes procesos en tu VM:
Compute Engine crea tres certificados de la siguiente manera:
- Un certificado raíz autofirmado: un certificado único generado para la VM. Este certificado solo se genera en el primer arranque de la VM.
- Un certificado de identidad de servidor: un certificado para el servidor de metadatos.
Un certificado de identidad de cliente: 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 endpoint del certificado de cliente desde el entorno invitado.
Para consultar las ubicaciones de almacenamiento de los certificados de identidad de cliente y raíz, consulta Dónde se almacenan los certificados.
En el primer arranque, Compute Engine transfiere la parte pública del certificado raíz al entorno invitado de la VM mediante una variable UEFI generada por Google. Este certificado raíz se almacena en la VM.
Periódicamente, el entorno invitado solicita un certificado de identidad de cliente. Cuando esto ocurre, el agente invitado descarga este certificado del servidor de metadatos y lo valida mediante el certificado raíz de esa VM.
Cuando haces una consulta al endpoint del servidor de metadatos HTTPS, especificas los certificados de identidad del cliente, que el servidor de metadatos y la VM utilizan para verificar que la consulta está autorizada.
Habilitar la configuración automática de certificados
Si quieres que tus instancias o proyectos configuren automáticamente los certificados MDS HTTPS, asigna el valor FALSE
a la clave de metadatos disable-https-mds-setup
en tu instancia o proyecto.
Para obtener más información, consulta Claves de metadatos predefinidas.
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 de cliente que genera Compute Engine.
Certificados raíz
CentOS/RHEL/Rocky
Los certificados raíz de las máquinas virtuales de CentOS, Red Hat Enterprise Linux (RHEL) y Rocky Linux se almacenan en la siguiente ubicación:
/run/google-mds-mtls/root.crt
Debian o Ubuntu
Los certificados raíz de las máquinas virtuales de Debian y Ubuntu se almacenan en la siguiente ubicación:
/run/google-mds-mtls/root.crt
Fedora
Los certificados raíz de las VMs de Fedora se almacenan en la siguiente ubicación:
/run/google-mds-mtls/root.crt
SLES
Los certificados raíz de las máquinas virtuales de SUSE Linux Enterprise Server (SLES) se almacenan en la siguiente ubicación:
/run/google-mds-mtls/root.crt
Windows
Los certificados raíz de las VMs de Windows se almacenan en la siguiente ubicación:
C:\ProgramData\Google\ComputeEngine\mds-mtls-root.crt
Certificados de identidad de cliente
Todos los procesos que se ejecutan en la VM pueden acceder a los certificados de identidad de cliente. Esto es necesario para que todos los procesos tengan acceso al servidor de metadatos mediante el endpoint HTTPS, de forma similar al endpoint HTTP. Para obtener más información, consulta Consideraciones sobre la seguridad de los metadatos.
Linux
Los certificados de identidad de cliente de las máquinas virtuales Linux se almacenan en la siguiente ubicación:
/run/google-mds-mtls/client.key
Windows
Los certificados de identidad de cliente de las máquinas virtuales Windows se almacenan en las siguientes ubicaciones:
C:\ProgramData\Google\ComputeEngine\mds-mtls-client.key
Habilitar el almacenamiento de certificados raíz en el almacén de confianza del SO
Si quieres que Compute Engine añada automáticamente el certificado raíz del servidor de metadatos HTTPS al almacén de confianza de tu SO, asigna el valor TRUE
a la clave de metadatos enable-https-mds-native-cert-store
en tu instancia o proyecto.
Si habilitas esta opción, Compute Engine añade el certificado raíz a las siguientes ubicaciones, además de a su ubicación predeterminada.
CentOS/RHEL/Rocky
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
Debian o 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
Para obtener más información, consulta Claves de metadatos predefinidas.
Claves de metadatos predefinidas y personalizadas
Cada entrada de metadatos se almacena en el servidor de metadatos como pares clave-valor. Las claves de metadatos distinguen entre mayúsculas y minúsculas. Las claves pueden ser claves de metadatos predefinidas o personalizadas.
Claves de metadatos predefinidas
Las claves de metadatos predefinidas son claves de metadatos creadas por Compute Engine.
Cuando creas una VM, Compute Engine asigna automáticamente los valores de metadatos de algunas de estas claves a esa VM, como el ID de instancia de la VM o el ID del proyecto. En el caso de las claves predefinidas en las que Compute Engine no asigna un valor automáticamente, puedes elegir entre un conjunto de valores que están disponibles en función de la configuración del sistema.
Por ejemplo, para habilitar OS Login en una VM, puedes asignar el valor TRUE
a la clave predefinida enable-oslogin
de esa VM. Para inhabilitar OS Login en esa VM, puedes cambiar el valor de la clave a FALSE
.
Solo puede 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 ver una lista de estas claves, consulta Claves de metadatos predefinidas.
Claves de metadatos personalizadas
Los metadatos personalizados te permiten crear y usar tus propios pares clave-valor de metadatos en una VM o un proyecto concretos. Puede añadir nuevas claves de metadatos personalizados, actualizar los valores de las claves que ya tenga y eliminar las entradas de metadatos personalizados que no necesite. Definir metadatos personalizados es útil para transferir valores arbitrarios a las VMs de un proyecto. También es útil para crear secuencias de comandos de inicio y apagado.
Para saber cómo añadir, actualizar o quitar metadatos personalizados de tus máquinas virtuales, consulta Configurar metadatos personalizados.
Tipos de metadatos
Las entradas de metadatos de VM pueden proporcionar información específica de una VM o de un proyecto. Los metadatos se dividen en metadatos de proyecto, de zona y de instancia, en función del ámbito en el que los definas.
Metadatos del proyecto
Los metadatos de proyecto se definen en el ámbito del proyecto y proporcionan información que se aplica a todas las VMs de un proyecto. Cuando se definen estos metadatos, las entradas de metadatos se propagan a todas las VMs de ese proyecto.
Puede usar claves de metadatos predefinidas y personalizadas para definir los metadatos de un proyecto. Consulte más información sobre las claves de metadatos de proyecto predefinidas y sobre cómo establecer metadatos de proyecto personalizados.
Metadatos zonales
Los metadatos zonales se definen en un ámbito zonal de un proyecto y proporcionan información sobre las VMs de esa zona específica del proyecto. Cuando defines metadatos zonales, las entradas de metadatos se propagan a todas las VMs de esa zona configurada en ese proyecto. En comparación con los metadatos de proyectos, los metadatos zonales te ayudan a aislar los errores y proporcionan una mayor fiabilidad.
Compute Engine no proporciona ninguna clave predefinida para los metadatos zonales. Debes crear tus propias claves de metadatos personalizados para definir metadatos zonales. Más información sobre cómo definir metadatos zonales personalizados
Metadatos de instancias
Los metadatos de instancia proporcionan información sobre una instancia de VM específica. Los metadatos de instancia se definen por separado para cada instancia de VM.
Puede usar claves de metadatos predefinidas y personalizadas para definir los metadatos de la instancia. Consulte más información sobre las claves de metadatos de instancia predefinidas y cómo definir metadatos de instancia personalizados.
Cómo se organizan los metadatos
Compute Engine almacena y mantiene las claves y los valores de los metadatos de tus VMs y proyectos en listados de directorios. En función del tipo de metadatos, Compute Engine almacena las entradas de metadatos en uno de los siguientes directorios:
Tipo de metadatos | Directorio |
---|---|
Metadatos de proyectos y zonales |
|
Metadatos de instancias |
|
Cada directorio almacena entradas de metadatos en forma de pares clave-valor. Algunas entradas de metadatos también son directorios que contienen otras claves de metadatos. Las entradas de metadatos que funcionan como directorios se marcan con una barra inclinada (/
) al final del nombre de la clave de metadatos. Por ejemplo, /project/attributes/
es un directorio de project/
que contiene otras claves de metadatos. Para crear tu propia lista de directorios de metadatos, debes usar una barra inclinada al final (/
) en el nombre de la clave de metadatos al crear tu entrada de metadatos personalizada.
Las entradas de metadatos de proyectos y zonales se almacenan en el mismo directorio project/
. Si asignas valores diferentes a las mismas claves de metadatos personalizados para las VMs a nivel de proyecto y a nivel de zona, los valores de los metadatos de zona de esas claves tendrán prioridad sobre los valores de los metadatos de proyecto en las zonas correspondientes.
- Si añades un valor de metadatos zonales a una clave de metadatos que ya tiene un valor de metadatos del proyecto, Compute Engine sustituye el valor de metadatos del proyecto por el valor zonal en las VMs de la zona especificada y actualiza el directorio
/project
con el valor zonal. - Si añade un nuevo valor de metadatos de proyecto a una clave de metadatos que ya tiene un valor de metadatos zonales, no se producirá ningún cambio. Compute Engine conserva el valor de los metadatos zonales en el directorio
/project
de la zona específica. - Si no especifica 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, sus VMs seguirán teniendo los valores de metadatos del proyecto en esas zonas.
Por ejemplo, supongamos que define un par de metadatos de proyecto key-1=value-1
. Supongamos que también define un par de metadatos zonales key-1=zonal-value-1
solo para la zona us-central1-a
. Todas las VMs de la zona us-central1-a
de tu proyecto heredarán key-1=zonal-value1
como par de metadatos. El par de metadatos
sigue siendo key-1=value-1
para todas las VMs de otras zonas en las que no hayas
definido ningún metadato zonal para key-1
.
Siguientes pasos
- Consulta información sobre las claves de metadatos predefinidas que ofrece Google Cloud .
- Consulte cómo configurar entradas de metadatos personalizados.
- Consulte cómo configurar y consultar atributos de invitados.
- Después de definir los valores de las claves de metadatos, consulta cómo ver y consultar información de metadatos de una máquina virtual o un proyecto.
- Consulta cómo recibir notificaciones de migración en tiempo real del servidor de metadatos.