Métodos de autenticação no Google

Neste documento, você verá alguns conceitos importantes de métodos de autenticação e onde conseguir ajuda para implementar ou resolver problemas de autenticação. O foco principal da documentação de autenticação é para serviços do Google Cloud, mas a lista de casos de uso de autenticação e o material introdutório nesta página incluem casos de uso para outros produtos do Google.

Introdução

A autenticação é o processo de confirmação da identidade por meio de algum tipo de credencial. A autenticação consiste em provar que você é quem diz ser.

O Google fornece muitas APIs e serviços, que exigem autenticação para acesso. O Google também fornece vários serviços que hospedam aplicativos escritos pelos nossos clientes. também precisam determinar a identidade dos usuários.

O que você quer fazer? Informações
Autenticar para um serviço do Google Cloud a partir do meu aplicativo usando uma linguagem de programação de alto nível. Configure o Application Default Credentials e use uma das bibliotecas de cliente do Cloud.
Autentique-se em um aplicativo em execução no Cloud Run ou no Cloud Functions. Receba um token de ID do OpenID Connect (OIDC) e forneça-o com sua solicitação.
Implemente a autenticação do usuário para um aplicativo que acessa os serviços e recursos do Google ou do Google Cloud. Consulte Autenticar usuários do aplicativo para ver uma comparação de opções.
Teste alguns comandos gcloud no meu ambiente de desenvolvimento local. Inicialize a CLI gcloud.
Teste algumas solicitações da API Google Cloud REST no meu ambiente de desenvolvimento local. Use uma ferramenta de linha de comando, como curl, para chamar a API REST.
Teste um snippet de código incluído na documentação do produto. Configure o Application Default Credentials localmente e instale a biblioteca de cliente do produto no ambiente local. A biblioteca de cliente encontra suas credenciais automaticamente.
Receba ajuda com outro caso de uso de autenticação. Consulte a página Casos de uso de autenticação.
Veja uma lista dos produtos oferecidos pelo Google no espaço de gerenciamento de identidade e acesso. Consulte a página Produtos de gerenciamento de identidade e acesso do Google.

Escolha o método de autenticação certo para seu caso de uso

Quando você acessa os serviços do Google Cloud usando a CLI do Google Cloud, as bibliotecas de cliente do Cloud, ferramentas compatíveis com Application Default Credentials (ADC), como Terraform ou REST solicitações, use o diagrama a seguir para escolher um método de autenticação:

Árvore de decisão para escolher o método de autenticação com base no caso de uso

Este diagrama orienta você nas seguintes perguntas:

  1. Você está executando o código em um ambiente de desenvolvimento de usuário único, como sua própria estação de trabalho, o Cloud Shell ou uma interface de área de trabalho virtual?
    1. Se sim, prossiga para a pergunta 4.
    2. Caso contrário, prossiga para a pergunta 2.
  2. Você está executando o código no Google Cloud?
    1. Se sim, prossiga para a pergunta 3.
    2. Caso contrário, prossiga para a pergunta 5.
  3. Você está executando contêineres no Google Kubernetes Engine ou no GKE Enterprise?
    1. Em caso afirmativo, use a federação de identidade da carga de trabalho para GKE para anexar contas de serviço aos pods do Kubernetes.
    2. Caso contrário, anexe uma conta de serviço ao recurso.
  4. Seu caso de uso requer uma conta de serviço?

    Por exemplo, você quer configurar a autenticação e a autorização de maneira consistente para seu aplicativo em todos os ambientes.

    1. Caso contrário, faça a autenticação com credenciais de usuário.
    2. Se for o caso, represente uma conta de serviço com credenciais de usuário.
  5. Sua carga de trabalho é autenticada com um provedor de identidade externo compatível com a federação de identidade de carga de trabalho?
    1. Em caso afirmativo, configure a federação de identidade da carga de trabalho para permitir que os aplicativos em execução no local ou em outros provedores de nuvem usem uma conta de serviço.
    2. Caso contrário, crie uma chave da conta de serviço.

Tipos de autenticação

