Cuentas de servicio

Una cuenta de servicio es una cuenta asociada con una aplicación en lugar de un usuario final. Es posible que debas usar una cuenta de servicio para autenticarte en Earth Engine si estás desarrollando una app o usando la API de REST. Obtén más información para autenticarte con cuentas de servicio.

Crea una cuenta de servicio

Primero, crea un proyecto de Google Cloud si aún no lo hiciste.

Para administrar las cuentas de servicio de tu proyecto de Cloud, ve al menú de la consola de Cloud () y selecciona IAM y administración > Cuentas de servicio. (Elige el proyecto si se te solicita).

Para crear una cuenta de servicio nueva, haz clic en el vínculo + CREAR CUENTA DE SERVICIO.

Si creaste un proyecto de App Engine, es posible que ya tengas una cuenta de servicio predeterminada (cuenta de servicio predeterminada de App Engine) para ese proyecto. Si estás configurando un proyecto de App Engine, en el Rol de la cuenta de servicio, elige Proyecto > Editor.

Crea una clave privada para la cuenta de servicio

Una vez que tengas una cuenta de servicio, haz clic en el menú de esa cuenta () y, luego, en Crear clave > JSON. Descarga el archivo de claves JSON.

Protege tu archivo de claves

El archivo de claves es un archivo especial que permite que los programas accedan a las APIs de Google en nombre de tu cuenta de servicio. Asegúrate de que nadie pueda obtener acceso no autorizado a ella, ya que podría acceder a las APIs de Google en tu nombre. Nunca almacenes tu clave privada en un lugar público, como una carpeta compartida o un repositorio de origen. Si pierdes la clave privada, puedes revocar fácilmente el acceso a una cuenta de servicio y crear una nueva con la consola de Cloud. Consulta esta guía para obtener más detalles.

Registra la cuenta de servicio para usar Earth Engine

Todas las cuentas de servicio se crean dentro de un proyecto de Cloud, que puede ser el mismo proyecto que se usa para tu app de App Engine o VM de Cloud. Asegúrate de que el proyecto de Cloud esté registrado para acceder a Earth Engine y de que la API de Earth Engine esté habilitada en el proyecto. Todas las cuentas de servicio del proyecto con los permisos correctos tendrán acceso a Earth Engine, y no es necesario registrarlas por separado.

Ten en cuenta que ya no es posible registrar cuentas de servicio individuales. Debes registrar el proyecto de Cloud.

Usa una cuenta de servicio con una clave privada

Para autenticar en Earth Engine con una cuenta de servicio, haz lo siguiente:

  1. Crea y descarga un archivo de clave privada JSON (.private-key.json) para la cuenta de servicio.
  2. Prueba el siguiente código de Python desde cualquier lugar donde hayas colocado el archivo .private-key.json:
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials)

Si puedes inicializarla sin errores, tu cuenta de servicio está lista para usarse.

¿Qué debo hacer si recibo un error de invalid_grant?

OAuth2 puede ser muy sensible al sesgo de reloj. Si tienes la certeza de que configuraste todo correctamente y tu contacto de Google verificó que se aprobó la cuenta de servicio, verifica si el reloj de la computadora está sincronizado con la hora de la red.

Para los sistemas Ubuntu, la llamada para sincronizar el reloj de la computadora es la siguiente:

ntpdate ntp.ubuntu.com

En el caso de los sistemas que usan OS X, abre Preferencias del sistema > Fecha y hora > Fecha y hora (otra vez) y selecciona Establecer fecha y hora automáticamente.

Usa una cuenta de servicio predeterminada

Si usas una cuenta de servicio predeterminada, primero debes modificar los permisos de acceso de la VM para que la cuenta de servicio de Compute Engine pueda "Permitir el acceso total a todas las APIs de Cloud". (Si usas cuentas de servicio predeterminadas en Dataflow o App Engine, este paso no es necesario).

Para autenticarte en Earth Engine con una cuenta de servicio predeterminada, usa el siguiente código:

from google.auth import compute_engine
import ee
credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine'])
ee.Initialize(credentials)

Configura el acceso a la API de REST

Si la cuenta de servicio debe realizar cálculos con la API de REST, debes darle permiso a nivel del proyecto, específicamente el rol de visor de recursos de Earth Engine. Según la configuración de tu proyecto, es posible que también debas darle a la cuenta de servicio el rol de consumidor de Service Usage. Consulta la página Control de acceso para obtener más información sobre los permisos de proyectos necesarios para usar Earth Engine.