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.
-
Restringe tus claves de API. Puedes proteger mejor tu clave de API si la restringes a direcciones IP, URL de referencia, apps para dispositivos móviles o API específicas, ya que esto reduce significativamente el impacto de la vulneración de una clave.
A fin de especificar las restricciones de aplicaciones y API para una clave desde la consola, abre la página Credenciales y crea una clave de API nueva con la configuración que desees, o bien edita los ajustes de una clave de API existente. Consulta la sección Cómo restringir las claves de API para obtener todos los detalles.
- Usa claves de API independientes para diferentes apps. Esto limita el alcance de cada clave. Si una clave de API fue vulnerada, puedes borrarla y revocarla sin necesidad de actualizar las otras claves.
- Borra las claves de API innecesarias.
Para borrar una clave de API, haz lo siguiente:
- Ve al panel de credenciales.
- Selecciona la clave de API que deseas borrar.
- Haz clic en el botón Borrar ubicado cerca de la parte superior de la página.
- Cuando aparezca la ventana emergente Borrar credencial, haz clic en BORRAR.
-
Ten cuidado cuando vuelvas a generar las claves de API. Si el tiempo necesario para migrar tus apps de la clave de API anterior a la nueva supera las 24 horas, las instancias que no se actualicen se romperán, ya que hacen referencia a la clave anterior, que se destruye 24 horas después de que se genere la nueva.
Cuando vuelves a generar una clave de API, sucede lo siguiente:
- Se obtiene una clave nueva.
- La clave nueva recibe todas las restricciones de la clave anterior.
- Comienza una ventana de 24 horas, que marca la cantidad de tiempo hasta que se destruye la clave anterior.
-
Supervisa el uso de tu API para detectar anomalías. Si observas un uso no autorizado, rota tus claves y notifica a Google al respecto.
Antes de rotar una clave, copia en un archivo las restricciones asociadas a esta para no perderlas.
-
En las apps que usan las API de Google Maps para servicio web o las API web estáticas, utiliza los siguientes métodos a fin de proteger tu apps y claves de API:
- No incorpores claves de API ni secretos de firma directamente en el código. En lugar de incorporar claves de API o cualquier otra información privada directamente en el código de tu aplicación, colócalos en variables de entorno o en archivos de inclusión que se almacenen por separado de la mayor parte del código, fuera del repositorio fuente de tu aplicación. Si compartes tu código, las claves de API o los secretos de firma no se incluirán en los archivos compartidos.
- No almacenes claves de API ni secretos de firma en archivos dentro del árbol fuente de tu aplicación. Si almacenas claves de API o cualquier otra información privada en archivos, guárdalos fuera del árbol fuente de tu aplicación para ayudar a garantizar que tus claves o cualquier otra información privada no terminen en tu sistema de control de código fuente. Esto es muy importante si usas un sistema de administración de código fuente público como GitHub.
- Revisa tu código antes de lanzarlo de forma pública. Asegúrate de que tu código no contenga claves de API, secretos de firma ni ninguna otra información privada antes de mostrarlo públicamente.
-
En las apps para dispositivos móviles que usan las API de servicio web o las API web estáticas, considera una o más de las siguientes técnicas para proteger aún más tus claves de API o secretos de firma:
-
Utiliza un servidor proxy. El servidor proxy brinda una fuente sólida para interactuar con la API de Google Maps Platform apropiada. 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.
- 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.
-
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:
- Ve al panel de credenciales.
- Selecciona la clave de API para la que deseas establecer una restricción. Aparecerá la página de propiedades de la clave de API.
- 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 engoogle.com
, comohttps://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.
- 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:
- Ve al panel de credenciales.
- Selecciona la clave de API que deseas restringir.
Aparecerá la página Restringir y cambiar nombre de la clave de API. - 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).
- 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
Apps y servidores que usan servicios web
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.
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.