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 de forma automática
Si tu aplicación se ejecuta dentro de un entorno de Google Cloud que tiene una cuenta de servicio predeterminada, la aplicación puede recuperar las credenciales de la cuenta de servicio para llamar a las API de Google Cloud. Entre estos entornos, se incluyen 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 el archivo de la cuenta de servicio 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.Si la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
no está configurada y no hay una cuenta de servicio adjunta al recurso que ejecuta tu código, ADC usa la cuenta de servicio predeterminada que Compute Engine, Google Kubernetes Engine, App Engine, Cloud Run y Cloud Functions proporcionan.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:
C#
Go
Java
Node.js
PHP
Python
Ruby
Pasa las credenciales de forma manual
Si tu aplicación se ejecuta fuera de los entornos de Google Cloud que proporcionan una cuenta de servicio predeterminada, debes crear una de forma manual. Luego, puedes crear 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.
Crea una cuenta de servicio
En los siguientes pasos, se describe cómo crear una cuenta de servicio si no tienes una:
Cloud Console
-
En Cloud Console, ve a la página Crea una clave de cuenta de servicio.
Ir a la página Crea una clave de la cuenta de servicio - En la lista Cuenta de servicio, selecciona Cuenta de servicio nueva.
- Ingresa un nombre en el campo Nombre de cuenta de servicio.
En la lista Función, selecciona Proyecto > Propietario.
- Haz clic en Crear. Se descargará un archivo JSON que contiene tus claves a tu computadora.
Línea de comandos
Puedes ejecutar los siguientes comandos con el SDK de Cloud en tu máquina local o en Cloud Shell.
-
Crea la cuenta de servicio. Reemplaza NAME por un nombre para la cuenta de servicio.
gcloud iam service-accounts create NAME
-
Otorga permisos a la cuenta de servicio. Reemplaza PROJECT_ID por el ID del proyecto.
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role="roles/owner"
-
Genera el archivo de claves. Reemplaza FILE_NAME por un nombre para el archivo de claves.
gcloud iam service-accounts keys create FILE_NAME.json --iam-account=NAME@PROJECT_ID.iam.gserviceaccount.com
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.
Reemplaza [PATH] por la ruta de acceso del archivo JSON que contiene la clave de tu cuenta de servicio. Esta variable solo se aplica a la sesión actual de shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.
Linux o macOS
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Por ejemplo:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
Windows
Con PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Por ejemplo:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\my-key.json"
Con el símbolo del sistema:
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
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
Prácticas recomendadas para administrar credenciales
Las credenciales proporcionan acceso a datos sensibles. Con las siguientes prácticas, podrás proteger el acceso a tus credenciales.
No incorpores secretos relacionados con la autenticación en el código fuente, como claves de API, tokens de OAuth y claves de cuentas de servicio. Puedes usar una variable de entorno que apunte hacia las credenciales externas al código fuente de la aplicación, como Cloud Key Management Service.
Crea y usa credenciales distintas para contextos diferentes, como en entornos de pruebas y de producción.
Transfiere las credenciales solo mediante un canal seguro, como HTTPS, para evitar que terceros las intercepten. Nunca las transfieras en texto no encriptado o como parte de una URL.
Nunca incorpores credenciales de larga duración en la aplicación del cliente. Por ejemplo, no incorpores claves de cuentas de servicio en una app para dispositivos móviles. Las apps del cliente se pueden examinar, y un tercero puede encontrar y usar las credenciales con facilidad.
Revoca un token si ya no lo necesitas.
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.
Próximos pasos
- 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