Prácticas recomendadas relacionadas con las claves de API

Las claves de API son necesarias para las apps y los proyectos que usan las API y los SDK de Google Maps Platform. Este documento explica el uso previsto de las claves de API, la forma de protegerlas como lo harías con otras credenciales y qué restricciones son adecuadas para tus proyectos.

¿Qué son las claves de API?

Las claves de API son credenciales centradas en el proyecto que tienen dos objetivos:

  • Identificación del proyecto
    Identifica la app o el proyecto que realiza una llamada a la API o al SDK.
  • Autorización del proyecto
    Comprueba si la app que realiza la llamada tiene acceso para llamar a la API o al SDK, y si los habilitó en el proyecto.

Cuando se crea una clave de API, se la asocia a un proyecto. Mediante la identificación del proyecto que realiza la llamada, una clave de API permite que se asocie la información de uso con ese proyecto y ayuda a garantizar que se rechacen las llamadas de otros proyectos.

Cómo proteger las claves de API

Debes proteger las claves de API de tu aplicación para todos los productos de Google Maps Platform que usa tu aplicación. A fin de protegerlas, puedes especificar restricciones y también implementar las prácticas recomendadas que sean apropiadas para las API de Google Maps Platform en tu aplicación. Si expones credenciales no seguras de manera pública, es posible que se produzca un uso no deseado, lo que podría generar cargos inesperados en tu cuenta.

En las siguientes prácticas, se describen estrategias para ayudarte a proteger tus claves de API. Las recomendaciones aplicables para un producto individual de Google Maps Platform, como la API de Maps JavaScript, se enumeran en la sección Restricciones y prácticas recomendadas para las claves de API.

Cómo restringir las claves de API

Las claves de API son credenciales y debes administrarlas con cuidado. Como mínimo, sigue las recomendaciones que aparecen a continuación para proteger tus claves y asegúrate de que se apliquen restricciones a fin de reducir el impacto de las claves de API vulneradas.

Puedes restringir una clave de API mediante la especificación de una restricción de aplicaciones o una o más restricciones de API.

Las restricciones de aplicaciones limitan el uso de las claves de API a sitios específicos (dirección IP y sitio web) o plataformas específicas (iOS y Android). Puedes seleccionar como máximo una restricción de esta categoría (consulta API de Google Maps Platform por plataforma).

Las restricciones de API limitan el uso de las claves de API a uno o más SDK o API de Google Maps Platform. Se procesarán las solicitudes para usar las API o los SDK asociados con una clave de API, pero aquellas que se realicen a una API o un SDK no asociados con una clave no se podrán completar. Para una clave de API, puedes especificar tantas restricciones de API como sea necesario. Asegúrate de que las API o los SDK asociados con una clave de API admitan la restricción de aplicaciones establecida para esa clave de API.

A fin de establecer una restricción de aplicaciones para una clave de API, haz lo siguiente:

  1. Ve al panel de credenciales.
  2. Selecciona la clave de API para la que deseas establecer una restricción. Aparecerá la página de propiedades de la clave de API.
  3. En Restricciones de clave, selecciona Restricciones de aplicaciones.
    Selecciona uno de los tipos de restricción y proporciona la información solicitada a partir de la lista de restricciones.
    Tipo de restricción Descripción
    URL de referencia HTTP

    Acepta solicitudes de la lista de sitios web que proporciones.

    Debajo de los tipos, especifica uno o más sitios web con URL de referencia. Se aceptan caracteres comodín para nombrar sitios web similares. Por ejemplo, *.google.com acepta todos los sitios que terminan en google.com, como https://developers.google.com.

    Direcciones IP

    Acepta solicitudes de la lista de direcciones IP de servidor web que proporciones.

    Debajo de los tipos, especifica una dirección IPv4 o IPv6, o una subred con notación CIDR (p. ej., 192.168.0.0/22). Si necesitas ingresar otra entrada, aparecerá un cuadro nuevo cuando termines de agregar la entrada anterior.

    Apps para Android

    Agrega el nombre de tu paquete y la huella digital del certificado de firma SHA-1 para restringir el uso a tu app para Android.

    Debajo de los tipos, agrega la huella digital del certificado de firma SHA-1 y el nombre del paquete de Android que figura en tu archivo AndroidManifest.xml.

    Apps para iOS

    Acepta solicitudes de la app para iOS con el identificador de paquete que proporciones.

    Debajo de los tipos, selecciona el identificador del paquete de iOS correspondiente de la lista.

  4. Haz clic en Guardar.
    La restricción pasa a formar parte de la definición de la clave de API después de este paso. Si no proporcionas los detalles adecuados o no haces clic en "Guardar", no se restringirá la clave de API (para obtener más información, consulta la guía Cómo obtener una clave de API para la API o el SDK específicos que te interesan).

