Autoriza el agente de Monitoring

En esta guía, se explica cómo asegurarte de que el agente de Monitoring, que instalas en tu instancia de máquina virtual (VM), esté autorizado para enviar datos de telemetría a Monitoring.

Descripción general de la autorización

La autorización hace referencia al proceso de determinar los permisos que un cliente autenticado tiene para los recursos. Google Cloud autoriza al agente de Monitoring en una instancia de VM de Compute Engine mediante el uso de credenciales predeterminadas de la aplicación (ADC).

El agente de Monitoring admite ADC que autentican una cuenta de servicio conectada de VM o una clave de cuenta de servicio.

  • Una cuenta de servicio conectada hace referencia a una cuenta de servicio específica de un recurso determinado, como una VM. La cuenta de servicio tiene sus propias credenciales únicas. ADC usa el servidor de metadatos de la VM para obtener credenciales para un servicio.
  • Una clave de cuenta de servicio hace referencia a una clave privada que se usa para autorizar el par de claves en una cuenta de servicio en un proyecto, lo que te permite crear un token de acceso. Usa el token para proporcionar una identidad para poder interactuar con las APIs de Google Cloud en nombre de la cuenta de servicio.

Te recomendamos que configures las ADC para autenticar una cuenta de servicio conectada siempre que sea posible, ya que la clave privada requiere almacenamiento local y ese almacenamiento se puede comprometer. Si deseas obtener más información sobre las claves de cuentas de servicio, consulta Prácticas recomendadas para administrar claves de cuentas de servicio.

Para las instancias de VM de AWS EC2, el agente de Monitoring admite la autenticación solo con el método de clave de cuenta de servicio.

Antes de comenzar

Lee esta página si te encuentras en alguna de las siguientes situaciones:

  • Si ejecutas instancias de Compute Engine muy antiguas o si modificaste los permisos de acceso o la configuración de la cuenta de servicio de tus instancias de Compute Engine, debes completar los pasos de esta guía antes de instalar el agente. Es posible que estas VMs no tengan el archivo de claves de la cuenta de servicio requerido. Para obtener información sobre cómo verificar los permisos de acceso y la configuración de la cuenta de servicio de tus instancias, consulta Verifica las credenciales de Compute Engine.

    En las instancias de VM de Compute Engine recién creadas, los niveles de acceso y la configuración de la cuenta de servicio son suficientes para ejecutar los agentes.

  • Si ejecutas instancias de VM de Amazon EC2 (AWS VC2), haz lo siguiente antes de instalar el agente:

    1. Identifica el proyecto de hosting de AWS para la cuenta de AWS con tus instancias de EC2. El proyecto de hosting es un proyecto de Google Cloud cuyo único propósito es almacenar las métricas y los registros de las instancias de EC2 en una cuenta de AWS.

      Si tienes un proyecto de conector de AWS para una cuenta de AWS, el proyecto de conector es el proyecto de hosting de AWS.

      Si no tienes un proyecto de conector de AWS para la cuenta, busca tus proyectos de Google Cloud existentes a fin de determinar si ya creaste un proyecto de hosting de AWS para la cuenta. Si se encuentra un proyecto de hosting, úsalo.

      Si no puedes encontrar un proyecto de hosting de AWS para la cuenta, te recomendamos que crees un proyecto de Google Cloud que sirva como proyecto de hosting. Si tienes instancias de EC2 en varias cuentas de AWS, crea un proyecto de Google Cloud para cada cuenta. También te recomendamos que uses una convención de nombres para estos proyectos o que uses etiquetas de proyectos, de modo que puedas identificar tus proyectos de hosting. No recomendamos que vuelvas a usar un proyecto de Google Cloud existente, en especial si contiene recursos de Google Cloud.

    2. Completa los pasos para autorizar al agente mediante un archivo de claves de la cuenta de servicio.

Para verificar tus permisos de acceso, haz lo siguiente:

  1. Ejecuta el siguiente comando en tu instancia de Compute Engine para consultar los permisos de acceso:
    curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
  2. En el resultado del comando, si el permiso de acceso https://www.googleapis.com/auth/cloud-platform aparece en la lista, significa que tienes suficiente autorización.

    Si https://www.googleapis.com/auth/cloud-platform no aparece en la lista, necesitas dos permisos de acceso, uno de cada uno de los siguientes pares “registro” y “supervisión”:

    • https://www.googleapis.com/auth/logging.write o
      https://www.googleapis.com/auth/logging.admin
    • https://www.googleapis.com/auth/monitoring.write o
      https://www.googleapis.com/auth/monitoring.admin

