Práticas recomendadas de segurança de APIs

As chaves de API são obrigatórias para apps e projetos que usam os SDKs e as APIs da Plataforma Google Maps. Para aumentar a segurança e facilitar o processo, proteja suas chaves de API ao criá-las.

Embora seja possível proteger as chaves de API depois, pode haver restrições diferentes dependendo de como elas são usadas. Atualizar ou substituir chaves em apps para dispositivos móveis (Android e iOS) é mais complicado, porque elas só serão substituídas quando todos os clientes atualizarem os aplicativos. Atualizar ou substituir chaves em apps de serviço da Web ou JavaScript é muito mais simples, mas exige um planejamento cuidadoso e uma operação rápida.

As práticas de segurança recomendadas ao produto específico da Plataforma Google Maps, como a API Maps JavaScript, estão listadas na seção Mais informações.

Como restringir suas chaves de API

Ao criar as chaves de API, use uma restrição de aplicativo e uma ou mais restrições de API.

  • As restrições de aplicativo limitam o uso de uma chave de API a uma plataforma específica (Android ou iOS) ou a determinados sites (endereço IP público e site). Somente um tipo de restrição pode ser adicionado a uma chave de API individual.

  • As restrições da API limitam o uso das chaves a um ou mais SDKs ou APIs da Plataforma Google Maps. Os pedidos para usar APIs ou SDKs associados a uma chave de API serão processados. É possível especificar quantas restrições de API forem necessárias para uma chave.

Se você não protegeu sua chave de API ao criá-la, gere outras chaves, restrinja-as e atualize todos os apps com as novas chaves. Embora o ideal seja uma chave por aplicativo para fins de segurança, é possível usar chaves restritas em vários apps, desde que os tipos de restrição não causem problemas de incompatibilidade com os apps que compartilham uma chave.

Se você restringir as chaves de API depois de criá-las, verifique se as restrições não interromperão nenhum dos seus apps atuais.

  1. Acesse a página Métricas do Console do Google Cloud.

  2. Selecione Mostrar filtros.

  3. Em Agrupados por, selecione Credencial. Você verá quais chaves de API são usadas com os Serviços do Google.

  4. Clique em Credentials.

  5. Desmarque todas as credenciais.

  6. Selecione a chave exibida e clique em OK.

  7. Em Agrupado por, selecione API. Você verá quais restrições de API são aplicadas à chave.

    Selecionar o Método de API em Agrupado por mostra qual tipo de restrição de app é mais adequado para uma chave.

Como definir uma restrição de app para uma chave de API

  1. Acesse a página Credenciais.
  2. Selecione a chave de API em que você quer definir uma restrição. A página de propriedades será exibida.

  3. Em Restrições de chave, selecione Restrições de aplicativo.

    Selecione um dos tipos de restrição e insira as informações solicitadas após a lista de restrições.

    Tipo de restrição Descrição
    Referenciadores HTTP Especifique um ou mais sites de referenciadores. Caracteres curinga são aceitos para autorizar todos os subdomínios (por exemplo, *.google.com aceita todos os sites que terminam em .google.com).
    Endereços IP Especifique um endereço IPv4 ou IPv6 ou uma sub-rede usando a notação CIDR. Como a solicitação do serviço da Web verifica e compara o endereço IP externo com a restrição da chave de API, use o endereço IP público do servidor.
    Apps Android Adicione a impressão digital do certificado de assinatura SHA-1 e o nome do pacote Android no arquivo AndroidManifest.xml.
    Apps iOS Abaixo dos tipos, selecione o identificador iOS correto na lista.
  4. Selecione Salvar.

Como definir uma restrição para uma chave de API

  1. Acesse a página Credenciais.

  2. Selecione a chave de API que você quer restringir. A página Restringir e renomear a chave de API é exibida.

  3. Em Restrições de API:

    • Clique em Restringir chave.

    • Clique na lista suspensa Selecionar APIs e escolha as APIs ou os SDKs que seu app acessará usando a chave de API.

      Se uma API ou um SDK não aparecer na lista, será preciso ativá-lo.

  4. Clique em Salvar.

    Após essa etapa, a restrição se tornará parte da definição de chave de API. Se você não enviar os detalhes corretos ou não clicar em "Salvar", a chave de API não será restringida. Para ver mais informações, consulte o guia Acessar uma chave de API da API ou do SDK específico em que você tem interesse.

