Autenticação do Cloud Storage

A maioria das operações realizadas no Cloud Storage precisa ser autenticada. As únicas exceções são operações em objetos que permitem o acesso anônimo. Os objetos poderão ser acessados de maneira anônima se o grupo allUsers tiver a permissão READ. O grupo allUsers inclui qualquer pessoa na Internet.

OAuth 2.0

Autenticação

O Cloud Storage usa o OAuth 2.0 para autenticar e autorizar APIs. A autenticação é o processo para determinar a identidade de um cliente. Os detalhes da autenticação variam dependendo de como o Cloud Storage está sendo acessado, mas se enquadram em dois tipos gerais:

  • Um fluxo centrado no servidor permite que um aplicativo retenha diretamente as credenciais de uma conta de serviço para concluir a autenticação. Use esse fluxo se o aplicativo trabalhar com seus próprios dados em vez de dados do usuário. É possível usar as contas de serviço padrão dos projetos do Google Cloud ou criar contas novas.

  • Um fluxo centrado no usuário permite que um aplicativo consiga as credenciais de um usuário final. O usuário faz login para concluir a autenticação. Use esse fluxo caso o aplicativo precise acessar dados do usuário. Consulte a seção Credenciais de conta de usuário mais adiante nesta página para ver cenários em que um fluxo centrado no usuário é apropriado.

Tenha em mente que é possível usar os dois tipos de autenticação juntos em um aplicativo. Para mais informações sobre autenticação, consulte o Guia de autenticação do Google Cloud.

Escopos

A autorização é o processo para determinar quais são as permissões uma identidade autenticada tem em um conjunto de recursos especificados. O OAuth 2.0 usa escopos para determinar se uma identidade autenticada está autorizada. Os aplicativos usam uma credencial (disponível através de um fluxo de autenticação centrado no usuário ou no servidor) com um ou mais escopos para solicitar um token de acesso de um servidor de autorização do Google e acessar recursos protegidos. Por exemplo, o aplicativo A, que tem um token de acesso com escopo read-only, pode apenas fazer leituras, enquanto o aplicativo B, que tem um token de acesso com escopo read-write, pode fazer leituras e modificações nos dados. Nenhum dos aplicativos pode fazer leituras ou modificações nas listas de controle de acesso de objetos e buckets. Apenas um aplicativo com escopo full-control pode fazer isso.

Tipo Descrição URL do escopo
read-only Permite o acesso apenas para leitura de dados, incluindo a listagem de buckets. https://www.googleapis.com/auth/devstorage.read_only
read-write Permite acesso para ler e alterar dados, mas não metadado, como as políticas do IAM. https://www.googleapis.com/auth/devstorage.read_write
full-control Permite o controle total dos dados, incluindo a capacidade de alterar as políticas de IAM. https://www.googleapis.com/auth/devstorage.full_control
cloud-platform.read-only Visualize seus dados nos serviços do Google Cloud. No Cloud Storage, é igual a devstorage.read-only. https://www.googleapis.com/auth/cloud-platform.read-only
cloud-platform Visualize e gerencie dados em todos os serviços do Google Cloud. No Cloud Storage, é igual a devstorage.full-control. https://www.googleapis.com/auth/cloud-platform

Autenticação da gsutil

Depois de instalar a gsutil do SDK do Cloud, autentique com as credenciais da conta de serviço.

  1. Use uma conta de serviço atual ou crie uma nova e faça o download da chave privada associada. Só é possível fazer o download dos dados da chave privada para uma chave de conta de serviço quando ela é criada pela primeira vez.

  2. Use gcloud auth activate-service-account para autenticar com a conta de serviço:

    gcloud auth activate-service-account --key-file [KEY_FILE]

    em que [KEY_FILE] é o nome do arquivo que contém as credenciais da conta de serviço.

O comando gcloud auth usa o escopo cloud-platform ao receber um token de acesso.

Se a gsutil foi instalada de maneira independente do SDK do Cloud, consulte a página de instalação da gsutil para saber como fazer a autenticação.

Autenticação de bibliotecas de cliente

As bibliotecas de cliente podem usar o Application Default Credentials para autenticar facilmente com as APIs do Google e enviar solicitações para essas APIs. Com esse serviço, é possível testar seu aplicativo localmente e implantá-lo sem alterar o código subjacente. Para mais informações, inclusive amostras de código Guia de autenticação do Google Cloud Platform.

Autenticação de APIs

Para fazer solicitações usando o OAuth 2.0 para a API JSON ou a API XML do Cloud Storage, inclua o token de acesso do seu aplicativo no cabeçalho Authorization em todas as solicitações que exigem autenticação. Use o OAuth 2.0 Playground (em inglês) para gerar um token de acesso.

Authorization: Bearer <oauth2_token>

Veja abaixo um exemplo de solicitação que lista objetos em um bucket.

API JSON

Use o método de listagem do recurso Objects.

GET /storage/v1/b/example-bucket/o HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

Para autorizar solicitações a partir da linha de comando ou realizar testes, use o comando curl com a sintaxe a seguir:

curl -H "Authorization: Bearer OAUTH2_TOKEN" "https://storage.googleapis.com/storage/v1/b/example-bucket/o"

Para realizar testes locais, use o comando gcloud auth application-default print-access-token para gerar um token.

API XML

Use uma solicitação para listar objetos.

GET / HTTP/1.1
Host: example-bucket.storage.googleapis.com
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

Para autorizar solicitações a partir da linha de comando ou realizar testes, use o comando curl com a sintaxe a seguir:

curl -H "Authorization: Bearer OAUTH2_TOKEN" "https://example-bucket.storage.googleapis.com"

Para realizar testes locais, use o comando gcloud auth application-default print-access-token para gerar um token.

Devido à complexidade de gerenciar e atualizar tokens de acesso e ao risco de segurança ao lidar diretamente com aplicativos criptográficos, recomendamos enfaticamente o uso de uma biblioteca de cliente verificada.

Se você estiver procurando chaves HMAC para usar com a API XML para acesso interoperável com o Amazon S3, consulte Como gerenciar chaves HMAC para contas de serviço.

Credenciais de conta de usuário

Use credenciais de conta de usuário para autenticação quando o aplicativo exigir acesso a dados em nome de um usuário. Caso contrário, use as credenciais de conta de serviço. Aqui estão alguns exemplos de cenários em que podem ser usadas as credenciais de conta de usuário:

  • Aplicativos do servidor da Web
  • Aplicativos instalados e de desktop
  • Aplicativos para dispositivos móveis
  • JavaScript de clientes
  • Aplicativos em dispositivos de entrada limitada

Para mais informações sobre esses cenários, consulte Cenários do OAuth 2.0.

Caso você esteja criando um aplicativo que seja compatível com várias opções de autenticação de usuários finais, use o Firebase Authentication, que aceita a autenticação de e-mail e senha, além login federado com provedores de identidade, como Google, Facebook, Twitter e GitHub.

Em um fluxo de autenticação centrado no usuário, quando um aplicativo recebe um token de acesso de um usuário final, esse token de acesso só terá as permissões disponíveis para o usuário que o concedeu. Por exemplo, se jane@gmail.com tiver acesso read-only a example-bucket, um aplicativo que recebeu o acesso read-write de Jane poderá fazer gravações em example-bucket no nome dela.

A seguir