A fin de establecer una restricción de API para una clave de API, haz lo siguiente:

  1. Ve al panel de credenciales.
  2. Selecciona la clave de API que deseas restringir.
    Aparecerá la página Restringir y cambiar nombre de la clave de API.
  3. En Restricciones de API, haz lo siguiente:
    • Haz clic en Restringir clave.
    • Haz clic en el menú desplegable Seleccionar API y selecciona las API o los SDK a los que deseas que tu aplicación tenga acceso con la clave de API (si las API o SDK no aparecen en la lista, debes habilitarlos).
  4. Haz clic en Guardar.
    La restricción pasa a formar parte de la definición de la clave de API después de este paso. Si no proporcionas los detalles adecuados o no haces clic en "Guardar", no se restringirá la clave de API (para obtener más información, consulta la guía Cómo obtener una clave de API para la API o el SDK específicos que te interesan).

Restricciones y prácticas recomendadas sobre las claves de API

En las siguientes tablas, se detallan las restricciones de claves de API y las prácticas recomendadas relevantes para cada API, SDK o servicio de Google Maps Platform.

Sitios web con API de Maps JavaScript, Maps Embed o Maps Static

API, SDK o servicio Restricción de aplicaciones(1) Restricción de API(1) Prácticas recomendadas
API de Maps JavaScript(2) Restricción de URL de referencia de HTTP API de Maps JavaScript
Servicio Directions, API de Maps JavaScript Restricción de URL de referencia de HTTP API de Directions, API de Maps JavaScript
Servicio Distance Matrix, API de Maps JavaScript Restricción de URL de referencia de HTTP API de Distance Matrix, API de Maps JavaScript
Servicio Elevation, API de Maps JavaScript Restricción de URL de referencia de HTTP API de Elevation, API de Maps JavaScript
Servicio Geocoding, API de Maps JavaScript Restricción de URL de referencia de HTTP API de Geocoding, API de Maps JavaScript
Places Library, API de Maps JavaScript Restricción de URL de referencia de HTTP API de Places, API de Maps JavaScript
API de Maps Embed Restricción de URL de referencia de HTTP API de Maps Embed
API de Maps Static Restricción de URL de referencia de HTTP API de Maps Static
API de Street View Static Restricción de URL de referencia de HTTP API de Street View Static

Apps y servidores que usan servicios web

API, SDK o servicio Restricción de aplicaciones(1) Restricción de API(1) Prácticas recomendadas
API de Directions Restricción de direcciones IP(4) API de Directions
API de Distance Matrix Restricción de direcciones IP(4) API de Distance Matrix
API de Elevation Restricción de direcciones IP(4) API de Elevation
API de Geocoding Restricción de direcciones IP(4) API de Geocoding
API de Geolocation Restricción de direcciones IP(4) API de Geolocation
API de Places(5) Restricción de direcciones IP(4) API de Places
API de Roads Restricción de direcciones IP(4) API de Roads
API de Time Zone Restricción de direcciones IP(4) API de Time Zone

Apps para Android

API, SDK o servicio Restricción de aplicaciones(1) Restricción de API(1) Prácticas recomendadas
SDK de Maps para Android Restricción de Android SDK de Maps para Android
SDK de Places para Android Restricción de Android API de Places

Apps para iOS

API, SDK o servicio Restricción de aplicaciones(1) Restricción de API(1) Prácticas recomendadas
SDK de Maps para iOS Restricción de iOS SDK de Maps para iOS
SDK de Places para iOS Restricción de iOS API de Places

1 Puedes usar una clave de API sin restricciones con cualquier API o SDK de Google Maps Platform. Sin embargo, te recomendamos enfáticamente que restrinjas tus claves de API, especialmente en los siguientes casos:

  • El entorno de pruebas es o será visible de forma pública.
  • La aplicación que usa una clave de API está lista para usarse en un entorno de producción.

2 En el caso de las aplicaciones para dispositivos móviles, considera usar el SDK de Maps para Android y el SDK de Maps para iOS nativos.

3 Para las API de Maps Static y de Street View Static, además de una clave de API, debes proporcionar unafirma digital si vas a exceder la cuota diaria de 25,000 cargas de mapa.

Nota: Los secretos compartidos que se usan para firmar requieren, al menos, el mismo nivel de seguridad que las claves de API que se usan con las API de Maps para servicio web.

Además, si necesitas firmar tus solicitudes de imagen de forma dinámica, hazlo del lado del servidor. Si tus apps se basan en la entrada del cliente para generar las imágenes estáticas, protégelas con una o más de las siguientes técnicas:

Si firmas tus solicitudes, también revisa cuántas sin firmar deseas permitir por día y ajusta tus cuotas de solicitudes sin firmar según corresponda.

4 Las restricciones de IP pueden resultar poco prácticas, como en aplicaciones para dispositivos móviles y entornos de nube que se basan en direcciones IP dinámicas. Cuando uses las API de Maps para servicio web en estos casos, protege tus apps con una o más de las siguientes técnicas:

5 En el caso de las aplicaciones para dispositivos móviles, considera usar el SDK de Places para Android y el SDK de Places para iOS nativos.