Prácticas recomendadas sobre la seguridad de la API

Las claves de API son necesarias para las apps y los proyectos que usan las API y los SDK de Google Maps Platform. Para obtener el máximo nivel de seguridad con el mínimo esfuerzo, protege tus claves de API cuando las crees.

Si bien es posible proteger las claves de API una vez creadas y en uso, puede haber diferentes restricciones según cómo se utilicen. Actualizar o reemplazar las claves en las apps para dispositivos móviles (iOS y Android) es lo más complicado, ya que las claves no se reemplazarán por completo hasta que todos los clientes actualicen sus apps. Actualizar o reemplazar las claves en las apps de JavaScript o de servicios web es mucho más sencillo, pero ello aún puede requerir una planificación cuidadosa y un trabajo rápido.

Las prácticas de seguridad correspondientes a un producto individual de Google Maps Platform, como la API de Maps JavaScript, se enumeran en la sección Más información.

Cómo restringir tus claves de API

Cuando creas tus claves de API por primera vez, debes restringirlas con una restricción de aplicaciones y una o más restricciones de API.

  • Las restricciones de aplicaciones limitan el uso de una clave de API a una plataforma específica (Android o iOS) o sitios específicos (dirección IP pública y sitio web). Solo se puede agregar un tipo de restricción de aplicaciones a una clave de API individual.

  • Las restricciones de API limitan el uso de las claves de API a uno o más SDK o API de Google Maps Platform. Solo se procesarán las solicitudes para usar las API o los SDK asociados con una clave de API. Puedes especificar tantas restricciones de API como sean necesarias para una clave de API determinada.

Si no protegiste tu clave de API al crearla, crea más claves de API y restríngelas. Luego, actualiza todas tus apps con las claves de API nuevas. Si bien lo ideal en términos de seguridad sería tener una clave por aplicación, puedes usar claves restringidas en varias apps, siempre y cuando los tipos de restricciones que se apliquen en la clave no causen problemas de incompatibilidad con las apps que comparten la clave.

Si restringes las claves de API después de crearlas, verifica su uso para asegurarte de que las restricciones no generen errores en ninguna de tus apps existentes.

  1. Ve a la página Métricas de Google Cloud Console.

  2. Selecciona Mostrar filtros.

  3. En Agrupado por, selecciona Credencial. Verás qué claves de API se utilizan con los servicios de Google.

  4. Haz clic en Credenciales.

  5. Anula la selección de todas las credenciales.

  6. Selecciona cada clave que se muestra y haz clic en Aceptar.

  7. En Agrupado por, selecciona API. Verás las restricciones de API que puedes aplicar en la clave.

    Si seleccionas Método de API en Agrupado por, es posible que obtengas indicios acerca del tipo de restricción de aplicaciones más adecuado para una clave.

Cómo configurar una restricción de aplicaciones para una clave de API

  1. Ve a la página 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 en la lista de restricciones.

    Tipo de restricción Descripción
    URL de referencia de HTTP Especifica uno o más sitios web con URL de referencia. Se aceptan caracteres de comodín para autorizar todos los subdominios (por ejemplo, *.google.com acepta todos los sitios que terminan en .google.com).
    Direcciones IP Especifica una dirección IPv4 o IPv6, o una subred con notación CIDR. Dado que una solicitud de servicio web comprueba la dirección IP externa y la compara con la restricción de la clave de API, usa la dirección IP pública del servidor.
    Apps para Android Agrega la huella digital de tu certificado de firma SHA-1 y el nombre de tu paquete de Android desde el archivo AndroidManifest.xml.
    Apps para iOS Debajo de los tipos, selecciona el identificador de paquete de iOS correspondiente en la lista.
  4. Selecciona Guardar.

Cómo configurar una restricción de API para una clave de API

  1. Ve a la página 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 los 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. (Si deseas obtener más información, consulta la guía Cómo obtener una clave de API correspondiente a la API o el SDK específicos de tu interés).

Cómo borrar claves de API sin usar

Antes de borrar una clave de API, asegúrate de que no se use en producción. Si no se genera el tráfico adecuado, es probable que sea seguro borrar la clave.

Para borrar una clave de API, haz lo siguiente:

  1. Ve a la página Credenciales.

  2. Selecciona la clave de API que deseas borrar.

  3. Selecciona el botón Borrar ubicado cerca de la parte superior de la página.

  4. Cuando aparezca el diálogo Borrar la credencial, selecciona Borrar.

    Borrar una clave de API por completo demora algunos minutos. Después de que se propague el cambio, se rechazará el tráfico que use la clave de API borrada.

Otras formas de proteger tus API

Ten cuidado cuando vuelvas a generar claves de API

