Cada instancia de máquina virtual (VM) almacena sus metadatos en un servidor de metadatos. Su VM tiene acceso automáticamente a la API del servidor de metadatos sin ninguna autorización adicional. Compute Engine mantiene las claves y los valores de metadatos para tus VM y proyectos en directorios. Cada directorio almacena entradas de metadatos en forma de pares clave-valor. Algunos directorios contienen subdirectorios.
Este documento proporciona una descripción general sobre los metadatos de VM y explica los tipos y propiedades de los metadatos de VM.
Usos de metadatos de VM
Las siguientes secciones describen algunos escenarios en los que puede utilizar entradas de metadatos para administrar sus máquinas virtuales.
Scripts de inicio y apagado
El servidor de metadatos es particularmente útil cuando se usa en combinación con scripts de inicio y apagado porque puede usar el servidor de metadatos para obtener información única mediante programación sobre una máquina virtual, sin autorización adicional.
Por ejemplo, puede escribir un script de inicio que obtenga el par clave-valor de metadatos para la IP externa de una VM y usar esa IP en su script para configurar una base de datos. Debido a que las claves de metadatos predefinidas de Compute Engine son las mismas en todas las VM, puedes reutilizar tu script sin tener que actualizarlo para cada VM. Esto le ayuda a crear código menos frágil para sus aplicaciones.
- Para obtener más información sobre los scripts de inicio, consulte la descripción general de los scripts de inicio .
- Para obtener más información sobre los scripts de apagado, consulte Ejecución de scripts de apagado .
Mantenimiento del anfitrión
El servidor de metadatos proporciona información sobre la opción de programación de una VM en el directorio scheduling/
metadatos mediante la clave maintenance-event
. Puede utilizar estos valores de metadatos para notificarle cuando esté a punto de ocurrir un evento de mantenimiento para que pueda preparar su entorno para el evento. Para obtener más información, consulte Recibir avisos de migración en vivo .
Atributos de invitado
Los atributos de invitado son un tipo específico de metadatos personalizados en los que sus aplicaciones pueden escribir mientras se ejecutan en sus máquinas virtuales. Utilice 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 los invitados, consulte Establecer y consultar atributos de los invitados .
Atributos de socio
Los atributos de socio son un tipo específico de metadatos de instancia. Google CloudLos servicios pueden utilizar atributos de socios para crear un espacio de nombres dentro del cual pueden definir entradas de metadatos de instancia. Puede configurar, 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 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 realiza una solicitud para obtener información del servidor de metadatos, su 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 en el servidor de metadatos. Esto incluye cualquier valor de metadatos personalizados, certificados de cliente y claves privadas que escriba en el servidor. Google recomienda tener cuidado al escribir valores confidenciales en el servidor de metadatos o al ejecutar procesos de terceros. Debe aislar cualquier proceso que no debería poder acceder al servidor de metadatos.
Puntos finales del servidor de metadatos
Se puede acceder al servidor de metadatos desde los siguientes puntos finales:
- Un punto final http:
http://metadata.google.internal/computeMetadata/v1
. Se puede acceder a esto desde todas las máquinas virtuales, incluidas las máquinas virtuales protegidas. - Un punto final https:
https://metadata.google.internal/computeMetadata/v1
. Solo se puede acceder a esto desde máquinas virtuales blindadas.
Punto final del servidor de metadatos HTTPS
El punto final 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 punto final solo está disponible para máquinas virtuales blindadas.
Beneficios de utilizar el punto final del servidor de metadatos HTTPS
El uso del punto final https para consultar el servidor de metadatos proporciona los siguientes beneficios:
Mejora la seguridad : ayuda a evitar el acceso no autorizado a sus metadatos confidenciales. Impide que un atacante pueda realizar cualquiera de las siguientes acciones:
- Falsificar o hacerse pasar por el servidor de metadatos para obtener acceso a una máquina virtual
- Ver o alterar metadatos confidenciales antes de que lleguen a la máquina virtual
Reduce costos : le ayuda a evitar los costos asociados con las violaciones de seguridad
Cómo funciona el proceso
Para las máquinas virtuales protegidas que tienen instalado el entorno invitado, se llevan a cabo los siguientes procesos en su máquina virtual:
Cuando tu VM arranca, Compute Engine completa lo siguiente:
Compute Engine crea tres certificados de la siguiente manera:
- Un certificado raíz autofirmado : un certificado único generado para la VM.
- Un certificado de identidad del 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 punto final del certificado del cliente desde el entorno invitado.
Para conocer las ubicaciones de almacenamiento de la identidad del cliente y los certificados raíz, consulte ¿Dónde se almacenan los certificados ?
Compute Engine transfiere la parte pública del certificado raíz al entorno invitado de la VM mediante una variable UEFI generada por Google. Luego, este certificado raíz se almacena en la VM.
Periódicamente, el entorno invitado solicita un certificado de identidad del cliente. Cuando esto sucede, el agente invitado descarga este certificado del servidor de metadatos y lo valida utilizando el certificado raíz de esa VM.
Cuando realiza una consulta al punto final del servidor de metadatos HTTPS , especifica los certificados de identidad del cliente que luego utilizan el servidor de metadatos y la máquina virtual para verificar que esta consulta esté autorizada.
¿Dónde se almacenan los certificados?
Las siguientes secciones enumeran 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 para máquinas virtuales 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 para máquinas virtuales Debian y Ubuntu se almacenan en las siguientes ubicaciones:
/run/google-mds-mtls/root.crt
/etc/ssl/certs/ca-certificates.crt
sombrero
Los certificados raíz para las máquinas virtuales de Fedora se almacenan en las siguientes ubicaciones:
/run/google-mds-mtls/root.crt
/etc/pki/tls/certs/ca-bundle.crt
LES
Los certificados raíz para las máquinas virtuales SUSE Linux Enterprise Server (SLES) se almacenan en las siguientes ubicaciones:
/run/google-mds-mtls/root.crt
/etc/ssl/ca-bundle.pem
ventanas
Los certificados raíz para máquinas virtuales 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 máquina virtual pueden acceder a los certificados de identidad del cliente. Esto es necesario para que todos los procesos tengan acceso al servidor de metadatos mediante el punto final https, similar al punto final http. Para obtener más información, consulte Consideraciones de seguridad de metadatos .
linux
Los certificados de identidad de cliente para máquinas virtuales Linux se almacenan en la siguiente ubicación:
/run/google-mds-mtls/client.key
ventanas
Los certificados de identidad de cliente para máquinas virtuales Windows se almacenan en las siguientes ubicaciones:
C:\ProgramData\Google\ComputeEngine\mds-mtls-client.key
Cert:\LocalMachine\My
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. Sus 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 establece automáticamente los valores de metadatos para algunas de estas claves en esa VM, por ejemplo, el ID de la instancia de la VM o el ID del proyecto. Para las claves predefinidas en las que Compute Engine no establece un valor automáticamente, puedes elegir entre un conjunto de valores que están disponibles según la configuración del sistema.Por ejemplo, para habilitar el inicio de sesión en el sistema operativo para una máquina virtual, puede establecer el valor de la clave predefinida enable-oslogin
en TRUE
para esa máquina virtual. Para deshabilitar el inicio de sesión del sistema operativo para esa VM, puede actualizar 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 una lista de estas claves, consulte Claves de metadatos predefinidas .
Claves de metadatos personalizados
Los metadatos personalizados le permiten crear y utilizar sus propios pares clave-valor de metadatos en una máquina virtual individual o en un proyecto. Puede agregar nuevas claves de metadatos personalizadas, actualizar los valores de sus claves existentes y eliminar cualquier entrada de metadatos personalizados cuando no las necesite. Configurar metadatos personalizados es útil para pasar valores arbitrarios a las máquinas virtuales de un proyecto. También es útil para crear scripts de inicio y apagado .
Para saber cómo puede agregar, actualizar o eliminar metadatos personalizados para sus máquinas virtuales, consulte Configurar metadatos personalizados .
Tipos de metadatos
Las entradas de metadatos de VM pueden proporcionar información específica de una VM individual o de un proyecto. Sus metadatos se dividen en metadatos de proyecto, zonales y de instancia, según el alcance en el que configuró 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 máquinas virtuales de un proyecto. Cuando configura estos metadatos, las entradas de metadatos se propagan a todas las máquinas virtuales de ese proyecto.
Puede utilizar claves de metadatos predefinidas y personalizadas para configurar los metadatos del proyecto. Obtenga más información sobre las claves de metadatos de proyecto predefinidas y cómo configurar metadatos de proyecto personalizados .
Metadatos zonales
Los metadatos zonales se definen en un ámbito zonal dentro de un proyecto y proporcionan información sobre las máquinas virtuales en esa zona específica de ese proyecto. Cuando configura metadatos zonales, las entradas de metadatos se propagan a todas las máquinas virtuales en esa zona configurada en ese proyecto. En comparación con los metadatos del proyecto, los metadatos zonales le ayudan a aislar errores y proporcionan una mayor confiabilidad.
Compute Engine no proporciona claves predefinidas para metadatos zonales. Debe crear sus propias claves de metadatos personalizadas para configurar metadatos zonales. Obtenga más información sobre cómo configurar metadatos zonales personalizados .
Metadatos de instancia
Los metadatos de la instancia proporcionan información sobre una instancia de VM específica. Los metadatos de la instancia se configuran por separado para cada instancia de VM individual.
Puede utilizar claves de metadatos predefinidas y personalizadas para configurar los metadatos de la instancia. Obtenga 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 valores de metadatos para tus VM y proyectos en listados de directorios. Según el tipo de metadatos, Compute Engine almacena las entradas de metadatos en uno de los siguientes directorios:
Tipo de metadatos | Directorio |
---|---|
Metadatos de todo el proyecto y de la zona del proyecto |
|
Metadatos de instancia |
|
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 están marcadas con una barra diagonal ( /
) en el nombre de la clave de metadatos. Por ejemplo, /project/attributes/
es un directorio bajo el directorio project/
que contiene otras claves de metadatos. Para crear su propia lista de directorio de metadatos, debe utilizar una barra diagonal ( /
) en el nombre de la clave de metadatos cuando cree su entrada de metadatos personalizada.
Las entradas de metadatos zonales y de proyecto se almacenan en el mismo project/
directorio. Si establece valores diferentes para las mismas claves de metadatos personalizados para máquinas virtuales 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 VM en esta zona especificada y actualiza el directorio
/project
con el valor zonal. - Si agrega un nuevo valor de metadatos para todo el proyecto para una clave de metadatos que ya tiene un valor de metadatos zonal, nada cambia. Compute Engine conserva el valor de metadatos zonales en el directorio
/project
de la zona específica. - Si no especifica un valor de metadatos zonal para una clave de metadatos personalizada en una zona específica, pero la clave tiene un valor de metadatos del proyecto, sus máquinas virtuales seguirán teniendo los valores de metadatos del proyecto en esas zonas.
Por ejemplo, supongamos que define un par de metadatos de key-1=value-1
para todo el proyecto. Supongamos que también define un par de metadatos zonales de key-1=zonal-value-1
solo para la zona us-central1-a
. Todas las máquinas virtuales en la zona us-central1-a
de su proyecto heredan key-1=zonal-value1
como par de metadatos. El par de metadatos sigue siendo key-1=value-1
para todas las máquinas virtuales en otras zonas donde no haya configurado ningún metadato zonal para key-1
.
¿Qué sigue?
- Obtenga más información sobre las claves de metadatos predefinidas que Google Cloud ofertas.
- Aprenda a configurar entradas de metadatos personalizados .
- Aprenda a configurar y consultar atributos de invitados .
- Después de configurar valores para sus claves de metadatos, aprenda cómo ver y consultar información de metadatos de VM para una VM o un proyecto.
- Aprenda cómo recibir avisos de migración en vivo desde el servidor de metadatos.