Si su aplicación de Apple utiliza una de las API en la nube de Firebase ML, antes de iniciar su aplicación en producción, debe tomar algunas medidas adicionales para evitar el acceso no autorizado a la API.
1. Reducir el alcance de las claves API existentes
Primero, configure sus claves API existentes para no permitir el acceso a la API de Cloud Vision:
Abra la página Credenciales de la consola de Google Cloud. Cuando se le solicite, seleccione su proyecto.
Para cada clave API existente en la lista, abra la vista de edición.
En la sección Restricciones de API , seleccione Restringir clave y luego agregue a la lista todas las API a las que desea que tenga acceso la clave API. Asegúrese de no incluir la API de Cloud Vision.
Cuando configuras las restricciones de API de una clave API, estás declarando explícitamente las API a las que tiene acceso la clave. De forma predeterminada, cuando la sección Restricciones de API tiene seleccionada la clave No restringir , se puede usar una clave API para acceder a cualquier API que esté habilitada para el proyecto.
Ahora, sus claves API existentes no otorgarán acceso a los servicios de aprendizaje automático en la nube, pero cada clave seguirá funcionando para cualquier API que haya agregado a su lista de restricciones de API .
Tenga en cuenta que si habilita API adicionales en el futuro, debe agregarlas a la lista de restricciones de API para la clave API aplicable.
2. Cree una nueva clave API para usar con Firebase ML
A continuación, cree una nueva clave API para Firebase ML que solo permita llamadas a la API de Cloud Vision:
Regrese a la página de Credenciales . Asegúrese de que su proyecto de Firebase todavía esté seleccionado.
Haga clic en Crear credenciales > Clave API . Tome nota de la nueva clave API y luego haga clic en Restringir clave .
En la sección Restricciones de API , seleccione Restringir clave y luego agregue a la lista solo la API de Cloud Vision.
Esta clave API otorga acceso solo a la API de Cloud Vision y Firebase ML puede usarla para acceder a modelos basados en la nube.
3. Recomendado: Reducir la cuota de API de Cloud Vision
Para ayudar a mitigar las consecuencias de una clave comprometida, debe reducir la cuota por usuario de la API de Cloud Vision desde su configuración predeterminada. Para hacerlo:
Abra la página Cuotas de API de Cloud Vision de la consola de Google Cloud. Cuando se le solicite, seleccione su proyecto.
En la sección Solicitudes , establezca la cuota de Solicitudes por minuto por usuario en algo razonable para su aplicación. Por ejemplo, si su aplicación implica cargar una imagen de un documento para recuperar su texto, es poco probable que un usuario lo haga más de una vez cada pocos segundos, por lo que una cuota de 30 a 40 probablemente sería segura.
Tenga en cuenta que en este contexto "solicitudes por usuario" se refiere a solicitudes de una única dirección IP. Es posible que deba considerar esto si espera que varios usuarios utilicen su aplicación al mismo tiempo detrás de una NAT.
4. Llame a las API de la nube usando su clave API de Firebase ML
Finalmente, en tu aplicación, configura Firebase ML para usar tu nueva clave API.
Debido a que la clave API de Firebase ML permite el acceso no autenticado a la API de Cloud Vision, es importante mantener la clave confidencial para evitar el uso no autorizado y cargos en su cuenta de facturación. Para hacerlo, debes abstenerte de incluir tu clave API en el binario de tu aplicación. En su lugar, durante el tiempo de ejecución de la aplicación, verifique que un buen usuario conocido haya iniciado sesión y, solo entonces, recupere la clave API de un servidor.
Incluso cuando se siguen estas prácticas, es posible que una clave API se vea comprometida. Debe tomar medidas para ayudar a mitigar las consecuencias de una clave comprometida, como reducir la cuota por usuario de la API como se describe anteriormente, implementar políticas de rotación de claves y emitir diferentes claves para diferentes grupos de usuarios.
Una vez que tu aplicación haya adquirido de forma segura la clave API, cuando quieras llamar a una API de Firebase ML Cloud, especifica la clave:
Rápido
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)
}
C objetivo
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 seguir los consejos generales que aparecen en Cómo asegurar una clave API .
Próximos pasos
Consulta la lista de verificación de inicio para obtener información sobre cómo preparar tu aplicación para iniciarse cuando usas otras funciones de Firebase.