Ir a la consola

Protege las credenciales de Cloud de tu app para iOS que implementa el Kit de AA

Si tu app para iOS usa una de las API de Cloud del kit de AA, antes de lanzarla a producción debes tomar algunas medidas adicionales para evitar que accedan a la API sin autorización.

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:

  1. Abre la página Credenciales de Cloud Console. Cuando se te indique, selecciona el proyecto que tiene el mismo nombre de tu proyecto de Firebase.

  2. Para cada clave de API de la lista, abre la vista de edición y, en la sección “Restricciones de claves”, agrega todas las API disponibles a la lista excepto la de Cloud Vision.

    Cuando configuras las restricciones de API de una clave de API, declaras en forma explícita las API a las que otorga acceso la clave. Según la configuración predeterminada, cuando la sección “Restricciones de la API” está vacía, se puede usar una clave de API a fin de acceder a cualquier API que esté habilitada para el proyecto.

Si bien las claves de API existentes no otorgarán acceso a los servicios de AA de la nube, seguirán funcionando para cualquier API que hayas habilitado o que se haya habilitado en forma automática cuando configuraste Firebase.

Ten presente que si a futuro habilitas cualquier API adicional, también debes agregarla a la lista de “Restricciones de la API” de la clave de API.

2. Crea una clave de API nueva para usarla con el kit de AA

A continuación, a fin de crear una clave de API nueva para usarla con el kit de AA y que solo admita llamadas a la API de Cloud Vision, haz lo siguiente:

  1. Regresa a la página Credenciales. Asegúrate de que esté seleccionado el proyecto de Firebase.

  2. Haz clic en Crear credenciales > Clave de API. Anota la clave de API nueva y, luego, haz clic en Restringir clave.

  3. En la sección “Restricciones de claves”, agrega solo la API de Cloud Vision a la lista.

Esta clave de API solo otorga acceso a la API de Cloud Vision y el Kit de AA puede utilizarla para acceder a modelos basados en la nube.

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, sigue estos pasos:

  1. Abre la página Cuotas de la API de Cloud Vision en Cloud Console. Cuando se te indique, selecciona el proyecto que tiene el mismo nombre de tu proyecto de Firebase.

  2. 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 API de Cloud con la clave de API del Kit de AA

Por último, configura el kit de AA en la app para usar tu clave de API nueva.

Debido a que la clave de API del kit de AA 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 del Kit de AA:

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.