Protégez vos identifiants cloud de l'application Firebase ML pour Apple

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

1. Réduire la portée des clés API existantes

Commencez par configurer 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 de modification.

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

    Lorsque vous configurez les restrictions d'API d'une clé API, vous déclarez explicitement les API auxquelles la clé a accès. Par défaut, lorsque l'option Ne pas restreindre la clé est sélectionnée dans la section Restrictions relatives aux API, une clé API peut être utilisée pour accéder à toutes les API activées pour le projet.

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

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

2. Créer une clé API à utiliser avec Firebase ML

Ensuite, créez une clé API pour Firebase ML qui n'autorise que les appels à l'API Cloud Vision:

  1. Revenez à la page Identifiants. Assurez-vous que votre projet Firebase est toujours sélectionné.

  2. Cliquez sur Créer des identifiants > Clé API. Notez la nouvelle clé API, puis cliquez sur Restreindre la clé.

  3. Dans la section Restrictions relatives aux API, sélectionnez Restreindre la clé, puis ajoutez à la liste uniquement l'API Cloud Vision.

Cette clé API n'autorise l'accès qu'à l'API Cloud Vision et peut être utilisée par Firebase ML pour accéder aux modèles cloud.

Pour atténuer les conséquences d'une clé compromise, vous devez réduire le quota par utilisateur de l'API Cloud Vision à partir de son paramètre par défaut. Pour ce faire :

  1. Ouvrez la page Quotas de l'API Cloud Vision de la console Google Cloud. Lorsque vous y êtes invité, sélectionnez votre projet.

  2. Dans la section Requêtes, définissez le quota Requêtes par minute et par utilisateur sur une valeur raisonnable pour votre application. Par exemple, si votre application implique d'importer une photo d'un document pour récupérer son texte, il est peu probable qu'un utilisateur le fasse plus d'une fois toutes les quelques secondes. Un quota de 30 à 40 requêtes par minute et par utilisateur est donc probablement approprié.

    Notez que dans ce contexte, "requêtes par utilisateur" fait référence aux requêtes provenant d'une seule adresse IP. Vous devrez peut-être en tenir compte si vous prévoyez que plusieurs utilisateurs utiliseront votre application en même temps derrière un NAT.

4. Appeler des API Cloud à l'aide de votre clé API Firebase ML

Enfin, dans votre application, configurez Firebase ML pour qu'il utilise votre nouvelle clé API.

Étant donné que la clé API Firebase ML permet un accès non authentifié à l'API Cloud Vision, il est important de la garder confidentielle pour éviter toute utilisation non autorisée et toute facturation à votre compte de facturation. Pour ce faire, vous devez vous abstenir d'inclure votre clé API dans le binaire de votre application. Au lieu de cela, au moment de l'exécution de l'application, vérifiez qu'un utilisateur connu est connecté, puis récupérez la clé API à partir d'un serveur.

Même si vous suivez ces pratiques, il est possible qu'une clé API soit compromise. Vous devez prendre des mesures pour atténuer les conséquences d'une clé compromise, comme réduire le quota par utilisateur de l'API comme décrit ci-dessus, implémenter des règles de rotation des clés et émettre des clés différentes pour différents groupes d'utilisateurs.

Une fois que votre application a acquis la clé API de manière sécurisée, spécifiez-la lorsque vous souhaitez appeler une API Cloud Firebase ML:

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];
}

En outre, vous devez suivre les conseils généraux de la section Sécuriser une clé API.

Étapes suivantes

Consultez la checklist de lancement pour savoir comment préparer le lancement de votre application lorsque vous utilisez d'autres fonctionnalités Firebase.