Protégez les informations d'identification Cloud de votre application Firebase ML Android

Si votre application Android utilise l'une des API cloud de Firebase ML, avant de lancer votre application en production, vous devez prendre quelques mesures supplémentaires pour empêcher tout accès non autorisé à l'API.

Pour vos applications de production, vous vous assurerez que seuls les clients authentifiés peuvent accéder aux services cloud. (Notez que seuls les appareils non root peuvent s'authentifier à l'aide de la méthode décrite.)

Ensuite, vous créerez une clé API de débogage uniquement que vous pourrez utiliser pour plus de commodité pendant les tests et le développement.

1. Enregistrez vos applications de production avec Firebase

Tout d'abord, enregistrez vos applications de production auprès de Firebase.

  1. Assurez-vous que vous disposez des signatures SHA-1 de votre application. Reportez-vous à Authentification de votre client pour savoir comment procéder.

  2. Accédez aux de votre projet dans la console Firebase, puis sélectionnez l'onglet Paramètres .

  3. Faites défiler jusqu'à la carte Vos applications , puis sélectionnez votre application Android.

  4. Ajoutez la signature SHA-1 de votre application aux informations de votre application.

2. Limitez la portée de vos clés API

Ensuite, configurez vos clés API existantes pour interdire l'accès à l'API Cloud Vision :

  1. Ouvrez la page Identifiants de la console Google Cloud. Lorsque vous y êtes invité, sélectionnez votre projet.

  2. Pour chaque clé API existante dans la liste, ouvrez la vue d'édition.

  3. Dans la section Restrictions API , sélectionnez Restreindre la clé , puis ajoutez à la liste toutes les API auxquelles vous souhaitez que la clé API ait accès. Assurez-vous de ne pas inclure l'API Cloud Vision.

    Lorsque vous configurez les restrictions API d'une clé API, vous déclarez explicitement les API auxquelles la clé a accès. Par défaut, lorsque la section Restrictions de l'API a la clé Ne pas restreindre sélectionnée, une clé API peut être utilisée pour accéder à n'importe quelle API activée pour le projet.

Désormais, vos clés API existantes n'accorderont pas l'accès aux services cloud ML, mais chaque clé continuera à fonctionner pour toutes les API que vous avez ajoutées à sa liste de restrictions d'API .

Notez que si vous activez des API supplémentaires à l'avenir, vous devez les ajouter à la liste des restrictions d'API pour la clé API applicable.

3. Créez et utilisez une clé API de débogage uniquement

Enfin, créez une nouvelle clé API à utiliser uniquement pour le développement. Firebase ML peut utiliser cette clé API pour accéder aux services Google Cloud dans des environnements où l'authentification des applications n'est pas possible, par exemple lors de l'exécution sur des émulateurs.

  1. Créez une nouvelle clé API à utiliser pour le développement :

    1. Ouvrez la page Identifiants de la console Google Cloud. Lorsque vous y êtes invité, sélectionnez votre projet.

    2. Cliquez sur Créer des informations d'identification > Clé API et prenez note de la nouvelle clé API. Cette clé permet l'accès à l'API à partir d'applications non authentifiées, alors gardez cette clé confidentielle .

  2. Pour garantir que la nouvelle clé API de débogage n'est pas divulguée avec votre application publiée, spécifiez la clé API de débogage dans un fichier manifeste Android utilisé uniquement pour les versions de débogage :

    1. Si vous ne disposez pas déjà d'un manifeste de débogage, créez-en un en cliquant sur Fichier > Nouveau > Autre > Fichier de manifeste Android et en sélectionnant debug dans les ensembles de sources cibles.

    2. Dans le manifeste de débogage, ajoutez la déclaration suivante :

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. Dans votre application, configurez Firebase ML pour utiliser la correspondance d'empreintes digitales de certificat pour authentifier votre client en production et pour utiliser les clés API (la clé de débogage) uniquement dans les versions de débogage :

    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)

    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);

Prochaines étapes

Consultez la liste de contrôle de lancement pour plus d'informations sur la préparation du lancement de votre application lorsque vous utilisez d'autres fonctionnalités de Firebase.