Para modificar tus permisos de acceso, haz lo siguiente:

  1. En el panel de navegación de la consola de Google Cloud, elige Compute Engine y, luego, Instancias de VM.

    Ir a Instancias de VM

  2. Si es necesario, haz clic en la lista desplegable de proyectos de Google Cloud y selecciona el nombre de tu proyecto.
  3. Selecciona Instancias de VM en el menú de navegación, selecciona la pestaña Instancias y, luego, el nombre de tu VM.
  4. Haz clic en  Detener para apagar la VM.
  5. Después de que la VM se detenga, haz clic en  Editar.
  6. Ubica los permisos de acceso en la sección Identidad y acceso a la API de la página y, luego, selecciona Configurar acceso para cada API.
  7. Para las entradas API de Stackdriver Logging y API de Stackdriver Monitoring, selecciona Solo escritura.
  8. Haz clic en Guardar y, luego, haz clic en  Iniciar/Reanudar para reiniciar la VM.

Usa una cuenta de servicio

La autenticación hace referencia al proceso de determinar la identidad de un cliente. Para la autenticación, te recomendamos usar una cuenta de servicio, un tipo especial de cuenta que suele usar una aplicación o una carga de trabajo, en lugar de una persona. Para obtener más información, consulta Descripción general de cuentas de servicio.

Puedes usar cuentas de servicio para la autenticación sin importar dónde se ejecute tu código: en Compute Engine, App Engine o de forma local. Para obtener más información, consulta Autenticación en Google.

En esta sección, se describe cómo crear una cuenta de servicio nueva y otorgarle los roles necesarios, y cómo actualizar una cuenta de servicio existente si no tiene los roles necesarios.

Crea una cuenta de servicio

Para crear una cuenta de servicio, completa los procedimientos que se indican en Crea una cuenta de servicio con la siguiente información:

  • Selecciona el proyecto de Google Cloud en el que deseas crear la cuenta de servicio:

    • Para las instancias de Compute Engine, elige el proyecto en el que creaste la instancia.

    • Para las instancias de Amazon EC2, selecciona el proyecto host de AWS.

  • En el menú desplegable Función, selecciona las siguientes funciones:

    • Monitoring > Escritor de métricas de supervisión. Esto autoriza al agente de supervisión.

    Si también deseas instalar el agente de Logging, agrega el siguiente rol para ese agente:

    • Logging > Escritor de registros. Esto autoriza al agente de Logging.
  • Si planeas autenticarte con una clave de cuenta de servicio, selecciona JSON como tipo de clave y haz clic en Crear.

    Cuando haces clic en Crear, se descarga un archivo que contiene una clave de cuenta de servicio a tu sistema local. Para obtener más información, consulta Crea y borra claves de cuentas de servicio.

A continuación, establece la configuración y la cuenta de servicio según si lo autorizas a través de cuentas de servicio conectadas o a través de claves privadas de cuenta de servicio.

Verifica y modifica roles de una cuenta de servicio existente

Puedes usar la consola de Google Cloud para determinar qué roles tiene una cuenta de servicio existente y agregar las funciones necesarias que faltan:

  1. En el panel de navegación de la consola de Google Cloud, elige IAM:

    Ir a IAM

  2. Si es necesario, haz clic en la lista desplegable de proyectos de Google Cloud y selecciona el nombre de tu proyecto.

  3. Si no ves una lista de las principales de IAM (usuarios y cuentas de servicio), selecciona la pestaña Permisos.

  4. En la lista Ver por principales, busca la entrada de la cuenta de servicio. En la columna Rol, se enumeran los roles otorgados a la cuenta de servicio.

  5. Si tu cuenta de servicio no tiene las funciones necesarias para el agente de Monitoring , sigue estos pasos a fin de agregar las funciones descritas en Crea una cuenta de servicio:

    1. Haz clic en  Editar en la entrada de la cuenta de servicio.
    2. Haz clic en Agregar otro rol para agregar los roles faltantes.
    3. Haz clic en Guardar.

Autoriza con una cuenta de servicio conectada

Para autorizar el agente de Monitoring instalado en una instancia de VM de Compute Engine que tiene una cuenta de servicio conectada, haz lo siguiente:

  1. Asegúrate de haber verificado los permisos de acceso de tu VM.

  2. Otorga a tu cuenta de servicio los roles de IAM con privilegios mínimos posibles. Para obtener los roles necesarios, consulta la sección Crea una cuenta de servicio de esta página.

  3. Conecta la cuenta de servicio a la VM en la que se ejecuta el agente.

  4. Si aún no lo instalaste, hazlo. Para obtener información sobre cómo instalar el agente, consulta Instala el agente.

Autoriza con una clave de cuenta de servicio

