Obtén más información para usar y administrar las claves de API para Firebase
Una clave de API es una string única que se usa para enrutar solicitudes a tu proyecto de Firebase cuando interactúas con los servicios de Google y Firebase. En esta página, se describe la información básica sobre las claves de API y las prácticas recomendadas para usar y administrar claves de API con apps de Firebase.
Información general sobre las claves de API y Firebase
Las claves de API para Firebase son diferentes de las típicas claves de API
A diferencia de lo que sucede con las claves de API, las claves de API para los servicios de Firebase no
se usan con el fin de controlar el acceso a los recursos de backend. Esto solo se puede realizar con
las reglas de seguridad de Firebase (para controlar qué usuarios pueden acceder a los recursos) y la Verificación de aplicaciones (para
controlar qué apps pueden acceder a los recursos).
Por lo general, debes proteger de manera meticulosa las claves de API (por ejemplo,
mediante un servicio de Vault o configurando las claves como variables de entorno). Sin embargo,
sí se pueden incluir las claves de API para los servicios de Firebase en el código o en los archivos de configuración
registrados.
Si bien es seguro incluir las claves de API de los servicios de Firebase en el código, existen
algunos casos específicos en los que debes aplicar límites a las
claves de API; por ejemplo, si usas el AA de Firebase, Firebase Authentication
con el método de acceso con correo electrónico y contraseña, o una API de Google Cloud facturable. Obtén
más información sobre estos casos más adelante en esta página.
Creación de claves de API
Un proyecto de Firebase puede tener muchas claves de API, pero cada una de ellas solo
se puede asociar con un único proyecto de Firebase.
Firebase crea claves de API de forma automática para tu proyecto cuando realizas cualquiera de las siguientes acciones:
Crear un proyecto de Firebase > Browser key se crea automáticamente
Crear una app de Firebase para Apple > iOS key se crea automáticamente
Crear una app de Firebase para Android > Android key se crea automáticamente
Puedes ver y administrar todas las claves de API de tu proyecto en el panel API y servicios > Credenciales de Google Cloud Console.
También puedes verificar qué clave de API coincide de manera automática con una
app de Firebase en los siguientes lugares. De
forma predeterminada, todas las apps de Firebase del proyecto de la misma plataforma (Apple o
Android, o la Web) usarán la misma clave de API.
Apps de Firebase para Apple: Encuentra la clave de API de coincidencia automática con una app en el archivo
de configuración de Firebase, GoogleService-Info.plist, en el campo
API_KEY.
Apps de Firebase para Android: Encuentra la clave de API de coincidencia automática con una app en el archivo
de configuración de Firebase, google-services.json, en el campo
current_key.
Apps web para Firebase: Encuentra la clave de API de coincidencia automática con una app en el objeto de configuración de Firebase, en el campo apiKey.
Uso de claves de API
Las claves de API se usan para identificar tu proyecto de Firebase cuando interactúas con los servicios de Firebase o Google. En particular, se usan para asociar las solicitudes a la API con el proyecto a fin de calcular la cuota y la facturación. También son útiles para acceder a datos públicos.
Por ejemplo, puedes usar de manera explícita una clave de API pasando su valor a una llamada a la API de REST como un parámetro de consulta. En este ejemplo, se muestra cómo realizar una solicitud a la API de abreviación de vínculos de Dynamic Links:
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Cuando la app realiza una llamada a una API de Firebase, buscará de manera automática el objeto o archivo de configuración de Firebase para la clave de API del proyecto. Sin embargo, puedes configurar tus claves de API con un mecanismo diferente, lo que incluye variables de entorno.
Aplica restricciones a las claves de API (acción recomendada)
Si bien no es necesario tratar una clave de API para los servicios de Firebase como un
Secret, hay algunos casos específicos (revísalos a continuación) en los que te recomendamos
tomar medidas adicionales a fin de proteger tu proyecto del uso inadecuado de la clave de API.
Reduce la cuota si usas la autenticación con contraseña
Si usas Firebase Authentication con contraseñas y otra persona descubre tu clave
de API, no podrá acceder a ninguna de las bases de datos
de tu proyecto de Firebase ni a los datos de Cloud Storage siempre y cuando las
reglas de seguridad de Firebase protejan esos datos. Sin embargo, la persona podría usar la clave de API para acceder
a los extremos de autenticación de Firebase y realizar solicitudes de autenticación en
el proyecto.
A fin de reducir las posibilidades de que alguien use inadecuadamente una clave de API
para intentar un ataque de fuerza bruta, puedes reducir la cuota predeterminada de los extremos
identitytoolkit.googleapis.com con el fin de reflejar las expectativas normales de tráfico de la app. Ten en cuenta que, si reduces la cuota y la app
recibe usuarios de forma repentina, es posible que veas errores de acceso hasta que aumentes la cuota.
Puedes cambiar las cuotas de API del proyecto en
Google Cloud Console.
Usa claves de API independientes y restringidas para tipos específicos de API
Si bien las claves de API que se usan en los servicios de Firebase por lo general no necesitan tratarse
como Secrets, debes tomar algunas precauciones adicionales con las claves de API que se usan con el fin de otorgar
acceso a las API de Google Cloud que habilitaste de forma manual.
Si usas una API de Google Cloud (en cualquier plataforma) que Firebase no habilita de
manera automática (es decir, tú la habilitaste), es recomendable que crees claves de API independientes y restringidas para usarlas con esas API. Esto es
muy importante si la API es para un servicio facturable de Google Cloud.
Por ejemplo, si usas las API de Cloud Vision del AA de Firebase en iOS, debes
crear claves de API independientes solo para
acceder a las API de Cloud Vision.
Cuando usas claves de API independientes y restringidas para las API que no son de Firebase, puedes rotar o
reemplazar las claves cuando sea necesario y agregar restricciones adicionales a las claves
de API sin interrumpir el uso de los servicios de Firebase.
Expande esta sección para aprender a crear claves específicas de API
En estas instrucciones, se describe cómo crear una clave de API independiente y restringida para una
API falsa llamada Super Service API.
Paso 1: Configura tus claves de API existentes para inhabilitar el acceso a Super Service API
Abre la página Credenciales
de la consola de Google Cloud. Cuando se te solicite, selecciona tu proyecto.
Para cada clave de API existente en la lista, abre la vista de edición.
En la sección Restricciones de API, selecciona Restringir clave y, luego, agrega a
la lista todas las API a las que deseas que tenga acceso la clave de API. Asegúrate
de no incluir la API para la que estás creando una clave de API independiente
(en este ejemplo, Super Service API).
Cuando configuras las restricciones de API de una clave de API, declaras en forma
explícita las API a las que tiene acceso la clave. De forma predeterminada, cuando la
sección Restricciones de API tiene seleccionada la opción No restringir clave,
se puede usar una clave de API a fin de acceder a cualquier API que esté habilitada para el proyecto.
Ahora tus claves de API existentes no otorgarán acceso a Super Service API, pero
cada clave seguirá funcionando para las API que hayas agregado a su
lista Restricciones de API.
Paso 2: Crea y usa una nueva clave de API para acceder a Super Service API
Regresa a la página
Credenciales. Asegúrate de que esté seleccionado el proyecto de Firebase.
Haz clic en Crear credenciales > Clave de API. Anota la clave de API nueva y, luego,
haz clic en Restringir clave.
En la sección Restricciones de API, selecciona Restringir clave y, luego, agrega a la
lista solo la Super Service API.
Esta nueva clave de API otorga acceso únicamente a Super Service API.
Configura tu app y tus servicios para usar la clave de API nueva.
Usa claves de API específicas del entorno (acción recomendada)
Si configuras diferentes proyectos de Firebase para entornos distintos, como la etapa de pruebas y la producción, es importante que cada instancia de la app interactúe con su proyecto de Firebase correspondiente. Por ejemplo, la instancia de etapa de pruebas de la app nunca debe comunicarse con el proyecto de producción de Firebase. Esto también significa que la app de etapa de pruebas necesita usar las claves de API asociadas al proyecto de Firebase de etapa de pruebas.
A fin de reducir los problemas que generen cambios de código desde el desarrollo hasta la etapa de pruebas y la producción, en lugar de incluir las claves de API en el código, configúralas como variables de entorno o inclúyelas en un archivo de configuración.
Ten en cuenta que, si usas Firebase Local Emulator Suite para el desarrollo junto con el AA de Firebase, debes crear y usar una clave de API de solo depuración. Las instrucciones para crear ese tipo de clave se encuentran en los documentos sobre AA de Firebase.
Preguntas frecuentes
¿Cómo puedo determinar qué clave de API
está asociada con mi app de Firebase?
Puedes usar cualquiera de las siguientes opciones para determinar qué clave de API está
asociada con tu app de Firebase:
Obtén el objeto o archivo de configuración de Firebase para la app en cuestión y, luego,
busca su clave de API:
Apple: Descarga GoogleService-Info.plist y, luego, busca el campo
API_KEY
Android: Descarga google-services.json, busca la configuración de
la app que te interesa (con el nombre de paquete) y, luego, busca
el campo current_key
Web: Selecciona la opción Configuración y, luego, busca el campo apiKey
Firebase CLI
Para obtener el objeto o archivo de configuración de Firebase de la app que te interesa, ejecuta
el siguiente comando:
firebase apps:sdkconfig PLATFORMFIREBASE_APP_ID
PLATFORM (uno de los siguientes): IOS | ANDROID | WEB
FIREBASE_APP_ID: El identificador único asignado por Firebase para
la app de Firebase (busca el ID de tu app)
En la configuración de Firebase impresa de la app, busca su clave de API:
Apple: Busca el campo API_KEY
Android: Busca la configuración de la app que te interesa (con su
nombre de paquete) y, luego, busca el campo current_key
Web: Busca el campo apiKey
API de REST
Obtén el apiKeyId (UID) de la clave de API mediante una llamada al
extremo de la app que te interesa y, luego, pasa el valor
apiKeyId al paso siguiente.
Este keyString es el mismo valor que se puede encontrar en el artefacto de configuración
de la app (Apple |
Android |
Web).
¿Puedo tener
dos claves de API para la misma app de Firebase en mi objeto o archivo de configuración de
Firebase?
Apps de Firebase para Apple: Cada app tiene su propio archivo de configuración y puede tener
solo una clave de API.
Apps de Firebase para Android: Todas las apps para Android en el proyecto de Firebase
aparecen en el mismo archivo de configuración y cada app puede tener solo una clave de
API. Sin embargo, cada app de este archivo de configuración puede tener una clave diferente.
Apps web para Firebase: Cada app tiene su propio objeto de configuración y puede tener solo una clave de API.
Sin embargo, puedes usar varias claves de API con una sola app. Debes proporcionar un mecanismo para que tu app acceda a estas otras claves de API, por ejemplo, a través de una variable de entorno. El mecanismo para acceder a las otras claves de API no puede depender solo de las
claves de API que aparezcan en el objeto o archivo de configuración de Firebase.
¿Cómo sabe Firebase
qué clave de API debe coincidir con una app (como en el objeto o archivo de configuración
de Firebase)?
Si Firebase no encuentra ninguna clave restringida que coincida, mostrará en
el objeto o archivo de configuración iOS key en las apps para Apple, Android key en las
apps para Android y Browser key en las apps web (si estas claves existen
y no tienen restricciones de aplicaciones que eviten que coincidan con esa
app).
¿Puedo borrar de
manera manual el campo y la clave de API de mi objeto o archivo de configuración de Firebase?
Sí, puedes borrar de manera manual la clave de API de tu objeto o archivo de configuración. Sin embargo, debes proporcionar otro mecanismo para que la app acceda a una clave de API (como a través de una variable de entorno). De lo contrario, fallarán las llamadas a los servicios de Firebase.
¿Puedo editar de manera manual mi objeto o archivo de configuración de Firebase con diferentes claves de API?
Sí, puedes editar de manera manual un objeto o archivo de configuración para asociar una clave de API diferente con una app.
¿Puedo mover una clave de API de un proyecto de Firebase a otro?
No, una clave de API solo identifica un proyecto específico y no se puede mover a otro
proyecto.
Recibí un correo electrónico o un mensaje de error que indica que
mi clave de API no es válida. ¿Qué sucedió y cómo soluciono este problema?
Estas son algunas de las causas más comunes de claves de API no válidas:
La clave de API tiene “restricciones de clave de API” que se aplicaron a ella y hacen que no coincida con la app que intenta usar la clave (“restricciones de la aplicación”) o que no se pueda usar para la API a la que se está llamando (“restricciones de API”).
La clave de API se borró del proyecto en Google Cloud Console.
La clave de API no se creó para el ID del proyecto que aparece en el objeto o archivo de configuración de Firebase de la app.
¿Cómo soluciono
este error? “No se pudo recuperar el ID de medición de esta app de Firebase desde el
servidor”.
Es probable que la clave de API que usa tu aplicación web tenga aplicadas “restricciones de API”. Si este es el caso, asegúrate de que la API de Management de Firebase esté en la lista de API permitidas.
¿Qué sucede si
borro una clave de API que aparece en la consola de Google Cloud?
Si borras una clave de API que usa una app, fallarán las llamadas a la API de esa app. Es posible que recibas informes, correos electrónicos o mensajes de error que indiquen que estás intentando usar una clave de API no válida.
Si borras una clave de API, este cambio es permanente y no se puede deshacer.