En esta guía, se explica cómo asegurarte de que el agente de operaciones, que instales en tu instancia de máquina virtual (VM), esté autorizado para enviar datos de telemetría a Logging.
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 revocar las credenciales creadas congcloud 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 acerca de 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:
- 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.
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:
-
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 los roles otorgados a la cuenta de servicio.
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:
- 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 al agente de operaciones 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 operaciones 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
.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 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/systemd/system.conf
Agrega lo siguiente al archivo de configuración:
DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
Vuelve a cargar las variables de entorno:
sudo systemctl daemon-reload
Ejecuta el siguiente comando en tu instancia de VM para reiniciar el agente:
sudo systemctl restart google-cloud-ops-agent
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 google-cloud-ops-agent -Force