Catch up on highlights from Firebase at Google I/O 2023. Learn more

Schützen Sie die Cloud-Anmeldeinformationen Ihrer Firebase ML-Apple-App

Wenn Ihre Apple-App eine der Cloud-APIs von Firebase ML verwendet, sollten Sie einige zusätzliche Schritte unternehmen, um den unbefugten API-Zugriff zu verhindern, bevor Sie Ihre App in der Produktion starten.

1. Reduzieren Sie den Umfang vorhandener API-Schlüssel

Konfigurieren Sie zunächst Ihre vorhandenen API-Schlüssel, um den Zugriff auf die Cloud Vision-API zu verbieten:

  1. Öffnen Sie die Anmeldedatenseite der Google Cloud Console. Wenn Sie dazu aufgefordert werden, wählen Sie Ihr Projekt aus.

  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 dann alle APIs zur Liste hinzu, auf die der API-Schlüssel Zugriff haben soll. Achten Sie darauf, die Cloud Vision API nicht einzuschließen.

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

Jetzt gewähren Ihre vorhandenen API-Schlüssel keinen Zugriff auf Cloud-ML-Dienste, aber jeder Schlüssel funktioniert weiterhin für alle APIs, die Sie seiner API-Einschränkungsliste hinzugefügt haben.

Beachten Sie, dass Sie, wenn Sie in Zukunft weitere APIs aktivieren, diese der API-Einschränkungsliste für den entsprechenden API-Schlüssel hinzufügen müssen.

2. Erstellen Sie einen neuen API-Schlüssel zur Verwendung mit Firebase ML

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 „Anmeldeinformationen“ zurück. Stellen Sie sicher, dass Ihr Firebase-Projekt noch 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 dann nur die Cloud Vision-API zur Liste 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 kompromittierten Schlüssels abzumildern, sollten Sie das Pro-Benutzer-Kontingent der Cloud Vision API von der Standardeinstellung herabsetzen. Dazu:

  1. Öffnen Sie die Seite Cloud Vision API-Kontingente der Google Cloud Console. Wenn Sie dazu aufgefordert werden, wählen Sie Ihr Projekt aus.

  2. Legen Sie im Abschnitt Anforderungen das Kontingent für Anforderungen pro Minute und Benutzer auf einen für Ihre App angemessenen Wert fest. Wenn Ihre App beispielsweise das Hochladen eines Bildes eines Dokuments beinhaltet, um den Text zurückzuerhalten, ist es unwahrscheinlich, dass ein Benutzer dies mehr als einmal alle paar Sekunden tut, sodass ein Kontingent von 30-40 wahrscheinlich sicher wäre.

    Beachten Sie, dass sich „Anfragen pro Benutzer“ in diesem Zusammenhang auf Anfragen von einer einzigen IP-Adresse bezieht. Möglicherweise müssen Sie dies berücksichtigen, wenn Sie davon ausgehen, dass mehrere Benutzer Ihre App gleichzeitig hinter einem NAT verwenden.

4. Rufen Sie Cloud-APIs mit Ihrem Firebase ML-API-Schlüssel auf

Konfigurieren Sie schließlich in Ihrer App Firebase ML für die Verwendung Ihres neuen API-Schlüssels.

Da der Firebase ML-API-Schlüssel einen nicht authentifizierten Zugriff auf die Cloud Vision-API ermöglicht, ist es wichtig, den Schlüssel vertraulich zu behandeln, um eine unbefugte Nutzung und Belastungen Ihres Rechnungskontos zu verhindern. Dazu sollten Sie davon absehen, Ihren API-Schlüssel in Ihre App-Binärdatei aufzunehmen. Überprüfen Sie stattdessen zur App-Laufzeit, ob ein bekanntermaßen guter Benutzer angemeldet ist, und rufen Sie erst dann den API-Schlüssel von einem Server ab.

Selbst wenn diese Praktiken eingehalten werden, ist es möglich, dass ein API-Schlüssel kompromittiert wird. Sie sollten Maßnahmen ergreifen, um die Folgen eines kompromittierten Schlüssels zu mindern, wie z. B. das benutzerspezifische Kontingent der API wie oben beschrieben zu reduzieren, Schlüsselrotationsrichtlinien zu implementieren und unterschiedliche Schlüssel an verschiedene Benutzergruppen auszugeben.

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:

Schnell

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

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

Darüber hinaus sollten Sie den allgemeinen Hinweisen in Sichern eines API-Schlüssels folgen.

Nächste Schritte

In der Start-Checkliste finden Sie Informationen zum Vorbereiten Ihrer App für den Start, wenn Sie andere Firebase-Funktionen verwenden.