Como excluir chaves de API não usadas

Antes de remover uma chave de API, verifique se ela não está sendo usada em produção. Se não houver tráfego bem-sucedido, a chave poderá ser removida.

Para excluir uma chave de API, faça o seguinte:

  1. Acesse a página Credenciais.

  2. Selecione a chave de API que você quer excluir.

  3. Clique no botão Excluir, na parte superior da página.

  4. Quando a caixa de diálogo Excluir credencial for exibida, selecione Excluir.

    A exclusão de uma chave de API leva alguns minutos para ser propagada. Depois, o tráfego que usa a chave de API excluída será rejeitado.

Outras maneiras de proteger suas APIs

Cuidado ao gerar novamente as chaves de API

Fazer isso cria uma nova chave que tem todas as restrições da antiga e inicia um timer de 24 horas para a desativação da chave de API anterior.

Durante esse período, a chave antiga e a nova são aceitas. Assim, você pode migrar seus apps para usar a nova chave. No entanto, todos os aplicativos que ainda usarem a chave antiga deixarão de funcionar após esse período.

  1. Acesse a página das chaves de API.

  2. Selecione Reverter para a chave anterior.

  3. Na caixa de diálogo Reverter, clique em Reverter chave.

Após o reversão, a versão "nova" da chave se torna a versão anterior, e um timer de desativação em 24 horas iniciará. É possível reverter entre esses dois valores até que você a gere novamente.

Ao fazer isso, você substituirá a antiga chave-valor inativa.

Como monitorar o uso da API

Para verificar o uso da chave de API, faça o seguinte:

  1. Acesse a página Métricas.

  2. Clique em Mostrar filtros.

  3. Em Agrupados por, selecione Método de API.

  4. Em Código de resposta, escolha 2xx para ver as solicitações bem-sucedidas nesta chave.

Se você detectar uso não autorizado, faça o seguinte:

  1. Restrinja suas chaves.

    Se a mesma chave for usada em vários apps, migre para várias chaves de API, de preferência usando chaves de API separadas para cada app.

  2. Se o problema persistir, gere novamente ou exclua suas chaves.

  3. Entre em contato com o suporte.

Como usar chaves de API separadas para cada app

Isso limita o escopo de cada chave. Se uma chave de API for comprometida, será possível excluir e revogá-la sem precisar atualizar suas outras chaves.

Como migrar para várias chaves de API

Para usar uma única chave de API exclusiva para cada app, em vez de uma chave para vários aplicativos, faça o seguinte:

  1. Identifique quais apps precisarão de novas chaves.

    • Os apps da Web são mais fáceis de atualizar, já que você controla todo o código. Atualize todas as chaves dos seus apps baseados na Web.
    • O processo é mais complexo em apps para dispositivos móveis, porque os clientes precisam atualizá-los antes de usar as novas chaves.
  2. Crie e restrinja as novas chaves.

    • Adicione uma restrição de aplicativo e pelo menos uma restrição de API.
  3. Adicione as novas chaves aos apps.

    • Em apps para dispositivos móveis, pode levar meses para que todos os usuários sejam atualizados para o app mais recente com a nova chave de API.

Métodos de proteção para apps com APIs Maps Web Service ou APIs Static Web

  • Armazenar chaves de API e chaves secretas de assinatura fora do código-fonte do seu app. Se você colocar suas chaves de API ou outras informações particulares em variáveis de ambiente ou incluir arquivos armazenados separadamente e, em seguida, compartilhar o código, as chaves de API ou as chaves secretas de assinatura não serão incluídos nos arquivos compartilhados.

  • Armazenar chaves de API ou chaves secretas de assinatura em arquivos fora da árvore de origem do aplicativo. Se você armazenar chaves de API ou outras informações particulares em arquivos, mantenha-os fora da árvore de origem do aplicativo e, portanto, do sistema de controle do código-fonte. Isso é especialmente importante se você usa um sistema de gerenciamento de código-fonte público, como o GitHub.

