Configuración y consulta de atributos de invitados


Los atributos de invitado son un tipo específico de metadatos personalizados en los que sus aplicaciones pueden escribir mientras se ejecutan en su instancia de máquina virtual (VM). Cualquier aplicación o usuario en su instancia de VM puede leer y escribir datos en estos valores de metadatos de atributos de invitado.

Antes de comenzar

  • Para máquinas virtuales con Windows Server, utilice PowerShell 3.0 o posterior . Le recomendamos que utilice ctrl+v para pegar los bloques de código copiados.
  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

      Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Roles requeridos

Los permisos o roles necesarios dependen de si está completando tareas desde dentro o fuera de la VM.

Dentro de la máquina virtual

Si está configurando, consultando o eliminando los atributos del invitado desde la VM, solo necesita los roles y permisos para conectarse a la VM. Cualquier proceso que se ejecute en la instancia de VM puede escribir en los valores de los atributos del invitado, incluidos scripts y aplicaciones que no tienen privilegios de nivel sudo o administrador.

Para lecturas y escrituras desde una máquina virtual, el servidor de metadatos proporciona autenticación y autorización automáticas a nivel de instancia. Cada VM puede leer o escribir únicamente en su propio servidor de metadatos. Otras máquinas virtuales no pueden acceder al servidor de metadatos de otra máquina virtual.

Fuera de la máquina virtual

Se necesitan las siguientes funciones y permisos para habilitar los atributos de los invitados o ver los atributos de los invitados desde fuera de la VM mediante la CLI o REST de Google Cloud. No puede configurar ni eliminar atributos de invitado desde fuera de una VM.

Para asegurarse de que su cuenta de usuario o de servicio tenga los permisos necesarios para habilitar o ver los atributos de invitado, solicite a su administrador que le otorgue a su cuenta de usuario o de servicio la función de IAM de Administrador de instancia informática (v1) ( roles/compute.instanceAdmin.v1 ) en la máquina virtual o el proyecto. Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .

Esta función predefinida contiene los permisos necesarios para habilitar o ver los atributos de los invitados. Para ver los permisos exactos que se requieren, expanda la sección Permisos requeridos :

Permisos requeridos

Se requieren los siguientes permisos para habilitar o ver los atributos de los invitados:

  • Para habilitar los atributos de invitado: compute.instances.setMetadata en la máquina virtual o el proyecto
  • Para ver los atributos de los invitados: compute.instances.getGuestAttributes en la máquina virtual o el proyecto.

Su administrador también podría otorgarle a su cuenta de usuario o de servicio estos permisos con roles personalizados u otros roles predefinidos .

Cuándo usar atributos de invitado

Utilice atributos de invitado solo para casos de uso que requieran pequeñas cantidades de datos que no cambien con frecuencia. Los mejores casos de uso para atributos de invitados tienen las siguientes características:

  • La cantidad de consultas está limitada a un máximo de 10 consultas por minuto por instancia de VM.
  • Las consultas no superan una ráfaga de 3 consultas por segundo. Si se excede esta tasa máxima, Compute Engine podría eliminar arbitrariamente los atributos de invitado que están en proceso de escritura. Esta eliminación de datos es necesaria para garantizar que otros datos críticos del sistema se puedan escribir en el servidor.

Los atributos de invitado funcionan bien para situaciones en las que debe publicar datos de bajo volumen y con poca frecuencia. Por ejemplo, los atributos de invitado funcionan bien para los siguientes casos de uso:

  • Scripts de inicio que pueden indicar una inicialización exitosa estableciendo un valor de estado personalizado en los atributos del invitado.
  • Agentes de gestión de configuración que pueden publicar el nombre y la versión de un sistema operativo invitado en los atributos del invitado.
  • Agentes de gestión de inventario que pueden publicar una lista de paquetes instalados en la instancia de VM en atributos de invitado.
  • Software de orquestación de cargas de trabajo que puede indicar la finalización de una operación en el invitado al plano de control del software estableciendo un valor de estado personalizado en los atributos del invitado.

Los atributos de invitado no reemplazan la transmisión de eventos, Pub/Sub u otras formas de almacenamiento de datos y repositorios de configuración.

