Saiba como usar e gerenciar chaves de API para o Firebase

Uma chave de API é uma string exclusiva usada para encaminhar solicitações a seu projeto do Firebase quando você interage com os serviços do Firebase e do Google. Nesta página, você encontra as informações básicas sobre as chaves de API, além das práticas recomendadas para usar e gerenciar essas chaves com os apps do Firebase.

Informações gerais sobre chaves de API e o Firebase

Chaves de API para Firebase são diferentes das chaves de API tradicionais

Diferentemente da forma como as chaves de API costumam ser usadas, as chaves de API para serviços do Firebase não são usadas para controlar o acesso aos recursos de back-end, que só pode ser realizado com as regras de segurança do Firebase (para controlar quais usuários podem acessar recursos) e App Check (para controlar quais apps podem acessar os recursos).

Normalmente, é necessário proteger rapidamente as chaves de API, por exemplo, usando um serviço do Vault ou definindo as chaves como variáveis de ambiente. No entanto, é possível incluir chaves de API para serviços do Firebase em arquivos de configuração ou códigos de configuração de check-in.

Embora as chaves de API para serviços do Firebase sejam seguras e possam ser incluídas no código, existem alguns casos específicos para quando você precisa limitar sua chave de API. Por exemplo, se você usa o Firebase ML, o Firebase Authentication com método de login com e-mail/senha ou uma API faturável do Google Cloud. Saiba mais sobre esses casos posteriormente nesta página.

Como criar chaves de API

Um projeto do Firebase pode ter muitas chaves de API, mas cada uma delas só pode ser associada a um único projeto do Firebase.

Chaves de API criadas automaticamente pelo Firebase para seus apps do Firebase

O Firebase cria automaticamente chaves de API para seu projeto quando você realiza uma das seguintes ações:

  • cria um projeto do Firebase > Browser key criado automaticamente;
  • cria um app para Apple do Firebase > iOS key criado automaticamente;
  • cria um app Android do Firebase > Android key criado automaticamente.

Também é possível criar suas próprias chaves de API no Console do Google Cloud, por exemplo, para desenvolvimento ou depuração. Mais a frente nesta página, saiba mais sobre quando isso pode ser recomendado.

Como encontrar chaves de API

É possível ver e gerenciar todas as chaves de API do seu projeto no painel APIs e serviços > Credenciais no console do Google Cloud.

Outra opção é descobrir nos locais a seguir qual chave de API corresponde automaticamente a um app do Firebase. Por padrão, todos os apps do Firebase do seu projeto na mesma plataforma (Apple x Android x Web) usarão a mesma chave de API.

  • Apps para Apple do Firebase: encontre a chave de API com correspondência automática de um app no arquivo de configuração do Firebase, GoogleService-Info.plist, no campo API_KEY.

  • Apps Android do Firebase: encontre a chave de API com correspondência automática de um app no arquivo de configuração do Firebase, google-services.json, no campo current_key.

  • Apps da Web do Firebase: encontre a chave de API com correspondência automática de um app no objeto de configuração do Firebase, no campo apiKey.

Como usar uma chave de API

As chaves de API são usadas para identificar seu projeto do Firebase durante a interação com os serviços do Firebase/Google. Elas são usadas especificamente para associar solicitações de API ao projeto para cota e faturamento. Elas também são úteis para acessar dados públicos.

Por exemplo, é possível usar explicitamente uma chave de API transmitindo o valor dela para uma chamada da API REST como um parâmetro de consulta. Este exemplo mostra como é possível fazer uma solicitação para o encurtador de link da API Dynamic Links:

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

Quando seu app faz uma chamada para uma API do Firebase, ele verifica automaticamente a chave da API do projeto no arquivo/objeto de configuração do Firebase. No entanto, é possível definir suas chaves de API usando um mecanismo diferente, incluindo variáveis de ambiente.

Aplicar restrições a chaves de API (recomendado)

Não é necessário tratar uma chave de API para serviços do Firebase como um secret, mas há alguns casos específicos (veja abaixo) em que é possível adotar medidas extras para proteger seu projeto do uso indevido da chave.

Reduzir cota em caso de uso de autenticação com base em senha

Se você usar o Firebase Authentication com senha e alguém conseguir sua chave de API, essa pessoa não terá acesso aos dados do Cloud Storage ou do banco de dados do projeto do Firebase, desde que essas informações estejam protegidas pelas regras de segurança do Firebase. No entanto, ela poderá usar a chave de API para acessar os endpoints de autenticação do Firebase e fazer solicitações de autenticação para o projeto.

Para reduzir a possibilidade de alguém usar uma chave de API de forma indevida para tentar um ataque de força bruta, é possível reduzir a cota padrão dos endpoints identitytoolkit.googleapis.com para refletir as expectativas normais de tráfego do seu app. Lembre-se de que, se você reduzir essa cota, e seu app ganhar muitos usuários, erros de login poderão acontecer até você aumentar a cota. É possível alterar as cotas da API do seu projeto no Console do Google Cloud.

Usar chaves de API restritas e separadas para tipos específicos de APIs

As chaves de API utilizadas para serviços do Firebase geralmente não precisam ser tratadas como secrets. Mesmo assim, tome algumas precauções extras com as chaves de API usadas para conceder acesso às APIs do Google Cloud que você ativou manualmente.

Se você usa uma API do Google Cloud (em qualquer plataforma) que não é ativada automaticamente pelo Firebase (ou seja, que você ativou por conta própria), considere criar chaves restritas e separadas para usar com essas APIs. Isso é importante se a API for de um serviço faturável do Google Cloud.

Por exemplo, se você utiliza as APIs Cloud Vision do Firebase ML no iOS, crie chaves de API separadas que serão usadas apenas para acessar essas APIs.

Ao usar chaves de API separadas e restritas para APIs que não são do Firebase, é possível girar ou substituir as chaves quando necessário e adicionar outras restrições às chaves de API, sem interromper o uso dos serviços do Firebase.

Usar chaves de API específicas do ambiente (recomendado)

Se você configurar diferentes projetos do Firebase para diferentes ambientes, como preparação e produção, é importante que cada instância do app interaja com o projeto do Firebase correspondente. Por exemplo, sua instância de app de teste nunca deve se comunicar com o projeto de produção do Firebase. Isso também significa que seu app de teste precisa usar chaves de API associadas ao projeto de teste do Firebase.

Para minimizar os problemas ao fazer alterações no código desde o desenvolvimento até o preparo e a produção, em vez de incluir chaves de API no próprio código, defina-as como variáveis de ambiente ou adicione-as a um arquivo de configuração.

Se você estiver usando o pacote do emulador local do Firebase para desenvolvimento com o Firebase ML, será preciso criar e aplicar uma chave de API exclusiva para depuração. As instruções para criar esse tipo de chave estão na documentação do Firebase ML.

Perguntas frequentes