Si vuelves a generar una clave de API, se crea una clave nueva con todas las restricciones de la clave anterior. Esta acción también inicia un timer de 24 horas para desactivar la clave de API anterior.

Durante este período, se aceptan la clave anterior y la nueva, lo que te brinda la posibilidad de migrar tus apps para usar la clave nueva. Sin embargo, cualquier app que aún use la clave de API anterior dejará de funcionar después de este período.

  1. Ve a la página Claves de API.

  2. Selecciona Revertir a la clave anterior.

  3. En el diálogo Revertir, haz clic en Revertir clave.

Cuando se revierte, la versión de la clave que antes era "nueva" se convierte en la versión anterior y se configura un nuevo timer de desactivación de 24 horas. Es posible revertir entre estos dos valores de la clave hasta que vuelvas a generarla.

Esta segunda regeneración reemplaza el valor de la clave inactiva anterior.

Cómo supervisar el uso de tu API

Para verificar el uso de tu clave de API, sigue estos pasos:

  1. Ve a la página Métricas.

  2. Haz clic en Mostrar filtros.

  3. En Agrupado por, selecciona Método de API.

  4. En Código de respuesta, selecciona 2xx para ver las solicitudes exitosas relacionadas con esta clave.

Si detectas un uso no autorizado, haz lo siguiente:

  1. Restringe tus claves

    Si se usa la misma clave en varias apps, migra a varias claves de API, preferentemente, mediante claves de API independientes para cada app.

  2. Si el uso no autorizado continúa, vuelve a generar o borra las claves afectadas.

  3. Comunícate con el equipo de asistencia.

Cómo usar claves de API independientes para cada app

Esto limita el alcance de cada clave. Si se vulneró una clave de API, puedes borrarla o regenerarla sin necesidad de actualizar tus otras claves de API.

Cómo migrar a varias claves de API

Si deseas migrar del uso de una clave de API para varias apps a una única clave de API para cada app, haz lo siguiente:

  1. Identifica las apps que necesitarán claves nuevas.

    • Las apps web son las más fáciles de actualizar, ya que controlas todo el código. Planifica la actualización de todas tus claves de apps basadas en la Web.
    • El proceso de las apps para dispositivos móviles es mucho más complejo, ya que tus clientes deben actualizar sus apps primero antes de que se puedan usar las claves nuevas.
  2. Crea y restringe las claves nuevas.

    • Agrega una restricción de aplicaciones y, al menos, una restricción de API.
  3. Agrega las claves nuevas a tus diferentes apps.

    • En el caso de las apps para dispositivos móviles, este proceso puede demorar meses, ya que todos los usuarios deben actualizar sus apps a la versión más reciente que tiene la nueva clave de API.

Métodos de protección de apps de las API de Google Maps para servicio web o las API web estáticas

  • Almacena claves de API y secretos de firma fuera del código fuente de tu aplicación. Si colocas tus claves de API o cualquier otra información privada en variables de entorno o incluyes archivos que se almacenan por separado y luego compartes tu código, las claves de API o los secretos de firma no se incluirán en los archivos compartidos.

  • Almacena claves de API o secretos de firma en archivos fuera del árbol fuentes de tu aplicación. Si almacenas claves de API o cualquier otra información privada en archivos, mantenlos fuera del árbol fuente de tu aplicación a fin de mantener las claves fuera del sistema de control del código fuente. Esto es particularmente importante si usas un sistema de administración de código fuente público, como GitHub.

Métodos de protección de apps para dispositivos móviles de las API de servicio web o API web estáticas

  • Utiliza un servidor proxy. Esto brinda una fuente sólida para interactuar con la API de Google Maps Platform adecuada. Para obtener más información sobre cómo usar un servidor proxy, consulta [Vivir a través de otro: Uso de servidores proxy con las bibliotecas cliente de las API de datos de Google](/gdata/articles/proxy_setup).

  • Ofusca o encripta la clave de API o el secreto de firma. Esto hace que sea complicado copiar las claves de API y otros datos privados directamente desde la aplicación.

Más información

En estas tablas, se enumeran las restricciones de las claves de API y las prácticas recomendadas para la seguridad de 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 que restrinjas tus claves de API, especialmente en los siguientes casos:

  • El entorno de pruebas es o será visible de manera 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 En el caso de las API de Maps Static y de Street View Static, además de una clave de API, debes proporcionar una firma digital para exceder la cuota diaria de 25,000 cargas de mapa.

Si firmas tus solicitudes, revisa cuántas de ellas 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 en algunos casos, como en aplicaciones para dispositivos móviles y entornos de nube que se basan en direcciones IP dinámicas. Cuando uses las API de Google Maps para servicio web en estas situaciones, protege tus apps mediante un servidor proxy o algún método de ofuscación.

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.