Atributos de los invitados y otros Google Cloud servicios

Los atributos de invitado son utilizados por otros Google Cloud servicios de la siguiente manera:

  • Seguridad SSH: si los atributos de invitado están habilitados y el inicio de sesión en el sistema operativo está deshabilitado, el entorno de invitado y la CLI de gcloud usan atributos de invitado para mejorar la seguridad de SSH mediante la API de Google para recuperar claves de host antes de que puedas conectarte a tu VM usando SSH.
  • Administrador de VM: el agente de configuración del sistema operativo publica datos del sistema operativo en atributos de invitado.

Para revisar las entradas de metadatos almacenadas por estos servicios, consulte Claves de metadatos de atributos de invitado predefinidos .

Habilite los atributos de invitado en su VM

De forma predeterminada, los atributos de invitado están deshabilitados. Para habilitar los atributos de invitado, establezca los valores de metadatos necesarios en sus máquinas virtuales individuales o en metadatos de todo el proyecto:

Consola

Establezca enable-guest-attributes en los metadatos de la instancia cuando cree una VM:

  1. En la consola de Google Cloud, vaya a la página Crear una instancia .

    Ir a Crear una instancia

  2. Especifique los detalles de la máquina virtual.

  3. Expanda la sección Opciones avanzadas y haga lo siguiente:

    1. Expanda la sección Gestión .
    2. En la sección Metadatos , haga clic en Agregar elemento y agregue las siguientes entradas de metadatos:

      • Clave : enable-guest-attributes
      • Valor : TRUE
  4. Para crear la VM, haga clic en Crear .

Establezca enable-guest-attributes en los metadatos de todo el proyecto para que se apliquen a todas las máquinas virtuales de su proyecto:

  1. En la consola de Google Cloud, vaya a la página Metadatos .

    Ir a la página de Metadatos

  2. Haga clic en Editar .

  3. Agregue una entrada de metadatos donde la clave sea enable-guest-attributes y el valor sea TRUE . Alternativamente, establezca el valor en FALSE para desactivar la función.

  4. Haga clic en Guardar para aplicar los cambios.

Establezca enable-guest-attributes en los metadatos de una VM existente:

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Vaya a la página de instancias de VM

  2. Haga clic en el nombre de la VM en la que desea establecer el valor de metadatos.
  3. En la parte superior de la página de detalles de la instancia, haga clic en Editar para editar la configuración de la instancia.
  4. En Metadatos personalizados , agregue una entrada de metadatos donde la clave sea enable-guest-attributes y el valor sea TRUE . Como alternativa, establezca el valor en FALSE para excluir la máquina virtual de la función.
  5. En la parte inferior de la página de detalles de la instancia, haga clic en Guardar para aplicar los cambios a la VM.

nube de gcloud

Establezca enable-guest-attributes en los metadatos de la instancia cuando cree una VM:

Utilice el comando gcloud compute instances create en la CLI de Google Cloud y establezca enable-guest-attributes=TRUE para habilitar los atributos de invitado. Reemplace VM_NAME con el nombre de su VM.

gcloud compute instances create VM_NAME \
    --metadata=enable-guest-attributes=TRUE

Establezca enable-guest-attributes en los metadatos de todo el proyecto para que se apliquen a todas las máquinas virtuales de su proyecto:

Utilice el comando project-info add-metadata en la CLI de Google Cloud y establezca enable-guest-attributes=TRUE para habilitar los atributos de invitado:

gcloud compute project-info add-metadata \
    --metadata=enable-guest-attributes=TRUE

Alternativamente, puede configurar enable-guest-attributes en FALSE para deshabilitar los atributos de invitado.

Establezca enable-guest-attributes en los metadatos de una VM existente:

Utilice el comando instances add-metadata en la CLI de Google Cloud y establezca enable-guest-attributes=TRUE para habilitar los atributos de invitado. Reemplace VM_NAME con el nombre de su VM.

gcloud compute instances add-metadata VM_NAME \
    --metadata=enable-guest-attributes=TRUE

Alternativamente, puede configurar enable-guest-attributes en FALSE para excluir su VM del uso de atributos de invitado.

Establecer atributos de invitado

