En esta página, se describe cómo configurar credenciales predeterminadas de la aplicación (ADC) para que las usen las bibliotecas cliente de Cloud, las bibliotecas cliente de la API de Google y las API de REST y RPC en una variedad de entornos. Para configurar ADC, proporciona credenciales a ADC en el entorno en el que se ejecuta el código.
Application Default Credentials (ADC) es una estrategia que usan las bibliotecas de autenticación de Google para encontrar credenciales automáticamente según el entorno de la aplicación. Las bibliotecas de autenticación ponen esas credenciales a disposición de las bibliotecas cliente de Cloud y las bibliotecas cliente de las APIs de Google. Cuando usas ADC, tu código puede ejecutarse en un entorno de desarrollo o de producción sin cambiar la forma en que tu aplicación se autentica en los servicios y las APIs de Google Cloud.
Para obtener información sobre dónde ADC busca credenciales y en qué orden, consulta Cómo funcionan las credenciales predeterminadas de la aplicación.
Si usas claves de API, no es necesario que configures ADC. Para obtener más información, consulta Usa claves de API.
Cómo proporcionar credenciales a ADC
Elige el entorno en el que se ejecuta tu código:
- Entorno de desarrollo local
- Cloud Shell o en otros entornos de desarrollo basados en la nube de Google Cloud
- Compute Engine o cualquier otro servicio de Google Cloud que admita la conexión de una cuenta de servicio
- Google Kubernetes Engine o GKE Enterprise
- Proveedor local u otro proveedor de servicios en la nube
Entorno de desarrollo local
Puedes proporcionar tus credenciales de usuario o credenciales de la cuenta de servicio a ADC en un entorno de desarrollo local.
Credenciales de usuario
Cuando tu código se ejecuta en un entorno de desarrollo local, como una estación de trabajo de desarrollo, la mejor opción es usar credenciales asociadas con tu Cuenta de Google, también llamadas credenciales de usuario.
Para proporcionar tus credenciales de usuario a ADC, usa Google Cloud CLI:
Crea el archivo de credenciales:
gcloud auth application-default login
Se muestra una pantalla de acceso. Después de acceder, tus credenciales se almacenan en el archivo de credenciales local que usa ADC.
Cuando proporcionas credenciales de usuario para crear un archivo de ADC local, debes tener en cuenta los siguientes datos:
Es posible que las credenciales del usuario no funcionen con algunos métodos y APIs, como la API de Cloud Translation o la API de Cloud Vision, sin parámetros ni configuración adicionales. Si ves un mensaje de error en el que se indica que la API no está habilitada en el proyecto o que no hay ningún proyecto de cuota disponible, consulta Soluciona problemas de la configuración de ADC.
Las ADC locales contienen tus tokens de acceso y actualización. Cualquier usuario con acceso al sistema de archivos puede usar esas credenciales. Si ya no necesitas estas credenciales locales, puedes revocarlas mediante el comando
gcloud auth application-default revoke
.Si tu Cuenta de Google no tiene los roles necesarios de Identity and Access Management (IAM) en tu proyecto, es posible que el código no pueda acceder a algunos recursos. Si esto sucede, alguien debe otorgarte los roles necesarios.
El archivo de ADC local está asociado con tu cuenta de usuario, no con la configuración de la CLI de gcloud. Cambiar a una configuración de la CLI de gcloud diferente no afecta el archivo de ADC local ni las credenciales proporcionadas a ADC.
Credenciales de cuenta de servicio
Puedes configurar ADC con credenciales de una cuenta de servicio mediante el uso de la identidad de una cuenta de servicio o de una clave de cuenta de servicio.
Robo de identidad de la cuenta de servicio
Puedes usar la identidad de una cuenta de servicio para configurar un archivo de credenciales predeterminadas de la aplicación (ADC) local. Las bibliotecas cliente que admiten el uso de identidad pueden utilizar esas credenciales automáticamente. Los archivos de ADC locales creados mediante el uso de identidad se admiten en los siguientes idiomas:
- Go
- Java
- Node.js
- Python
Debes tener el rol de IAM de creador de tokens de cuentas de servicio (roles/iam.serviceAccountTokenCreator
) en la cuenta de servicio que suplantas. Para obtener más información, consulta los Roles requeridos.
Usa la identidad de la cuenta de servicio para crear un archivo de ADC local:
gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL
Claves de cuenta de servicio
Si no puedes usar credenciales de usuario o la identidad de una cuenta de servicio para el desarrollo local, puedes usar una clave de cuenta de servicio.
A fin de crear una clave de cuenta de servicio y hacer que esté disponible para las ADC, haz lo siguiente:
A fin de crear una cuenta de servicio con las funciones que necesita tu aplicación y una clave para esa cuenta de servicio, sigue las instrucciones en Crea una clave de cuenta de servicio.
-
Configura la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
en la ruta 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.
Entorno de desarrollo basado en la nube de Google Cloud
Cuando usas un entorno de desarrollo basado en la nube de Google Cloud, como Cloud Shell o Cloud Code, la herramienta usa las credenciales que proporcionaste cuando accediste y administra las autorizaciones necesarias. No puedes usar la CLI de gcloud para proporcionar credenciales a ADC en estos entornos. Si necesitas proporcionar una cuenta de usuario diferente a ADC o proporcionar credenciales mediante una cuenta de servicio, usa un entorno de desarrollo local o un recurso de procesamiento de Google Cloud como tu entorno de desarrollo.
Servicios de Google Cloud que admiten la conexión de una cuenta de servicio
Algunos servicios de Google Cloud, como Compute Engine, App Engine y Cloud Functions, admiten adjuntar una cuenta de servicio administrada por el usuario a algunos tipos de recursos. Por lo general, se admite la conexión de una cuenta de servicio cuando los recursos de ese servicio pueden ejecutarse o incluir el código de la aplicación. Cuando conectas una cuenta de servicio a un recurso, el código que se ejecuta en el recurso puede usar esa cuenta de servicio como su identidad.
Es preferible conectar una cuenta de servicio administrada por el usuario a fin de proporcionar credenciales a las ADC para el código de producción que se ejecuta en Google Cloud.
Para obtener ayuda sobre cómo determinar los roles que debes proporcionar a tu cuenta de servicio, consulta Elige roles predefinidos.
Para obtener información sobre los recursos a los que puedes conectar una cuenta de servicio y ayudar a conectar la cuenta de servicio al recurso, consulta la documentación de IAM sobre cómo conectar una cuenta de servicio.
Configura la autenticación:
-
Crea la cuenta de servicio:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Reemplaza
SERVICE_ACCOUNT_NAME
por un nombre para la cuenta de servicio. -
Para proporcionar acceso a tu proyecto y tus recursos, otorga un rol a la cuenta de servicio:
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
- Para otorgar otro rol a la cuenta de servicio, ejecuta el comando como lo hiciste en el paso anterior.
-
Otorga a tu Cuenta de Google un rol que te permita usar los roles de la cuenta de servicio y conectar la cuenta de servicio a otros recursos:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
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 servicioUSER_EMAIL
: La dirección de correo electrónico de tu Cuenta de Google
GKE o GKE Enterprise
La autenticación para aplicaciones alojadas en contenedores que se ejecutan en GKE o GKE Enterprise se controla de manera diferente entre los entornos de prueba locales y los de Google Cloud.
Prueba las aplicaciones alojadas en contenedores de forma local
Para probar la aplicación alojada en contenedores en la estación de trabajo local, puedes configurar contenedores para autenticarte con tu archivo de credenciales local. Para probar los contenedores, usa una implementación local de Kubernetes como minikube y el complemento de minikube de GCP Auth.
Ejecuta aplicaciones alojadas en contenedores en Google Cloud
La configuración de la autenticación para los entornos alojados en contenedores de Google Cloud es diferente según el contexto:
- Para GKE Enterprise, consulta la descripción general de la autenticación y Usa Workload Identity de la flota.
- En el caso de GKE, consulta Usa Workload Identity para GKE.
- En Cloud Run for Anthos, consulta Usa Workload Identity para Cloud Run for Anthos.
Proveedor local u otro proveedor de servicios en la nube
Si ejecutas tu aplicación fuera de Google Cloud, debes proporcionar credenciales que Google Cloud reconozca para usar los servicios de Google Cloud.
Federación de Workload Identity
La forma preferida de autenticarte con Google Cloud mediante credenciales de un proveedor de identidad diferente es usar la federación de Workload Identity; debes crear un archivo de configuración de credenciales y establecer la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
para que apunte a él. Este enfoque es más seguro que crear una clave de cuenta de servicio.
A fin de obtener ayuda con la configuración de la federación de Workload Identity para ADC, consulta Configura la federación de Workload Identity y Obtén credenciales de corta duración con federación de identidades.
Clave de cuenta de servicio
Si no puedes configurar la federación de Workload Identity, debes crear una cuenta de servicio, otorgarle los roles de IAM que requiera tu aplicación y crear una clave para la cuenta de servicio.
A fin de crear una clave de cuenta de servicio y hacer que esté disponible para las ADC, haz lo siguiente:
A fin de crear una cuenta de servicio con las funciones que necesita tu aplicación y una clave para esa cuenta de servicio, sigue las instrucciones en Crea una clave de cuenta de servicio.
Configura la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
en la ruta 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.
¿Qué sigue?
- Obtén más información sobre cómo ADC encuentra credenciales.
- Autentica para usar las bibliotecas cliente de Cloud.
- Explora la autenticación en Google.