Resolver problemas de configuração do ADC

Nesta página, descrevemos alguns problemas comuns que você pode encontrar ao usar o Application Default Credentials (ADC).

Para informações sobre como o ADC funciona, incluindo onde as credenciais são encontradas, consulte Como o Application Default Credentials funciona.

As credenciais do usuário não funcionam

Se a solicitação de API retornar uma mensagem de erro informando que as credenciais do usuário final não são compatíveis com essa API, que a API não está sendo ativada no projeto ou que nenhum projeto de cota está definido, leia as seguintes informações.

Há dois tipos de APIs do Google Cloud:

  • APIs baseadas em recursos, que usam o projeto associado aos recursos que estão sendo acessados para faturamento e cota.

  • APIs baseadas em cliente, que usam o projeto associado ao cliente que acessa os recursos para faturamento e cota.

Ao fornecer credenciais de usuário para se autenticar em uma API baseada em cliente, você precisa especificar o projeto a ser usado para faturamento e cota. Esse projeto é chamado de projeto de cota.

Há várias maneiras de especificar um projeto de cota, incluindo as seguintes opções:

  • Atualize o arquivo ADC para usar um projeto diferente como o projeto de cota:

    gcloud auth application-default set-quota-project YOUR_PROJECT
    
  • Se você estiver usando a gcloud CLI para chamar a API, defina o projeto de cota na configuração da gcloud CLI:

    gcloud config set billing/quota_project YOUR_PROJECT
    
  • Se você estiver chamando a API REST ou RPC diretamente, use o cabeçalho HTTP x-goog-user-project para especificar um projeto de cota em cada solicitação. Para detalhes, consulte Definir o projeto de cota com uma solicitação REST.

Você precisa ter a permissão do IAM serviceusage.services.use para que um projeto possa designá-lo como seu projeto de faturamento. A permissão serviceusage.services.use está incluída no papel de IAM de consumidor do Service Usage. Se você não tiver a permissão serviceusage.services.use para nenhum projeto, entre em contato com o administrador de segurança ou um proprietário do projeto que possa conceder a você o papel Consumidor do Service Usage no projeto.

Para saber mais sobre projetos de cotas, consulte Visão geral do projeto de cotas. Para saber mais sobre outras maneiras de definir o projeto de cota, consulte Definir o projeto de cota.

Credenciais incorretas

Se as credenciais aparentemente não fornecerem o acesso esperado ou não forem encontradas, verifique o seguinte:

  • Se você estiver usando a CLI da gcloud para acessar o Google Cloud em um ambiente local, verifique quais credenciais você está usando. Ao usar a CLI da gcloud, você está usando as credenciais fornecidas para a CLI da gcloud usando o comando gcloud auth login. Você não está usando as credenciais que forneceu ao ADC. Para mais informações sobre esses dois conjuntos de credenciais, consulte Configuração de autenticação da gcloud CLI e configuração do ADC.

  • Verifique se a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS está definida somente se você estiver usando uma chave de conta de serviço ou outro arquivo JSON para o ADC. As credenciais indicadas pela variável de ambiente têm precedência sobre outras credenciais, inclusive para a Federação de Identidade da Carga de Trabalho para GKE.

  • Confirme se o principal que está fazendo a solicitação tem os papéis do IAM necessários. Se você estiver usando credenciais de usuário, os papéis precisarão ser concedidos ao endereço de e-mail associado à conta do usuário. Se você estiver usando uma conta de serviço, ela precisará ter os papéis necessários.

  • Se você fornecer uma chave de API com a solicitação de API, ela terá precedência sobre o ADC em qualquer local. Se você tiver definido a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS e estiver usando uma chave de API, a API poderá retornar um aviso informando que as credenciais fornecidas ao ADC estão sendo ignoradas. Para interromper o alerta, desative a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS.

Tipo de credencial não reconhecido

Se a solicitação de API retornar um erro que inclua "Erro ao criar a credencial no JSON. Tipo de credencial não reconhecido". Verifique se você está usando uma credencial válida. Os arquivos de ID do cliente não são compatíveis com credenciais do ADC.

Acesso bloqueado ao usar escopos

Quando você tenta criar um arquivo ADC local e é exibido um erro semelhante a "Este app está bloqueado" ou "Acesso bloqueado: erro de autorização", talvez você esteja tentando usar escopos que não têm suporte do comando de configuração padrão do ADC. Normalmente, esse problema é causado pela adição de escopos para aplicativos fora do Google Cloud, como Google Drive.

Por padrão, os tokens de acesso gerados de um arquivo local do ADC criado com credenciais de usuário incluem o escopo da nuvem https://www.googleapis.com/auth/cloud-platform. Para especificar escopos explicitamente, use a sinalização –-scopes com o comando gcloud auth application-default login.

Para adicionar escopos a serviços fora do Google Cloud, como o Google Drive, crie um ID do cliente OAuth e forneça-o ao comando gcloud auth application-default login usando a sinalização –-client-id-file, especificando seus escopos com a sinalização -–scopes.