Métodos de proteção de apps para dispositivos móveis com APIs Web Service ou APIs Static Web

  • Use um servidor proxy. O servidor proxy oferece uma fonte sólida para interagir com a API apropriada da Plataforma Google Maps. Para mais informações sobre como usar um servidor proxy, consulte Living Vicariously: usar servidores proxy com as bibliotecas de cliente da API Google Data (/gdata/articles/proxy_setup), em inglês.

  • Ofusque ou criptografe a chave de API ou a chave secreta de assinatura. Isso complica a extração de chaves de API e outros dados particulares diretamente do aplicativo.

Mais informações

Estas tabelas listam as restrições de chave de API e as práticas recomendadas de segurança apropriadas para cada API, SDK ou serviço da Plataforma Google Maps.

Sites com APIs Maps JavaScript, Embed ou Static

API/SDK/serviço Restrição de aplicativo (1) Restrição de API (1) Práticas recomendadas
API Maps JavaScript (2) Restrição de referenciador de HTTP API Maps JavaScript
API Directions Service, API Maps JavaScript Restrição de referenciador de HTTP API Directions, API Maps JavaScript
API Distance Matrix Service, API Maps JavaScript Restrição de referenciador de HTTP API Distance Matrix, API Maps JavaScript
API Elevation Service, API Maps JavaScript Restrição de referenciador de HTTP API Elevation, API Maps JavaScript
API Geocoding Service, API Maps JavaScript Restrição de referenciador de HTTP API Geocoding, API Maps JavaScript
API Places Library, API Maps JavaScript Restrição de referenciador de HTTP API Places, API Maps JavaScript
API Maps Embed Restrição de referenciador de HTTP API Maps Embed
API Maps Static Restrição de referenciador de HTTP API Maps Static
API Street View Static Restrição de referenciador de HTTP API Street View Static

Apps e servidores que usam serviços da Web

API/SDK/serviço Restrição de aplicativo (1) Restrição de API (1) Práticas recomendadas
API Directions Restrição de endereço IP(4) API Directions
API Distance Matrix Restrição de endereço IP(4) API Distance Matrix
API Elevation Restrição de endereço IP(4) API Elevation
API Geocoding Restrição de endereço IP(4) API Geocoding
API Geolocation Restrição de endereço IP(4) API Geolocation
API Places (5) Restrição de endereço IP(4) API Places
API Roads Restrição de endereço IP(4) API Roads
API Time Zone Restrição de endereço IP(4) API Time Zone

Apps Android

API/SDK/serviço Restrição de aplicativo (1) Restrição de API (1) Práticas recomendadas
SDK do Maps para Android Restrição para Android SDK do Maps para Android
SDK do Places para Android Restrição para Android API Places

Apps iOS

API/SDK/serviço Restrição de aplicativo (1) Restrição de API (1) Práticas recomendadas
SDK do Maps para iOS Restrição para iOS SDK do Maps para iOS
SDK do Places para iOS Restrição para iOS API Places

1 Você pode usar uma chave de API sem restrição com qualquer API ou SDK da Plataforma Google Maps. No entanto, recomendamos que você restrinja suas chaves de API, principalmente nos seguintes cenários:

  • O ambiente de teste será ou está visível publicamente.

  • O app que usa uma chave de API está pronto para ser usado em um ambiente de produção.

2 Em apps para dispositivos móveis, é recomendável usar o SDK do Maps para Android e o SDK do Maps para iOS nativo.

3 Para a API Maps Static e a API Street View Static, além de uma chave de API, você precisa disponibilizar uma assinatura digital para exceder a cota diária de 25 mil carregamentos de mapa.

Se você assina suas solicitações, decida quantas solicitações não assinadas gostaria de permitir por dia e ajuste as cotas conforme necessário.

4 Restrições de IP podem ser impraticáveis em alguns cenários, como em aplicativos para dispositivos móveis e ambientes de nuvem que dependem de endereços IP dinâmicos. Ao usar APIs Maps Web Service nesses cenários, proteja seus apps com um servidor proxy ou ofuscação.

5 Em apps para dispositivos móveis, considere usar o SDK do Places para Android e o SDK do Places para iOS nativo.