En esta guía, se explica cómo asegurarte de que el agente de Monitoring, que instales en tu instancia de máquina virtual (VM), esté autorizado para enviar datos de telemetría a Google Cloud Observability.
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 supervisión en una instancia de VM de Compute Engine a través de las credenciales predeterminadas de la aplicación (ADC).
El agente de Monitoring es compatible con ADC que autentica 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.
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 solo admite la autenticación mediante el método de claves de la 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:
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 no puedes encontrar un proyecto de hosting de AWS para la cuenta, te recomendamos que crees un proyecto de Google Cloud que funcione 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 proyecto a fin de que puedas identificar tus proyectos host. No te recomendamos que vuelvas a usar un proyecto existente de Google Cloud, en especial si contiene recursos de Google Cloud.
Completa los pasos para autorizar al agente a través de un archivo de claves de cuenta de servicio.
Para verificar tus permisos de acceso, haz lo siguiente:
- 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
En el resultado del comando, si el permiso de acceso
https://www.googleapis.com/auth/cloud-platform
aparece en la lista, entonces 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 de “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:
-
En la consola de Google Cloud, ve a la página Instancias de VM.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Compute Engine.
- Si es necesario, haz clic en la lista desplegable de proyectos de Google Cloud y selecciona el nombre de tu proyecto.
- Selecciona Instancias de VM en el menú de navegación, selecciona la pestaña Instancias y, luego, el nombre de tu VM.
- Haz clic en stop Detener para apagar la VM.
- Después de que la VM se detenga, haz clic en edit Editar.
- 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.
- Para las entradas API de Stackdriver Logging y API de Stackdriver Monitoring, selecciona Solo escritura.
- Haz clic en Guardar y, luego, haz clic en play_arrow 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, elige el proyecto de hosting 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:
-
En la consola de Google Cloud, ve a la página IAM:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es IAM y administración.
Si es necesario, haz clic en la lista desplegable de proyectos de Google Cloud y selecciona el nombre de tu proyecto.
Si no ves una lista de principales de IAM (usuarios y cuentas de servicio), selecciona la pestaña Permisos.
En la lista Ver por principales, busca la entrada de la cuenta de servicio. En la columna Rol, se enumeran las funciones otorgadas a la cuenta de servicio.
Si tu cuenta de servicio no tiene las funciones necesarias para el agente de Monitoring, sigue estos pasos para agregar los roles que se describen en Crea una cuenta de servicio:
- Haz clic en edit Editar en la entrada de la cuenta de servicio.
- Haz clic en Agregar otro rol para agregar los roles faltantes.
- 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 tenga una cuenta de servicio conectada, haz lo siguiente:
Asegúrate de haber verificado los permisos de acceso de tu VM.
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.
Conecta la cuenta de servicio a la VM en la que se ejecuta el agente.
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 con claves privadas de cuentas de servicio, haz lo siguiente:
Transfiere el archivo de claves de la cuenta de servicio de tu sistema local a tu instancia de VM:
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
Completa los pasos que se muestran en la siguiente tabla:
Compute Engine
-
En la consola de Google Cloud, ve a la página Instancias de VM.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Compute Engine.
Identifica INSTANCE_NAME y INSTANCE_ZONE para la VM.
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"
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 ConfiguraGOOGLE_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"
- VMs de Linux:
Amazon EC2
Para tu VM, identifica YOUR-INSTANCE'S-ID y YOUR-INSTANCE'S-AWS-REGION.
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ónus-east-1
. Para aprender a definir la variableINSTANCE
cuando tu instancia está en la regiónus-east-1
, consulta la convención de nombres definida por Amazon.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 ConfiguraGOOGLE_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"
-
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:
Para obtener información sobre cómo instalar el agente, consulta Instala el agente.
Para obtener información para instalar el agente, consulta Reinicia el agente.
Si deseas volver a verificar el archivo de claves de la cuenta de servicio, consulta Verifica las credenciales de clave privada.
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
Edita el siguiente archivo de configuración o créalo si no existe:
/etc/default/stackdriver-agent
Agrega lo siguiente al archivo de configuración:
GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE
Ejecuta el siguiente comando en tu instancia de VM para reiniciar el agente:
sudo service stackdriver-agent restart
Windows
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")
Ejecuta el siguiente comando en tu instancia de VM para reiniciar el agente:
Restart-Service -Name StackdriverMonitoring