Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Si su aplicación de Android usa una de las API en la nube de Firebase ML, antes de lanzar su aplicación en producción, debe tomar algunas medidas adicionales para evitar el acceso no autorizado a la API.

Para sus aplicaciones de producción, se asegurará de que solo los clientes autenticados puedan acceder a los servicios en la nube. (Tenga en cuenta que solo los dispositivos no rooteados pueden autenticarse mediante el método descrito).

Luego, creará una clave API solo de depuración que puede usar para su comodidad durante las pruebas y el desarrollo.

1. Registre sus aplicaciones de producción con Firebase

Primero, registre sus aplicaciones de producción con Firebase.

  1. Asegúrese de tener las firmas SHA-1 de su aplicación. Consulte Autenticación de su cliente para aprender cómo hacerlo.

  2. Vaya a su del proyecto en la consola de Firebase, luego seleccione la pestaña Configuración .

  3. Desplácese hacia abajo hasta la tarjeta Sus aplicaciones , luego seleccione su aplicación de Android.

  4. Agregue la firma SHA-1 de su aplicación a la información de su aplicación.

2. Restringe el alcance de tus claves API

A continuación, 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.

3. Cree y use una clave de API de solo depuración

Finalmente, cree una nueva clave de API para usar solo para el desarrollo. Firebase ML puede usar esta clave de API para acceder a los servicios de Google Cloud en entornos donde la autenticación de la aplicación no es posible, como cuando se ejecuta en emuladores.

  1. Cree una nueva clave de API que se utilizará para el desarrollo:

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

    2. Haga clic en Crear credenciales > Clave de API y tome nota de la nueva clave de API. Esta clave permite el acceso a la API desde aplicaciones no autenticadas, así que mantenga esta clave confidencial .

  2. Para asegurarse de que la nueva clave de API de depuración no se filtre con su aplicación lanzada, especifique la clave de API de depuración en un archivo de manifiesto de Android usado solo para compilaciones de depuración:

    1. Si aún no tiene un manifiesto de depuración, cree uno haciendo clic en Archivo > Nuevo > Otro > Archivo de manifiesto de Android y seleccionando debug de los conjuntos de origen de destino.

    2. En el manifiesto de depuración, agregue la siguiente declaración:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. En su aplicación, configure Firebase ML para usar la coincidencia de huellas dactilares de certificado para autenticar a su cliente en producción y para usar claves de API (la clave de depuración) solo en 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

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.