Protege las credenciales de Cloud de tu app para Android con el Kit de AA

Si tu app para Android 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.

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 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 Configuraciones. 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 “Configuraciones” 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 el alcance 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 Cloud Console.

  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.

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 kit de AA puede usar esta clave de API para acceder a los servicios en la nube 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 Cloud Console.
    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, crea uno desde Archivo > Nuevo > Otro > Archivo de manifiesto de Android 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 el kit de AA 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 —la clave de depuración— solo en las compilaciones de depuración:

    FirebaseVisionCloudDetectorOptions.Builder optionsBuilder =
            new FirebaseVisionCloudDetectorOptions.Builder();
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch();
    }
    
    // Set other options. For example:
    optionsBuilder.setModelType = FirebaseVisionCloudDetectorOptions.STABLE_MODEL;
    // ...
    
    // And lastly:
    FirebaseVisionCloudDetectorOptions options = optionsBuilder.build();
    FirebaseVision.getInstance().getVisionCloudLabelDetector(options).detectInImage(....)
    

Próximos pasos

Consulta la lista de tareas para el inicio a fin de obtener información sobre cómo preparar la app para iniciarla si usas otras funciones de Firebase.

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.