Solucionar problemas de configuración de ADC

En esta página se describen algunos problemas habituales que pueden surgir al usar las credenciales predeterminadas de la aplicación (ADC).

Para obtener información sobre cómo funcionan las credenciales predeterminadas de la aplicación, incluido dónde se encuentran las credenciales, consulta Cómo funcionan las credenciales predeterminadas de la aplicación.

Las credenciales de usuario no funcionan

Si tu solicitud a la API devuelve un mensaje de error que indica que esta API no admite las credenciales de usuario, que no está habilitada en el proyecto o que no se ha definido ningún proyecto de cuota, consulta la siguiente información.

Hay dos tipos de Google Cloud APIs:

  • Las APIs basadas en recursos, que usan el proyecto asociado a los recursos a los que se accede para la facturación y las cuotas.

  • APIs basadas en clientes, que usan el proyecto asociado al cliente que accede a los recursos para la facturación y las cuotas.

Cuando proporciones credenciales de usuario para autenticarte en una API basada en clientes, debes especificar el proyecto que se va a usar para la facturación y la cuota. Este proyecto se denomina proyecto de cuota.

Hay varias formas de especificar un proyecto de cuota, como las siguientes:

  • Actualiza tu archivo ADC para usar otro proyecto como proyecto de cuota:

    gcloud auth application-default set-quota-project YOUR_PROJECT
    
  • Si usas la CLI de gcloud para llamar a la API, puedes definir tu proyecto de cuota en la configuración de la CLI de gcloud:

    gcloud config set billing/quota_project YOUR_PROJECT
    
  • Si llamas directamente a la API REST o RPC, usa el encabezado HTTP x-goog-user-project para especificar un proyecto de cuota en cada solicitud. Para obtener más información, consulta Definir el proyecto de cuota con una solicitud REST.

Debes tener el permiso de gestión de identidades y accesos serviceusage.services.use para un proyecto si quieres designarlo como tu proyecto de facturación. El permiso serviceusage.services.use está incluido en el rol de gestión de identidades y accesos Consumidor de uso de servicio. Si no tienes el permiso serviceusage.services.use en ningún proyecto, ponte en contacto con tu administrador de seguridad o con el propietario de un proyecto que pueda asignarte el rol de consumidor de uso de servicios en el proyecto.

Para obtener más información sobre los proyectos de cuota, consulta el resumen de proyectos de cuota. Para obtener información sobre otras formas de definir el proyecto de cuota, consulta Definir el proyecto de cuota.

Credenciales incorrectas

Si parece que tus credenciales no te dan el acceso que esperabas o no se encuentran, comprueba lo siguiente:

  • Si usas la CLI gcloud para acceder a Google Cloud en un entorno local, asegúrate de saber qué credenciales estás usando. Cuando usas la CLI de gcloud, utilizas las credenciales que proporcionaste a la CLI de gcloud con el comando gcloud auth login. No estás usando las credenciales que has proporcionado a ADC. Para obtener más información sobre estos dos conjuntos de credenciales, consulta Configuración de autenticación de la CLI de gcloud y configuración de ADC.

  • Asegúrate de que la variable de entorno GOOGLE_APPLICATION_CREDENTIALS se haya definido solo si utilizas una clave de cuenta de servicio u otro archivo JSON para ADC. Las credenciales a las que apunta la variable de entorno tienen prioridad sobre otras credenciales, incluidas las de Workload Identity Federation para GKE.

  • Confirma que la entidad de seguridad que hace la solicitud tiene los roles de gestión de identidades y accesos necesarios. Si usas credenciales de usuario, los roles deben asignarse a la dirección de correo asociada a la cuenta de usuario. Si usas una cuenta de servicio, esta debe tener los roles necesarios.

  • Si proporcionas una clave de API con la solicitud a la API, la clave de API tiene prioridad sobre ADC en cualquier ubicación. Si has definido la variable de entorno GOOGLE_APPLICATION_CREDENTIALS y estás usando una clave de API, es posible que la API devuelva una advertencia que te indique que se están ignorando las credenciales que has proporcionado a ADC. Para detener la advertencia, anula la variable de entorno GOOGLE_APPLICATION_CREDENTIALS.

Tipo de credencial no reconocido

Si tu solicitud a la API devuelve un error que incluye Error creating credential from JSON. Unrecognized credential type, asegúrate de que estás usando una credencial válida. No se admiten archivos de ID de cliente para proporcionar credenciales para ADC.

Error devuelto para las credenciales locales de la suplantación de identidad de la cuenta de servicio

No todas las bibliotecas de autenticación admiten las credenciales de un archivo ADC local generado mediante la suplantación de identidad de una cuenta de servicio. Si tu llamada devuelve un error similar a Neither metadata server or valid service account credentials are found, no puedes usar credenciales locales suplantadas para esta tarea.

Para evitar este error, crea tu archivo ADC a partir de tus credenciales de usuario o ejecuta tu código en un entorno que tenga un servidor de metadatos disponible (como Compute Engine).

Se ha usado un proyecto desconocido 764086051850 en la solicitud

El proyecto 764086051850 es el que usa la CLI de gcloud. Si ves errores de autenticación que hacen referencia a este proyecto, significa que estás intentando usar una API basada en clientes y no has definido ni tu proyecto ni tu proyecto de cuota en tu configuración.

Para obtener más información, consulta el artículo Las credenciales de usuario no funcionan.

Acceso bloqueado al usar permisos

Cuando intentas crear un archivo ADC local y se devuelve un error similar a This app is blocked o Access blocked: Authorization Error, es posible que estés intentando usar ámbitos que no son compatibles con el comando de configuración de ADC predeterminado. Normalmente, este problema se debe a que se añaden ámbitos para aplicaciones que no son de Google Cloud, como Google Drive.

De forma predeterminada, los tokens de acceso generados a partir de un archivo ADC local creado con credenciales de usuario incluyen el ámbito de toda la nube https://www.googleapis.com/auth/cloud-platform. Para especificar los alcances de forma explícita, usa la marca –-scopes con el comando gcloud auth application-default login.

Para añadir permisos de servicios que no sean de Google Cloud, como Google Drive, crea un ID de cliente de OAuth y proporciónalo al comando gcloud auth application-default login mediante la marca –-client-id-file, especificando tus permisos con la marca -–scopes.