Wenn Ihre Apple-Anwendung eine der Cloud-APIs von Firebase ML verwendet, sollten Sie vor dem Start der Anwendung in der Produktion einige zusätzliche Schritte ausführen, um nicht autorisierten API-Zugriff zu verhindern.
1. Umfang 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 zulässig ist:
Öffnen Sie in der Google Cloud-Konsole die Seite Anmeldedaten. Wählen Sie Ihr Projekt aus, wenn Sie dazu aufgefordert werden.
Öffnen Sie für jeden vorhandenen API-Schlüssel in der Liste die Bearbeitungsansicht.
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 zugreifen soll. Achten Sie darauf, die Cloud Vision API nicht anzugeben.
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 die Option Schlüssel nicht einschränken ausgewählt ist, kann ein API-Schlüssel standardmäßig 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 auf Cloud ML-Dienste. Die einzelnen Schlüssel funktionieren 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 der API-Einschränkungen für den entsprechenden API-Schlüssel hinzufügen.
2. Neuen API-Schlüssel für 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:
Kehren Sie zur Seite Anmeldedaten zurück. Achten Sie darauf, dass Ihr Firebase-Projekt weiterhin ausgewählt ist.
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.
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 verwendet werden, um auf cloudbasierte Modelle zuzugreifen.
3. Empfohlen: Kontingent der Cloud Vision API reduzieren
Um die Auswirkungen eines manipulierten Schlüssels zu minimieren, sollten Sie das pro Nutzer geltende Kontingent der Cloud Vision API von der Standardeinstellung herabsetzen. Anleitung:
Öffnen Sie in der Google Cloud-Konsole die Seite Kontingente der Cloud Vision API. Wählen Sie Ihr Projekt aus, wenn Sie dazu aufgefordert werden.
Legen Sie im Abschnitt Anfragen ein angemessenes Kontingent für Anfragen pro Minute und Nutzer fest. Wenn Sie beispielsweise ein Bild eines Dokuments hochladen müssen, um den Text abzurufen, ist es unwahrscheinlich, dass ein Nutzer das mehrmals pro Minute tut. Ein Kontingent von 30–40 ist daher wahrscheinlich ausreichend.
In diesem Zusammenhang bezieht sich „Anfragen pro Nutzer“ auf Anfragen von einer einzelnen IP-Adresse. Das ist möglicherweise der Fall, wenn mehrere Nutzer Ihre App gleichzeitig über eine NAT verwenden.
4. Cloud APIs mit Ihrem Firebase ML API-Schlüssel aufrufen
Konfigurieren Sie abschließend in Ihrer App Firebase ML für die Verwendung Ihres neuen API-Schlüssels.
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 eine nicht autorisierte Nutzung und Belastungen Ihres Rechnungskontos zu verhindern. Dazu sollten Sie Ihren API-Schlüssel nicht in das App-Binärprogramm aufnehmen. Stattdessen sollten Sie bei der App-Laufzeit 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 befolgt werden, kann ein API-Schlüssel manipuliert werden. Sie sollten Maßnahmen ergreifen, um die Auswirkungen eines manipulierten Schlüssels zu minimieren. Dazu gehört beispielsweise, das Kontingent pro Nutzer der API wie oben beschrieben zu reduzieren, Richtlinien für die Schlüsselrotation zu implementieren und verschiedenen Nutzergruppen unterschiedliche Schlüssel auszustellen.
Nachdem Ihre App den API-Schlüssel sicher abgerufen hat, geben Sie ihn an, wenn Sie eine Firebase ML Cloud API aufrufen möchten:
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];
}
Außerdem sollten Sie den allgemeinen Ratschlägen unter API-Schlüssel sichern folgen.
Nächste Schritte
In der Checkliste für die Markteinführung finden Sie Informationen dazu, wie Sie Ihre App für die Markteinführung vorbereiten, wenn Sie andere Firebase-Funktionen verwenden.