Autorizar el agente de operaciones

En esta guía, se explica cómo asegurarte de que el Agente de operaciones, 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 operaciones en una instancia de VM de Compute Engine a través de las credenciales predeterminadas de la aplicación (ADC).

El agente de operaciones es compatible con ADC que autentican la cuenta de servicio conectada de una 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.
  • El agente de operaciones no admite la autorización mediante gcloud auth. Para evitar comportamientos no deseados, debes revoke las credenciales creadas con gcloud auth.

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.

Verifica tus permisos de acceso

A las instancias de VM de Compute Engine se les asignan permisos de acceso cuando las creas. Las VMs de Compute Engine nuevas tienen los permisos de acceso adecuados para el agente de operaciones, pero las VMs anteriores o aquellas en las que se modificaron pueden no hacerlo. Para obtener más información sobre los permisos de acceso y las cuentas de servicio, consulta Autorización en la documentación de Compute Engine.

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.

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

    • Monitoring > Escritor de métricas de Monitoring.

    • Logging > Escritor de registros.

  • 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 los roles necesarios para el agente de operaciones, sigue estos pasos a fin de agregar los roles descritos 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 operaciones 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 operaciones instalado en una instancia de VM con claves privadas de cuentas 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.

        También debes configurar la variable de entorno GOOGLE_APPLICATION_CREDENTIALS para que apunte a la ubicación del archivo de claves de la cuenta de servicio, y la variable 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/systemd/system.conf
    
  2. Agrega lo siguiente al archivo de configuración:

    DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
    
  3. Vuelve a cargar las variables de entorno:

    sudo systemctl daemon-reload
    
  4. Ejecuta el siguiente comando en tu instancia de VM para reiniciar el agente:

    sudo systemctl restart google-cloud-ops-agent
    

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 google-cloud-ops-agent -Force