Proteja las credenciales de la nube de su aplicación Apple de Firebase ML

Si su aplicación de Apple usa 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 de API existentes para no permitir el acceso a la API de Cloud Vision:

  1. Abra la página Credenciales de Google Cloud Console. Cuando se le solicite, seleccione su proyecto.

  2. Para cada clave de API existente en la lista, abra la vista de edición.

  3. 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 de API. Asegúrese de no incluir la API de Cloud Vision.

    Cuando configura las restricciones de API de una clave API , está declarando explícitamente las API a las que tiene acceso la clave. De forma predeterminada, cuando la sección Restricciones de la API tiene seleccionada la opción No restringir clave , se puede usar una clave de API para acceder a cualquier API que esté habilitada para el proyecto.

Ahora, sus claves de 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 de API aplicable.

2. Cree una nueva clave API para usar con Firebase ML

A continuación, cree una nueva clave de API para Firebase ML que solo permita llamadas a la API de Cloud Vision:

  1. Vuelva a la página Credenciales . Asegúrate de que tu proyecto de Firebase aún esté seleccionado.

  2. Haga clic en Crear credenciales > Clave de API . Tome nota de la nueva clave API, luego haga clic en Restringir clave .

  3. En la sección de restricciones de la API , seleccione Restringir clave y luego agregue a la lista solo la API de Cloud Vision.

Esta clave de API otorga acceso solo a la API de Cloud Vision y puede ser utilizada por Firebase ML para acceder a modelos basados ​​en la nube.

Para ayudar a mitigar las consecuencias de una clave comprometida, debe reducir la cuota por usuario de la API de Cloud Vision de su configuración predeterminada. Para hacerlo:

  1. Abra la página Cuotas de API de Cloud Vision de Google Cloud Console. Cuando se le solicite, seleccione su proyecto.

  2. 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-40 probablemente sea segura.

    Tenga en cuenta que, en este contexto, "solicitudes por usuario" se refiere a solicitudes de una sola dirección IP. Es posible que deba considerar esto si espera que varios usuarios usen su aplicación al mismo tiempo detrás de un NAT.

4. Llame a las API de Cloud usando su clave de API de Firebase ML

Finalmente, en su aplicación, configure Firebase ML para usar su nueva clave de API.

Debido a que la clave de la API de Firebase ML permite el acceso no autenticado a la API de Cloud Vision, es importante mantener la confidencialidad de la clave para evitar el uso no autorizado y los cargos en su cuenta de facturación. Para hacerlo, debe abstenerse de incluir su clave API en el binario de su aplicación. En su lugar, en 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 observan 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 su aplicación haya adquirido la clave de API de manera segura, cuando desee llamar a una API de Firebase ML Cloud, especifique 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, debe seguir los consejos generales en Protección de una clave de API .

Próximos pasos

Consulte la lista de verificación de lanzamiento para obtener información sobre cómo preparar su aplicación para que se lance cuando use otras funciones de Firebase.