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. Assurez-vous que 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, lorsque l'API restrictions dispose de l'option Ne pas restreindre la clé, une clé API peut être utilisé pour accéder à toute API activée pour le projet.

Désormais, vos clés API existantes n'autoriseront plus l'accès aux services de ML cloud, mais chacune d'elles 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 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 vers 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 à l'API, sélectionnez Restreindre la clé, puis ajoutez lister 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 limiter les conséquences d'une clé dont la sécurité est compromise, vous devez réduire les le quota par utilisateur de l'API Cloud Vision par défaut. Pour ce faire :

  1. Ouvrez la page Quotas de l'API Cloud Vision 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 pensez que plusieurs aux utilisateurs d'utiliser 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 ne devez pas inclure votre clé API dans le binaire de votre application. Au moment de l'exécution de l'application, vérifiez plutôt qu'un qu'un utilisateur légitime est connecté, et ce n'est qu'à ce moment-là qu'il récupère la clé API sur 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 dont la sécurité est compromise, par exemple en réduisant le quota par utilisateur de l'API, comme décrit ci-dessus, en implémentant des stratégies de rotation des clés et en attribuant des clés différentes aux différents des 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 Sécuriser une clé API.

Étapes suivantes

Consultez la checklist avant lancement pour en savoir plus sur à préparer le lancement de votre application lorsque vous utilisez d'autres fonctionnalités Firebase.