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 gcloud para acessar Google Cloud em um ambiente local, verifique quais credenciais você está usando. Ao usar a CLI gcloud, você está usando as credenciais fornecidas para a CLI 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 ambienteGOOGLE_APPLICATION_CREDENTIALS
.
Tipo de credencial não reconhecido
Se a solicitação de API retornar um erro que inclua Error creating credential
from JSON. Unrecognized credential type
, 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.
Erro retornado para credenciais locais da falsificação de identidade de conta de serviço
As credenciais de um arquivo ADC local gerado usando a representação de conta de serviço
não são compatíveis com todas as bibliotecas de autenticação. Se a
chamada retornar um erro semelhante a Neither metadata server or valid service
account credentials are found
, não será possível usar credenciais de impersonificação local para
essa tarefa.
Para evitar esse erro, crie o arquivo ADC com base nas credenciais do usuário ou execute o código em um ambiente que tenha um servidor de metadados disponível (como o Compute Engine).
Acesso bloqueado ao usar escopos
Quando você tenta criar um arquivo ADC local e é exibido um erro semelhante a This app
is blocked
ou Access blocked: Authorization Error
, 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 o 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
flag –-client-id-file
, especificando
seus escopos com a
flag -–scopes
.