Cloud-Anmeldedaten Ihrer Firebase ML Apple-App schützen

Wenn Ihre Apple-App eine der Cloud-APIs von Firebase ML verwendet, sollten Sie vor der Einführung Ihrer App in der Produktionsumgebung einige zusätzliche Schritte unternehmen, um unbefugten API-Zugriff zu verhindern.

1. Bereich vorhandener API-Schlüssel einschränken

Konfigurieren Sie zuerst Ihre vorhandenen API-Schlüssel so, dass der Zugriff auf die Cloud Vision API nicht mehr möglich ist:

  1. Öffnen Sie in der Google Cloud-Konsole die Seite Anmeldedaten. Wählen Sie Ihr Projekt aus, wenn Sie dazu aufgefordert werden.

  2. Öffnen Sie für jeden vorhandenen API-Schlüssel in der Liste die Bearbeitungsansicht.

  3. Wählen Sie im Abschnitt API-Einschränkungen die Option Schlüssel einschränken aus und fügen Sie der Liste alle APIs hinzu, auf die der API-Schlüssel Zugriff haben soll. Die Cloud Vision API darf nicht enthalten sein.

    Wenn Sie die API-Einschränkungen eines API-Schlüssels konfigurieren, deklarieren Sie explizit die APIs, auf die der Schlüssel Zugriff hat. Wenn im Abschnitt API-Einschränkungen standardmäßig Schlüssel nicht einschränken ausgewählt ist, kann ein API-Schlüssel für den Zugriff auf jede API verwendet werden, die für das Projekt aktiviert ist.

Ihre vorhandenen API-Schlüssel gewähren jetzt keinen Zugriff mehr auf Cloud ML-Dienste. Jeder Schlüssel funktioniert jedoch weiterhin für alle APIs, die Sie der Liste der API-Einschränkungen hinzugefügt haben.

Wenn Sie in Zukunft zusätzliche APIs aktivieren, müssen Sie sie der Liste API-Einschränkungen für den entsprechenden API-Schlüssel hinzufügen.

2. Neuen API-Schlüssel für die Verwendung mit Firebase ML erstellen

Erstellen Sie als Nächstes einen neuen API-Schlüssel für Firebase ML, der nur Aufrufe an die Cloud Vision API zulässt:

  1. Kehren Sie zur Seite Anmeldedaten zurück. Achten Sie darauf, dass Ihr Firebase-Projekt weiterhin ausgewählt ist.

  2. Klicken Sie auf Anmeldedaten erstellen > API-Schlüssel. Notieren Sie sich den neuen API-Schlüssel und klicken Sie dann auf Schlüssel einschränken.

  3. Wählen Sie im Abschnitt API-Einschränkungen die Option Schlüssel einschränken aus und fügen Sie der Liste nur die Cloud Vision API hinzu.

Dieser API-Schlüssel gewährt nur Zugriff auf die Cloud Vision API und kann von Firebase ML für den Zugriff auf cloudbasierte Modelle verwendet werden.

Um die Folgen eines manipulierten Schlüssels zu minimieren, sollten Sie das Kontingent der Cloud Vision API pro Nutzer von der Standardeinstellung reduzieren. Anleitung:

  1. Öffnen Sie in der Google Cloud-Konsole die Seite Cloud Vision API-Kontingente. Wählen Sie Ihr Projekt aus, wenn Sie dazu aufgefordert werden.

  2. Legen Sie im Abschnitt Anfragen das Kontingent Anfragen pro Minute pro Nutzer auf einen für Ihre App angemessenen Wert fest. Wenn Nutzer in Ihrer App beispielsweise ein Bild eines Dokuments hochladen, um den Text des Dokuments zu erhalten, ist es unwahrscheinlich, dass sie dies mehr als einmal alle paar Sekunden tun. Ein Kontingent von 30 bis 40 wäre also wahrscheinlich ausreichend.

    Beachten Sie, dass sich „Anfragen pro Nutzer“ in diesem Zusammenhang auf Anfragen von einer einzelnen IP-Adresse bezieht. Das kann wichtig sein, wenn Sie davon ausgehen, dass mehrere Nutzer Ihre App gleichzeitig über ein NAT verwenden.

4. Cloud APIs mit Ihrem Firebase ML-API-Schlüssel aufrufen

Konfigurieren Sie schließlich in Ihrer App Firebase ML, um Ihren neuen API-Schlüssel zu verwenden.

Da der Firebase ML-API-Schlüssel den nicht authentifizierten Zugriff auf die Cloud Vision API ermöglicht, ist es wichtig, den Schlüssel vertraulich zu behandeln, um unbefugte Nutzung und Belastungen Ihres Abrechnungskontos zu verhindern. Dazu sollten Sie Ihren API-Schlüssel nicht in Ihr App-Binärprogramm einfügen. Stattdessen sollten Sie zur Laufzeit der App prüfen, ob ein bekannter, vertrauenswürdiger Nutzer angemeldet ist, und erst dann den API-Schlüssel von einem Server abrufen.

Auch wenn diese Praktiken eingehalten werden, kann es vorkommen, dass ein API-Schlüssel manipuliert wird. Sie sollten Maßnahmen ergreifen, um die Folgen eines kompromittierten Schlüssels zu minimieren. Dazu gehören das Reduzieren des Kontingents pro Nutzer für die API (siehe oben), das Implementieren von Richtlinien für die Schlüsselrotation und das Ausstellen unterschiedlicher Schlüssel für verschiedene Nutzergruppen.

Nachdem Ihre App den API-Schlüssel sicher abgerufen hat, geben Sie den Schlüssel an, wenn Sie eine Firebase ML Cloud API aufrufen möchten:

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

Außerdem sollten Sie die allgemeinen Hinweise unter API-Schlüssel sichern beachten.

Nächste Schritte

Informationen zur Vorbereitung Ihrer App auf den Start bei Verwendung anderer Firebase-Funktionen finden Sie in der Startcheckliste.