Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Protege las credenciales de Cloud de tu app para Android que implementa AA de Firebase

Si tu app para Android usa una de las API de Cloud de AA de Firebase, antes de lanzarla a producción, debes tomar algunas medidas adicionales para evitar accesos no autorizados a la API.

Para las apps de producción, asegúrate de que solo los clientes autenticados tengan acceso a los servicios en la nube. Ten presente que solo los dispositivos sin derechos de administrador pueden autenticarse con el método descrito.

Luego, deberás crear una clave de API solo para depuración que puedes usar para tu comodidad durante las pruebas y el desarrollo.

1. Registra tus apps de producción con Firebase

Primero, registra las apps de producción con Firebase.

La manera más rápida de hacerlo es vincular el proyecto de Firebase con el de Google Play. Puedes hacerlo desde la sección Integraciones (Integrations) de la configuración de tu proyecto en Firebase console.

Cuando vinculas los proyectos, las firmas SHA-1 de las apps de producción se importan al proyecto de Firebase, que puedes confirmar en la página de Configuración. Ten presente que cuando vinculas tus proyectos de Firebase y Google Play, se comparten datos como estadísticas y estadísticas de ingresos, fallas, etcétera.

Si no deseas compartir datos entre tus proyectos de Firebase y Google Play, en la página de “Configuración”, puedes especificar las firmas SHA-1 de las apps. Para obtener más información sobre cómo obtener las firmas SHA-1 de las apps, consulta cómo autenticar tu cliente.

2. Restringe los permisos de las claves de API

A continuación, configura las claves de API existentes para inhabilitar el acceso a la API de Cloud Vision:

  1. Abre la página Credenciales de Google Cloud Console. Cuando se te solicite, selecciona tu proyecto.

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

  3. 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 de Cloud Vision.

    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 servicios de AA de la nube, pero cada clave seguirá funcionando para las API que hayas agregado a su lista Restricciones de API.

Ten en cuenta que, si habilitas más API en el futuro, deberás agregarlas a la lista Restricciones de API de la clave de API correspondiente.

3. Crea y usa una clave de API solo para depuración

Por último, crea una clave de API nueva y úsala solamente en el desarrollo. El AA de Firebase puede usar esta clave de API para acceder a los servicios de Google Cloud en entornos donde la autenticación de la app no está disponible, por ejemplo, cuando se ejecuta en emuladores.

  1. Para crear una nueva clave de API y usarla en el desarrollo, haz lo siguiente:

    1. Abre la página Credenciales de Google Cloud Console. Cuando se te solicite, selecciona tu proyecto.

    2. Haz clic en Crear credenciales > Clave de API y anota la nueva clave de API. Esta clave habilita el acceso a la API desde apps no autenticadas, por lo tanto, no la compartas.

  2. Para asegurarte de que la nueva clave de API de depuración no se haya filtrado con la aplicación que lanzaste, especifica la clave de API de depuración en un archivo de manifiesto de Android que se utiliza solo para compilaciones de depuración:

    1. Si aún no tienes un manifiesto de depuración, debes crear uno. Para ello, haz clic en File > New > Other > Android Manifest File y selecciona debug en los conjuntos de orígenes de destino.

    2. Agrega la siguiente declaración en el manifiesto de depuración:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. En tu app, configura AA de Firebase a fin de usar la coincidencia de la huella digital del certificado para autenticar a tu cliente en producción y usar las claves de API, es decir, la clave de depuración, solo en las compilaciones de depuración:

    Java

    FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =
            new FirebaseVisionCloudImageLabelerOptions.Builder();
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch();
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f);
    // ...
    
    // And lastly:
    FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);

    Kotlin+KTX

    val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch()
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f)
    // ...
    
    // And lastly:
    val options = optionsBuilder.build()
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)

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.