Si tu app para Apple usa una de las APIs de Cloud de Firebase ML, antes de lanzarla a producción, debes tomar algunas medidas adicionales para evitar accesos no autorizados a las APIs.
1. Reduce el alcance de las claves de API existentes
Primero, a fin de configurar las claves de API existentes para inhabilitar el acceso a la API de Cloud Vision, haz lo siguiente:
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 APIs a las que deseas que tenga acceso la clave de API. Asegúrate de no incluir la API de Cloud Vision.
Cuando configuras las restricciones de API de una clave de API, declaras en forma explícita las APIs 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 servicios de AA de la nube, pero cada clave seguirá funcionando para las APIs que hayas agregado a su lista Restricciones de API.
Ten en cuenta que, si habilitas más APIs en el futuro, deberás agregarlas a la lista Restricciones de API de la clave de API correspondiente.
2. Crea una nueva clave de API para usarla con Firebase ML
A continuación, crea una clave de API nueva para Firebase ML que solo permita llamadas a la API de Cloud Vision:
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 API de Cloud Vision.
Esta clave de API solo otorga acceso a la API de Cloud Vision, y Firebase ML puede utilizarla para acceder a modelos basados en la nube.
3. Reduce la cuota de la API de Cloud Vision (recomendado)
Para mitigar las consecuencias de una clave comprometida, debes reducir la cuota por usuario de la API de Cloud Vision de su configuración predeterminada. Para ello, deberás hacer lo siguiente:
Abre la página Cuotas de la API de Cloud Vision en la consola de Google Cloud. Cuando se te solicite, selecciona tu proyecto.
En la sección Solicitudes, configura la cuota de Solicitudes por minuto por usuario en una cantidad razonable para tu app. Por ejemplo, si tu app implica subir una imagen de un documento para obtener su texto, es poco probable que un usuario lo haga más de una vez cada pocos segundos, por lo que es probable que una cuota entre 30 y 40 sea apropiada.
Ten en cuenta que, en este contexto, “solicitudes por usuario” alude a las solicitudes de una sola dirección IP. Es posible que debas considerar esta información si esperas que varios usuarios usen tu app al mismo tiempo detrás de un dispositivo NAT.
4. Llama a las APIs de Cloud con tu clave de API de Firebase ML
Por último, configura Firebase ML en tu app para usar tu clave de API nueva.
Debido a que la clave de API de Firebase ML admite el acceso no autenticado a la API de Cloud Vision, es importante que no compartas la clave para evitar que la utilicen sin autorización y que aparezcan cobros en tu cuenta de facturación. Para ello, no incluyas la clave de API en el contenido binario de tu app. En cambio, en el entorno de ejecución verifica que haya accedido un usuario de confianza y solo entonces recupera la clave de API desde un servidor.
Aun cuando se sigan estas recomendaciones, es posible que se comprometa una clave de API. Debes tomar medidas para mitigar las consecuencias de una clave comprometida, como reducir la cuota por usuario de la API con las instrucciones mencionadas anteriormente, implementar políticas de rotación de claves y emitir diferentes claves para distintos grupos de usuarios.
Una vez que tu app adquiera de manera segura la clave de API, especifica la siguiente clave cuando quieras llamar a una API de Cloud de Firebase ML:
Swift
if let cloudVisionKey = getYourApiKey() { // See note above about securing your API key
let options = VisionCloudDetectorOptions()
options.apiKeyOverride = cloudVisionKey
let cloudDetector = Vision.vision().cloudLandmarkDetector(options: options)
}
Objective-C
NSString *cloudVisionKey = [self getYourApiKey]; // See note above about securing your API key
if (cloudVisionKey != nil) {
FIRVisionCloudDetectorOptions *options =
[[FIRVisionCloudDetectorOptions alloc] init];
options.APIKeyOverride = cloudVisionKey;
FIRVisionCloudLandmarkDetector *landmarkDetector =
[vision cloudLandmarkDetectorWithOptions:options];
}
Además, debes aplicar las recomendaciones generales que aparecen en Cómo proteger una clave de API.
Próximos pasos
Consulta la lista de tareas del lanzamiento a fin de obtener información sobre cómo preparar tu app para lanzarla si usas otras funciones de Firebase.