En este tema, se explica cómo autenticar una aplicación como una cuenta de servicio. Para obtener información general sobre la autenticación en las API de Google Cloud, incluidas las situaciones y las estrategias de autenticación comunes, consulta Descripción general de la autenticación. Para obtener más información sobre las cuentas de servicio, consulta cuentas de servicio en la documentación de la administración de identidades y accesos.
Encuentra credenciales automáticamente
Si tu aplicación se ejecuta dentro de un entorno de Google Cloud y adjuntas una cuenta de servicio a ese entorno, tu aplicación puede recuperar credenciales para la cuenta de servicio. Así, la aplicación puede usar las credenciales para llamar a las API de Google Cloud.
Puedes adjuntar cuentas de servicio a los recursos de muchos servicios diferentes de Google Cloud, incluidos Compute Engine, Google Kubernetes Engine, App Engine, Cloud Run y Cloud Functions. Recomendamos usar esta estrategia porque es más conveniente y segura que pasar las credenciales de forma manual.
Además, te recomendamos usar las bibliotecas cliente de Google Cloud para tu aplicación. Las bibliotecas cliente de Google Cloud usan una biblioteca llamada credenciales predeterminadas de la aplicación (ADC) para encontrar de forma automática las credenciales de la cuenta de servicio. ADC busca las credenciales de la cuenta de servicio en el siguiente orden:
Si se establece la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
, ADC usa la clave de la cuenta de servicio o el archivo de configuración al que apunta la variable.Si no se configuró la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
, ADC usa la cuenta de servicio adjunta al recurso que ejecuta tu código.Esta cuenta de servicio puede ser una cuenta de servicio predeterminada que proporcionan Compute Engine, Google Kubernetes Engine, App Engine, Cloud Run o Cloud Functions. También puede ser una cuenta de servicio administrada por el usuario que creaste.
Si ADC no puede usar ninguna de las credenciales ya mencionadas, aparecerá un error.
En el siguiente ejemplo de código, se ilustra cómo usar la biblioteca de ADC en el código de la aplicación. Para ejecutar este ejemplo, debes instalar la biblioteca cliente de Cloud Storage.
C#
Go
Java
Node.js
PHP
Python
Ruby
Pasa las credenciales de forma manual
Si tu aplicación se ejecuta en un entorno sin una cuenta de servicio adjunta, como una local o en otro proveedor de servicios en la nube, debes usar la federación de Workload Identity.
Si no puedes usar la federación de Workload Identity, debes crear una cuenta de servicio y una o más claves de cuenta de servicio, que son credenciales asociadas con la cuenta de servicio. Las claves de la cuenta de servicio se pueden pasar de forma manual a tu aplicación.
Asegúrate de revisar las prácticas recomendadas para administrar claves de cuentas de servicio.
Crea una cuenta de servicio
En los siguientes pasos, se describe cómo crear una cuenta de servicio si no tienes una:
Console
Crear una cuenta de servicio:
-
En la consola, ve a la página Crear cuenta de servicio.
Ve a Crear cuenta de servicio - Selecciona tu proyecto.
-
Ingresa un nombre en el campo Nombre de cuenta de servicio. La consola completa el campo ID de cuenta de servicio según este nombre.
Opcional: en el campo Descripción de la cuenta de servicio, ingresa una descripción. Por ejemplo,
Service account for quickstart
. - Haz clic en Crear y continuar.
-
Para proporcionar acceso a tu proyecto, otorga los siguientes roles a tu cuenta de servicio: Proyecto > Propietario .
En la lista Seleccionar un rol, elige un rol.
Para obtener roles adicionales, haz clic en
Agregar otro rol y agrega cada rol adicional. - Haga clic en Continuar.
-
Haz clic en Listo para terminar de crear la cuenta de servicio.
No cierres la ventana del navegador. La usarás en la próxima tarea.
Para crear una clave de cuenta de servicio, haz lo siguiente:
- En la consola, haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste.
- Haga clic en Claves.
- Haz clic en Agregar clave y, luego, en Crear clave nueva.
- Haga clic en Crear. Se descargará un archivo de claves JSON en tu computadora.
- Haga clic en Cerrar.
gcloud
Configura la autenticación:
-
Crea la cuenta de servicio:
gcloud iam service-accounts create NAME
Reemplaza
NAME
por un nombre para la cuenta de servicio. -
Otorga roles a la cuenta de servicio. Ejecuta el siguiente comando una vez para cada uno de los siguientes roles de IAM:
roles/owner
:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Reemplaza lo siguiente:
SERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicioPROJECT_ID
: el ID del proyecto en el que creaste la cuenta de servicioROLE
: el rol a otorgar
-
Genera el archivo de claves:
gcloud iam service-accounts keys create FILE_NAME.json --iam-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Reemplaza lo siguiente:
FILE_NAME
: un nombre para el archivo de clavesSERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicioPROJECT_ID
: el ID del proyecto en el que creaste la cuenta de servicio
Pasa las credenciales a través de la variable de entorno
Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
para proporcionar credenciales de autenticación al código de la aplicación. Esta variable se aplica solo a tu sesión de shell actual. Si quieres que la variable se aplique a sesiones de shell futuras, configura la variable en tu archivo de inicio de shell, por ejemplo, en el archivo ~/.bashrc
o ~/.profile
.
Linux o macOS
export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
Reemplaza KEY_PATH
por la ruta de acceso del archivo JSON que contiene la clave de tu cuenta de servicio.
Por ejemplo:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
Para PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
Reemplaza KEY_PATH
por la ruta de acceso del archivo JSON que contiene la clave de tu cuenta de servicio.
Por ejemplo:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
Para el símbolo del sistema:
set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH
Reemplaza KEY_PATH
por la ruta de acceso del archivo JSON que contiene la clave de tu cuenta de servicio.
Después de completar los pasos anteriores, ADC puede encontrar tus credenciales de forma automática, como se describe en la sección anterior. Recomendamos usar ADC porque requiere menos código y este es portátil en entornos diferentes.
Pasa las credenciales mediante código
También puedes apuntar de forma explícita hacia el archivo de la cuenta de servicio en el código, como se muestra en el siguiente ejemplo. Instala la biblioteca cliente de Cloud Storage para ejecutar el siguiente ejemplo.
C#
Go
Java
Node.js
PHP
Python
Ruby
Soluciona errores de la API
Consulta Errores de las API de Cloud para obtener más información sobre cómo solucionar problemas de las solicitudes a la API con errores.
¿Qué sigue?
- Revisa nuestras prácticas recomendadas para administrar cuentas de servicio y claves de cuentas de servicio.
- Obtén más información sobre las prácticas recomendadas para proteger las cuentas de servicio.
- Obtén información sobre cómo autenticar en una API de Google Cloud.
- Obtén información sobre la autenticación como usuario final.
- Obtén información sobre cómo usar las claves de API.
Pruébalo tú mismo
Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
Comenzar gratis