Cualquier proceso que se ejecute en la instancia de VM puede escribir en los valores de los atributos del invitado, incluidos scripts y aplicaciones que no tienen privilegios de nivel sudo o administrador. Los usuarios o cuentas de servicio fuera de la VM no pueden escribir valores de metadatos de atributos de invitado.

Máquinas virtuales Linux

Por ejemplo, puede usar una solicitud curl desde su VM para escribir un valor en la ruta de metadatos guest-attributes :

curl -X PUT --data "VALUE" http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"

Reemplace lo siguiente:

  • NAMESPACE : una agrupación lógica para su KEY . Los atributos de invitado deben tener un espacio de nombres.
  • VALUE : el valor que desea escribir.
  • KEY : la ruta de los metadatos dentro de guest-attributes donde se almacena el valor.

Utilice únicamente letras, números, guiones bajos ( _ ) y guiones ( - ) para los campos NAMESPACE y KEY .

Máquinas virtuales de Windows

Por ejemplo, puede utilizar una solicitud Invoke-RestMethod desde su VM para escribir un valor en la ruta de metadatos guest-attributes :

PS C:\> 
$value = (Invoke-RestMethod `
         -Method PUT -Body "VALUE" `
         -Headers @{'Metadata-Flavor' = 'Google'} `
         -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY")
$value

Reemplace lo siguiente:

  • NAMESPACE : una agrupación lógica para su KEY . Los atributos de invitado deben tener un espacio de nombres.
  • VALUE : el valor que desea escribir.
  • KEY : la ruta de los metadatos dentro de guest-attributes donde se almacena el valor.

Utilice únicamente letras, números, guiones bajos ( _ ) y guiones ( - ) para los campos NAMESPACE y KEY .

Obtener atributos de invitado

Los usuarios o las cuentas de servicio pueden leer los atributos de los invitados desde fuera de una máquina virtual si tienen el rol requerido . Alternativamente, cualquier usuario o aplicación dentro de la VM puede leer los valores de metadatos para esa VM específica.

Cualquier proceso que se ejecute en la máquina virtual puede escribir en el valor de los atributos del invitado, que incluyen scripts y aplicaciones que no tienen privilegios de nivel sudo o administrador.

Consultar el servidor de metadatos

Utilice las siguientes instrucciones para consultar los atributos de invitado desde una máquina virtual.

  1. Conéctese a la máquina virtual.

  2. Consulta los atributos del huésped.

    Máquinas virtuales Linux

    Por ejemplo, puede utilizar una solicitud curl desde su VM para leer un valor de la ruta de metadatos guest-attributes :

    curl http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"

    Reemplace lo siguiente:

    • NAMESPACE : el espacio de nombres para la clave guest-attributes que desea consultar.
    • KEY : la ruta dentro de guest-attributes desde la cual desea leer el valor de los metadatos.

    Alternativamente, puede devolver todos los valores de los atributos del huésped en una sola solicitud. Reemplace NAMESPACE con el espacio de nombres de la clave guest-attributes que desea consultar.

    curl http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/ -H "Metadata-Flavor: Google"

    Máquinas virtuales de Windows

    Por ejemplo, puede usar una solicitud Invoke-RestMethod desde su VM para leer un valor de la ruta de metadatos guest-attributes :

    PS C:\> 
    $value = (Invoke-RestMethod `
            -Headers @{'Metadata-Flavor' = 'Google'} `
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY")
    $value
    

    Reemplace lo siguiente:

    • NAMESPACE : el espacio de nombres para la clave guest-attributes que desea consultar.
    • KEY : la ruta dentro de guest-attributes desde la cual desea leer el valor de los metadatos.

    Alternativamente, puede devolver todos los valores de los atributos del huésped en una sola solicitud. Reemplace NAMESPACE con el espacio de nombres de la clave guest-attributes que desea consultar.

    PS C:\> 
    $value = (Invoke-RestMethod `
            -Headers @{'Metadata-Flavor' = 'Google'} `
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/")
    $value
    

Utilice Google Cloud CLI o REST

Utilice las siguientes instrucciones para ver los atributos de invitado desde fuera de una VM.

nube de gcloud

Utilice la CLI de Google Cloud para leer los valores de metadatos de atributos de invitado para una máquina virtual. Por ejemplo, puede recuperar todos los valores de la VM de la siguiente manera:

gcloud compute instances get-guest-attributes VM_NAME \
    --zone=ZONE

Para recuperar todos los valores bajo un espacio de nombres específico, incluya el indicador --query-path y el espacio de nombres que definió:

gcloud compute instances get-guest-attributes VM_NAME \
    --query-path=NAMESPACE \
    --zone=ZONE

Para recuperar todos los valores bajo un espacio de nombres específico, incluya el indicador --query-path , el espacio de nombres y la clave para el valor que definió:

gcloud compute instances get-guest-attributes VM_NAME \
    --query-path=NAMESPACE/KEY \
    --zone=ZONE

Reemplace lo siguiente:

  • VM_NAME : el nombre de la VM desde la que desea leer el valor de metadatos del atributo de invitado
  • NAMESPACE : el espacio de nombres para la clave guest-attributes que desea consultar
  • KEY : la ruta dentro de los metadatos guest-attributes donde se almacena el valor
  • ZONE : la zona donde se encuentra la VM

DESCANSAR

Utilice el método compute.instances.getguestattributes :

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE/KEY

Reemplace lo siguiente:

  • PROJECT_ID : ID de tu proyecto
  • ZONE : la zona donde se encuentra su VM
  • VM_NAME : el nombre de la VM desde la que desea leer el valor de metadatos del atributo de invitado
  • NAMESPACE : el espacio de nombres para la clave guest-attributes que desea consultar
  • KEY : la ruta dentro de los metadatos guest-attributes donde se almacena el valor

Para recuperar todas las claves de un NAMESPACE , omita la KEY :

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE

Para recuperar todas las claves en cada espacio de nombres en la VM, omita NAMESPACE y queryPath por completo:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes

Alternativamente, si tienes un token OAuth, puedes usar curl :

curl -H "Authorization: Bearer OAUTH_TOKEN" https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE/KEY

Reemplace lo siguiente:

  • OAUTH_TOKEN : tu token de OAuth
  • PROJECT_ID : ID de tu proyecto
  • ZONE : la zona donde se encuentra su VM
  • VM_NAME : el nombre de la VM desde la que desea leer el valor de metadatos del atributo de invitado
  • NAMESPACE : el espacio de nombres para la clave guest-attributes que desea consultar
  • KEY : la ruta dentro de los metadatos guest-attributes donde se almacena el valor

Eliminar atributos de invitado

Utilice las siguientes instrucciones para eliminar atributos de invitado desde una máquina virtual.

  1. Conéctese a la máquina virtual.

  2. Eliminar los atributos del invitado.

    Máquinas virtuales Linux

    También puede eliminar atributos de invitados. Por ejemplo, use curl para eliminar una clave específica:

    curl -X DELETE http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"

    Reemplace lo siguiente:

    • NAMESPACE : el espacio de nombres para la clave guest-attributes que desea eliminar
    • KEY : la ruta dentro de guest-attributes donde se almacena el valor

    Máquinas virtuales de Windows

    También puede eliminar atributos de invitados. Por ejemplo, utilice Invoke-RestMethod para eliminar una clave específica:

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Method DELETE `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY")
    $value
    

    Reemplace lo siguiente:

    • NAMESPACE : el espacio de nombres para la clave guest-attributes que desea eliminar
    • KEY : la ruta dentro de guest-attributes donde se almacena el valor

Deshabilitar los atributos de invitado en su organización o carpeta

Si no desea que ninguna de las máquinas virtuales de su organización o carpeta habilite los atributos de invitado, puede anular y deshabilitar la función por completo.

Establece la restricción constraints/compute.disableGuestAttributesAccess en tu organización o carpeta, reemplazando PROJECT_ID con el nombre de tu proyecto:

gcloud resource-manager org-policies enable-enforce \
    constraints/compute.disableGuestAttributesAccess \
    --project=PROJECT_ID

Lea Uso de restricciones para obtener más información sobre cómo establecer y administrar restricciones en sus organizaciones.

¿Qué sigue?