Este tópico explica como autenticar um aplicativo como uma conta de serviço. Para informações gerais sobre autenticação nas APIs do Google Cloud, inclusive cenários e estratégias de autenticação comuns, consulte Visão geral da autenticação. Para mais informações sobre contas de serviço, consulte Contas de serviço na documentação do gerenciamento de identidade e acesso.
Como encontrar credenciais automaticamente
Se seu aplicativo for executado em um ambiente do Google Cloud que tenha uma conta de serviço padrão, ele poderá recuperar as credenciais da conta de serviço para chamar as APIs do Google Cloud. Esses ambientes incluem Compute Engine, Google Kubernetes Engine, App Engine, Cloud Run e Cloud Functions. Recomendamos usar essa estratégia porque ela é mais conveniente e segura do que transmitir as credenciais manualmente.
Além disso, recomendamos que você use as bibliotecas de cliente do Google Cloud para seu aplicativo. As bibliotecas de cliente do Google Cloud usam uma biblioteca chamada Application Default Credentials (ADC) para encontrar as credenciais da sua conta de serviço automaticamente. O ADC procura credenciais de conta de serviço na seguinte ordem:
Se a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
estiver definida, o ADC usará o arquivo da conta de serviço para que a variável aponta.Se a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
não estiver definida, o ADC usará a conta de serviço anexada ao recurso que está executando seu código.Se a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
não estiver definida e não houver uma conta de serviço anexada ao recurso que executa seu código, o ADC usará a conta de serviço padrão que o Compute Engine, o Google Kubernetes Engine, o App Engine, o Cloud Run e o Cloud Functions fornecem.Caso o ADC não use nenhuma das credenciais acima, um erro é gerado.
O exemplo de código a seguir ilustra como usar a biblioteca ADC no código do aplicativo:
C#
Go
Java
Node.js
PHP
Python
Ruby
Como transmitir credenciais manualmente
Se o aplicativo for executado fora dos ambientes do Google Cloud que fornecem uma conta de serviço padrão, você precisará criar uma manualmente. Em seguida, crie uma ou mais chaves de conta de serviço, que são credenciais associadas à conta de serviço. As chaves de conta de serviço podem ser transmitidas manualmente para seu aplicativo.
Como criar uma conta de serviço
As etapas a seguir descrevem como criar uma conta de serviço se você não tiver uma:
Console do Cloud
Crie uma conta de serviço:
-
No Console do Cloud, acesse a página Criar conta de serviço.
Acesse Criar conta de serviço - Selecione um projeto.
-
No campo Nome da conta de serviço, insira um nome. O Console do Cloud preenche o campo ID da conta de serviço com base nesse nome.
No campo Descrição da conta de serviço, insira uma descrição. Por exemplo,
Service account for quickstart
. - Clique em Criar.
-
Clique no campo Selecionar um papel.
Em Acesso rápido, clique em Básico e em Proprietário.
- Clique em Continuar.
-
Clique em Concluído para terminar a criação da conta de serviço.
Não feche a janela do navegador. Você vai usá-lo na próxima etapa.
Crie uma chave de conta de serviço:
- No Console do Cloud, clique no endereço de e-mail da conta de serviço que você criou.
- Clique em Chaves.
- Clique em Adicionar chave e em Criar nova chave.
- Clique em Criar. O download de um arquivo de chave JSON é feito no seu computador.
- Clique em Fechar.
Linha de comando
É possível executar os seguintes comandos usando o SDK do Cloud na máquina local ou no Cloud Shell.
-
Crie a conta de serviço. Substitua NAME por um nome para a conta de serviço.
gcloud iam service-accounts create NAME
-
Conceda permissões à conta de serviço. Substitua PROJECT_ID pelo ID do seu projeto.
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role="roles/owner"
-
Gere o arquivo de chave. Substitua FILE_NAME pelo nome do arquivo de chave.
gcloud iam service-accounts keys create FILE_NAME.json --iam-account=NAME@PROJECT_ID.iam.gserviceaccount.com
Como transmitir credenciais por meio da variável de ambiente
Forneça credenciais de autenticação ao código do aplicativo
definindo a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS
.
Substitua [PATH] pelo caminho do arquivo JSON que contém sua
chave da conta de serviço. Essa variável só se aplica à sessão de shell atual.
Assim, se você abrir uma nova sessão, precisará definir a variável novamente.
Linux ou macOS
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Exemplo:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
Windows
Com o PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Exemplo:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\my-key.json"
Com prompt de comando:
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
Depois de concluir as etapas acima, o ADC encontrará suas credenciais automaticamente, conforme descrito na seção acima. O uso do ADC é recomendável porque requer menos códigos, que podem ser usados em ambientes diferentes.
Como transmitir credenciais usando códigos
Como alternativa, você pode optar por apontar explicitamente para o arquivo da sua conta de serviço no código, conforme mostrado no exemplo a seguir. É necessário instalar a biblioteca de cliente do Cloud Storage para executar o exemplo a seguir.
C#
Go
Java
Node.js
PHP
Python
Ruby
Práticas recomendadas para o gerenciamento de credenciais
As credenciais dão acesso a dados confidenciais. As práticas a seguir ajudam a proteger o acesso às suas credenciais.
Não incorpore secrets relacionados à autenticação no código-fonte, como chaves de API, tokens OAuth e chaves da conta de serviço. Use uma variável de ambiente que aponte para as credenciais fora do código-fonte do aplicativo, como o Cloud Key Management Service.
Crie e use credenciais diferentes para contextos distintos, como ambientes de teste e produção.
Transfira as credenciais somente por um canal seguro, como HTTPS, para evitar que terceiros as interceptem. Jamais transfira em texto não criptografado ou como parte do URL.
Nunca incorpore credenciais de longa duração ao aplicativo do lado do cliente. Por exemplo, não incorpore chaves de conta de serviço a um aplicativo para dispositivos móveis. Os aplicativos do lado do cliente podem ser examinados e as credenciais podem ser facilmente encontradas e usadas por terceiros.
Revogue um token quando ele não for mais necessário.
Solução de problemas de erros na API
Saiba mais sobre como resolver problemas de solicitações de API em Erros das APIs do Cloud.
A seguir
- Saiba mais sobre a autenticação em uma API do Google Cloud.
- Saiba mais sobre como se autenticar como usuário final
- Aprenda a usar chaves de API
Faça um teste
Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também ganham US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
Comece gratuitamente