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. Isso só pode ser feito com Firebase Security Rules (para controlar quais usuários finais podem acessar recursos) e Firebase App Check (para controlar quais apps podem acessar 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, é necessário analisar e aplicar as restrições e os limites adequados.

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 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 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 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 fazer uma solicitação para a API com encurtador de links Dynamic Links:

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

Quando o app faz uma chamada para uma API do Firebase que exige uma chave de API fornecida pelo cliente para dispositivos móveis/Web, ele procura automaticamente a chave de API do projeto no arquivo/objeto de configuração do Firebase. No entanto, é possível fornecer chaves de API para o app usando um mecanismo diferente, incluindo variáveis de ambiente.

Analisar e aplicar as restrições adequadas às chaves de API (recomendado)

Não é necessário tratar uma chave de API para serviços do Firebase como um secret, mas é importante analisar e aplicar as restrições e os limites, conforme descrito nesta seção.

Analisar as APIs adicionadas automaticamente à lista de permissões das chaves de API do Firebase

Quando o Firebase cria uma chave de API no seu projeto, adicionamos automaticamente "Restrições de API" a essa chave. As APIs adicionadas a essa lista de permissões são relacionadas ao Firebase e exigem que o cliente forneça uma chave de API com a chamada. A maioria das APIs necessárias para o uso dos serviços do Firebase não precisa estar na lista de permissões das chaves de API.

Como o Firebase adiciona as APIs necessárias para todos os serviços do Firebase, a lista de permissões de uma chave de API pode incluir APIs de produtos que você não usa. É possível remover APIs da lista de permissões, mas é preciso ter muito cuidado para não remover as APIs necessárias para o Firebase e os serviços do Firebase que você usa. Consulte a lista de APIs relacionadas ao Firebase que precisam estar na lista de permissões de cada serviço/produto. Caso contrário, você vai receber erros ao fazer chamadas para os serviços do Firebase.

Reduzir cota em caso de uso de Authentication com base em senha

Se você usar o Firebase Authentication com senha e alguém conseguir sua chave de API, essa pessoa não vai ter acesso aos dados do banco de dados ou do Cloud Storage do projeto do Firebase desde que essas informações estejam protegidas pelas regras de segurança do Firebase Security Rules. 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 separadas e restritas para qualquer serviço que não seja do Firebase

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 com outras APIs Google Cloud.

Se você usa uma API Google Cloud (em qualquer plataforma) que não é para um serviço/produto do Firebase, recomendamos criar chaves de API 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ê usa Firebase ML e as APIs Cloud Vision 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 Firebase Local Emulator Suite para desenvolvimento com o Firebase ML, será preciso criar e usar uma chave de API somente para depuração. As instruções para criar esse tipo de chave estão na documentação do Firebase ML.

Perguntas frequentes e solução de problemas

Perguntas frequentes

Solução de problemas