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, avant de la lancer en production, vous devez prendre des mesures supplémentaires pour empêcher tout accès non autorisé à l'API.

1. Réduire le champ d'application 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 d'édition.

  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. Assurez-vous de 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, lorsqu'aucune restriction n'est sélectionnée dans la section Restrictions relatives aux API, 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 ne donneront pas accès aux services de ML dans le 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 devrez les ajouter à la liste des restrictions d'API pour la clé API concernée.

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

Créez ensuite 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 uniquement l'API Cloud Vision à la liste.

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

Pour limiter les conséquences d'une clé compromise, vous devez réduire le quota par utilisateur de l'API Cloud Vision par rapport à 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 permet d'importer la photo d'un document pour en récupérer le texte, il est peu probable qu'un utilisateur effectue cette opération plus d'une fois toutes les quelques secondes. Un quota de 30 à 40 devrait donc être suffisant.

    Notez que, dans ce contexte, "demandes par utilisateur" fait référence aux demandes 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 les API Cloud à l'aide de votre clé API Firebase ML

Enfin, dans votre application, configurez Firebase ML pour utiliser 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 tout débit sur votre compte de facturation. Pour ce faire, vous devez éviter d'inclure votre clé API dans le binaire de votre application. Au lieu de cela, lors de l'exécution de l'application, vérifiez qu'un utilisateur connu et fiable est connecté, puis récupérez la clé API à partir d'un serveur.

Même en respectant 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, par exemple en réduisant le quota par utilisateur de l'API comme décrit ci-dessus, en mettant en œuvre des règles de rotation des clés et en émettant différentes clés 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];
}

De plus, 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 votre application au lancement lorsque vous utilisez d'autres fonctionnalités Firebase.