Para autorizar el agente de Monitoring instalado en una instancia de VM mediante claves privadas de la cuenta de servicio, haz lo siguiente:

  1. Transfiere el archivo de claves de la cuenta de servicio de tu sistema local a tu instancia de VM:

    1. Crea una variable de entorno para que apunte al archivo de claves de la cuenta de servicio en tu sistema local. En el siguiente ejemplo, se crea una variable llamada CREDS:

      CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json
      
    2. Completa los pasos que se muestran en la siguiente tabla:

      Compute Engine

      1. En el panel de navegación de la consola de Google Cloud, selecciona Compute Engine y, luego, Instancias de VM.

        Ir a Instancias de VM

        Identifica INSTANCE_NAME y INSTANCE_ZONE para la VM.

      2. En tu sistema local, ejecuta un comando de Google Cloud CLI para copiar el archivo de claves del sistema local a la instancia de VM:

        REMOTE_USER="$USER"
        INSTANCE="INSTANCE_NAME"
        ZONE="INSTANCE_ZONE"
        gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"
        
      3. En tu instancia de Compute Engine, transfiere el archivo de claves de la cuenta de servicio de la ubicación temporal a una permanente y, para Linux, asegúrate de que el archivo de claves de la cuenta de servicio sea legible solo para root.

        Estas son las ubicaciones en las que el agente espera tu archivo de claves:

        • VMs de Linux: /etc/google/auth/application_default_credentials.json
        • VMs de Linux: Cualquier ubicación que almacenes en la variable de entorno GOOGLE_APPLICATION_CREDENTIALS, que debe ser visible para el proceso del agente. Para obtener información sobre la configuración, consulta Configura GOOGLE_APPLICATION_CREDENTIALS.

        Por ejemplo, en Linux puedes ejecutar la siguiente secuencia de comandos, que traslada el archivo de claves de la cuenta de servicio a la ubicación predeterminada y, luego, configura los permisos adecuados:

        CREDENTIALS_FILE_LOCATION="/etc/google/auth/application_default_credentials.json"
        sudo mkdir -p /etc/google/auth
        sudo mv "$HOME/temp.json" "$CREDENTIALS_FILE_LOCATION"
        sudo chown root:root "$CREDENTIALS_FILE_LOCATION"
        sudo chmod 0400 "$CREDENTIALS_FILE_LOCATION"
        

      Amazon EC2

      1. Para tu VM, identifica YOUR-INSTANCE'S-ID y YOUR-INSTANCE'S-AWS-REGION.

      2. En tu sistema local, usa scp para copiar el archivo de claves de la cuenta de servicio de tu sistema local a tu instancia de VM:

        KEY="YOUR-SSH-KEY-PAIR-FILE"
        INSTANCE="ec2-YOUR-INSTANCE'S-ID.YOUR-INSTANCE'S-AWS-REGION.compute.amazonaws.com"
        # The remote user depends on the installed OS: ec2-user, ubuntu, root, etc.
        REMOTE_USER="EC2-USER"
        scp -i "$KEY" "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json"
        

        El valor de la variable de entorno INSTANCE supone que tu instancia de EC2 no está en la región us-east-1. Para aprender a definir la variable INSTANCE cuando tu instancia está en la región us-east-1, consulta la convención de nombres definida por Amazon.

      3. En tu instancia de EC2, mueve el archivo de claves de la cuenta de servicio de la ubicación temporal a una de las siguientes ubicaciones y, para Linux, asegúrate de que el archivo de claves de la cuenta de servicio sea legible solo para root.

        Estas son las ubicaciones en las que el agente espera tu archivo de claves:

        • VMs de Linux: /etc/google/auth/application_default_credentials.json

        • VMs de Windows: C:\ProgramData\Google\Auth\application_default_credentials.json

        • VMs de Linux y Windows: cualquier ubicación que almacenes en la variable de entorno GOOGLE_APPLICATION_CREDENTIALS, que debe ser visible para el proceso del agente. Para obtener información sobre la configuración, consulta Configura GOOGLE_APPLICATION_CREDENTIALS.

        Por ejemplo, en Linux puedes ejecutar la siguiente secuencia de comandos, que traslada el archivo de claves de la cuenta de servicio a la ubicación predeterminada y, luego, configura los permisos adecuados:

        CREDENTIALS_FILE_LOCATION="/etc/google/auth/application_default_credentials.json"
        sudo mkdir -p /etc/google/auth
        sudo mv "$HOME/temp.json" "$CREDENTIALS_FILE_LOCATION"
        sudo chown root:root "$CREDENTIALS_FILE_LOCATION"
        sudo chmod 0400 "$CREDENTIALS_FILE_LOCATION"
        

  2. Tu instancia de VM ahora tiene el archivo de claves de la cuenta de servicio que necesita el agente. A continuación, instala o reinicia el agente:

Configura GOOGLE_APPLICATION_CREDENTIALS

En esta sección, se muestra cómo configurar la variable de entorno GOOGLE_APPLICATION_CREDENTIALS para que sea visible para el proceso del agente.

Linux

  1. Edita el siguiente archivo de configuración o créalo si no existe:

    /etc/default/stackdriver-agent
    
  2. Agrega lo siguiente al archivo de configuración:

    GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE
    
  3. Ejecuta el siguiente comando en tu instancia de VM para reiniciar el agente:

    sudo service stackdriver-agent restart
    

Windows

  1. En PowerShell, ejecuta los siguientes comandos como administrador para configurar la variable de entorno del sistema GOOGLE_APPLICATION_CREDENTIALS para que la use el Agente de operaciones.

    [Environment]::SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "PATH_TO_CREDENTIAL_FILE", "Machine")
    
  2. Ejecuta el siguiente comando en tu instancia de VM para reiniciar el agente:

    Restart-Service -Name StackdriverMonitoring