A autenticação é necessária para acesso à maioria dos recursos e aplicativos. Esta documentação oferece suporte a profissionais técnicos que criam o código do aplicativo com uma das seguintes metas:

OAuth 2.0

As APIs do Google implementam e ampliam o framework do OAuth 2.0. O framework do OAuth 2.0 descreve vários "fluxos" ou abordagens de autenticação. Geralmente, o aplicativo apresenta credenciais, que representam um principal (de um usuário ou uma conta de serviço), a um módulo intermediário chamado servidor de autorização. O servidor de autorização responde com um token que pode ser usado pelo aplicativo para autenticar com o serviço e acessar recursos. O token inclui um ou mais escopos, que refletem o acesso que o aplicativo está autorizado a fazer. O aplicativo apresenta o token ao servidor de recursos para ter acesso aos recursos.

Métodos de autorização para serviços do Google Cloud

Os serviços do Google Cloud usam o Identity and Access Management (IAM) para autenticação. O IAM oferece controle granular, por principal e por recurso. Ao autenticar nos serviços do Google Cloud, você geralmente usa um escopo que inclui todos os serviços do Google Cloud (https://www.googleapis.com/auth/cloud-platform).

Os escopos do OAuth 2.0 podem fornecer uma segunda camada de proteção, o que é útil se o código estiver sendo executado em um ambiente em que a segurança do token é uma preocupação, como um app para dispositivos móveis. Nesse cenário, é possível usar escopos mais refinados para reduzir o risco no caso de um token comprometido. Os escopos do OAuth 2.0 também são usados para autorizar o acesso aos dados do usuário.

Application Default Credentials

O Application Default Credentials (ADC) é uma estratégia usada pelas bibliotecas de autenticação do Google para encontrar credenciais automaticamente com base no ambiente do aplicativo. As bibliotecas de autenticação disponibilizam essas credenciais para as bibliotecas de cliente do Cloud e as bibliotecas de cliente da API do Google. Ao usar o ADC, o código pode ser executado em um ambiente de desenvolvimento ou produção sem mudar a forma como o aplicativo é autenticado nos serviços e nas APIs do Google Cloud.

Se você estiver escrevendo um código que precise usar os serviços do Google Cloud, use o ADC sempre que possível. O ADC pode simplificar seu processo de desenvolvimento, porque permite que você use o mesmo código de autenticação em diversos ambientes.

Antes de usar o ADC, forneça suas credenciais para o ADC com base no local em que você quer que o código seja executado. O ADC localiza automaticamente as credenciais e recebe um token em segundo plano, o que permite que o código de autenticação seja executado em diferentes ambientes sem modificação. Por exemplo, a mesma versão do seu código pode ser autenticada com APIs do Google Cloud quando executada em uma estação de trabalho de desenvolvimento ou no Compute Engine.

As credenciais da gcloud não são iguais às fornecidas ao ADC pela CLI gcloud. Para mais informações, consulte as credenciais da CLI da gcloud e as credenciais do ADC.

Terminologia

É importante entender os termos a seguir ao falar sobre autenticação e autorização.

Authentication

A autenticação é o processo de determinar a identidade do principal que está tentando acessar um recurso.

Autorização

A autorização é o processo para determinar se o principal ou o aplicativo que está tentando acessar um recurso foi autorizado para esse nível de acesso.

Credenciais

Quando este documento usa o termo conta de usuário, isso se refere a uma conta de usuário gerenciada pelo seu provedor de identidade e federada com a federação de identidade de colaboradores.

Para autenticação, as credenciais são um objeto digital que oferece prova de identidade. Senhas, PINs e dados biométricos podem ser usados como credenciais, dependendo dos requisitos do aplicativo. Por exemplo, ao fazer login na sua conta de usuário, você informa a senha e cumpre todos os requisitos de autenticação de dois fatores como prova de que a conta realmente pertence a você e que você não está sendo falsificado por um usuário de má-fé.

Tokens são às vezes chamados de credenciais, mas, nesta documentação, eles são chamados de objetos digitais. Eles provam que o autor da chamada forneceu as credenciais adequadas, mas não são credenciais em si.

O tipo de credencial que você precisa fornecer depende do que você está autenticando. Os seguintes tipos de credenciais podem ser criados no Console do Google Cloud:

  • Chaves de API

    Ao contrário de outras credenciais, as chaves de API não identificam um principal. As chaves de API fornecem um projeto do Google Cloud para fins de faturamento e cota.

    Muitas APIs do Google não aceitam chaves de API. Para mais informações sobre as chaves de API, consulte Chaves de API.

  • IDs do cliente OAuth

    Os IDs do cliente OAuth são usados para identificar um app para o Google. Isso é necessário quando você quer acessar recursos que pertencem aos usuários finais, também chamados de OAuth de três etapas (3LO). Para mais informações sobre como receber e usar um ID do cliente OAuth, consulte Como configurar o OAuth 2.0.

Participante

Um principal é uma identidade que pode receber acesso a um recurso. Para autenticação, as APIs do Google oferecem suporte a dois tipos de principais: contas de usuário e contas de serviço.

O uso de uma conta de usuário ou uma conta de serviço para autenticação depende do seu caso de uso. Você pode usar ambos, cada um em diferentes estágios do seu projeto ou em diferentes ambientes de desenvolvimento.

Contas de usuário

As contas de usuário representam um desenvolvedor, administrador ou qualquer outra pessoa que interaja com as APIs e serviços do Google.

As contas de usuário são gerenciadas pelo provedor de identidade e federadas com a federação de identidade de colaboradores.

Com uma conta de usuário, você pode se autenticar nas APIs e serviços do Google das seguintes maneiras:

Para uma visão geral de maneiras de configurar identidades para usuários no Google Cloud, consulte Identidades para usuários.

Contas de serviço

Contas de serviço são contas que não representam um usuário humano. Eles oferecem uma maneira de gerenciar a autenticação e a autorização quando uma pessoa não está envolvida diretamente, como quando um aplicativo precisa acessar os recursos do Google Cloud. As contas de serviço são gerenciadas pelo IAM.

A lista a seguir fornece alguns métodos para usar uma conta de serviço para a autenticação nas APIs e serviços do Google, da mais segura para a menos segura. Para mais informações, consulte Escolher o método de autenticação certo para seu caso de uso nesta página.

Para uma visão geral das maneiras de configurar identidades de carga de trabalho, incluindo contas de serviço, para o Google Cloud, consulte Identidades para cargas de trabalho. Para mais informações, consulte Práticas recomendadas para o uso de contas de serviço.

Token

Para autenticação e autorização, um token é um objeto digital que mostra que um autor de chamada forneceu as credenciais adequadas que foram trocadas por esse token. O token contém informações sobre a identidade do principal que está fazendo a solicitação e o tipo de acesso que ele está autorizado a fazer.

Os tokens podem ser considerados chaves de hotel. Quando você faz check-in em um hotel e apresenta a documentação adequada no balcão de registro de hotéis, recebe uma chave que concede acesso a recursos específicos de hotéis. Por exemplo, a chave pode conceder acesso ao seu quarto e ao elevador convidado, mas não fornece acesso a qualquer outro quarto ou elevador de serviço.

Com exceção das chaves de API, as APIs do Google não oferecem suporte direto a credenciais. Seu aplicativo precisa adquirir ou gerar um token e fornecê-lo à API. Há vários tipos diferentes de tokens. Para mais informações, consulte Tipos de token.

Carga de trabalho e força de trabalho

Os produtos de identidade e acesso do Google Cloud permitem acesso aos serviços e recursos do Google para acesso programático e usuários humanos. O Google usa os termos carga de trabalho para acesso programático e força de trabalho para acesso do usuário.

A federação de identidade da carga de trabalho permite fornecer acesso a cargas de trabalho executadas fora do Google sem precisar criar e gerenciar chaves da conta de serviço.

A federação de identidade da força de trabalho permite que você use um provedor de identidade externo (IdP) para autenticar e autorizar uma força de trabalho, um grupo de usuários, como funcionários, parceiros e prestadores de serviços, usando o IAM. para que os usuários acessem os serviços do Google Cloud.

A seguir