Wenn Ihre Apple-App eine der Cloud-APIs von Firebase ML verwendet, sollten Sie vor dem Start Ihrer App in der Produktion einige zusätzliche Schritte unternehmen, um unbefugten API-Zugriff zu verhindern.
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 verhindern:
Öffnen Sie die Seite „Anmeldeinformationen“ der Google Cloud Console. Wenn Sie dazu aufgefordert werden, wählen Sie Ihr Projekt aus.
Ö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 dann alle APIs zur Liste hinzu, auf die der API-Schlüssel Zugriff haben soll. Stellen Sie sicher, dass Sie die Cloud Vision API nicht einbinden.
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“ die Option „Schlüssel nicht einschränken“ ausgewählt ist, kann standardmäßig ein API-Schlüssel 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 zu seiner API-Einschränkungsliste hinzugefügt haben.
Beachten Sie, dass Sie, wenn Sie in Zukunft weitere APIs aktivieren, diese zur 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 der Cloud Vision API zulässt:
Kehren Sie zur Seite „Anmeldeinformationen“ zurück. Stellen Sie sicher, dass Ihr Firebase-Projekt noch ausgewählt ist.
Klicken Sie auf Anmeldeinformationen 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 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.
3. Empfohlen: Reduzieren Sie das Kontingent der Cloud Vision API
Um die Folgen eines kompromittierten Schlüssels abzumildern, sollten Sie das Kontingent pro Benutzer der Cloud Vision API gegenüber der Standardeinstellung reduzieren. Gehen Sie dazu wie folgt vor:
Öffnen Sie die Seite „Cloud Vision API-Kontingente“ der Google Cloud Console. Wenn Sie dazu aufgefordert werden, wählen Sie Ihr Projekt aus.
Legen Sie im Abschnitt „Anfragen“ das Kontingent „Anfragen pro Minute und Benutzer“ auf einen für Ihre App angemessenen Wert fest. Wenn Ihre App beispielsweise das Hochladen eines Bildes eines Dokuments erfordert, um dessen Text zurückzugewinnen, ist es unwahrscheinlich, dass ein Benutzer dies mehr als alle paar Sekunden tut. Daher wäre ein Kontingent von 30–40 wahrscheinlich sicher.
Beachten Sie, dass sich „Anfragen pro Benutzer“ in diesem Zusammenhang auf Anfragen von einer einzelnen IP-Adresse bezieht. Sie müssen dies möglicherweise berücksichtigen, wenn Sie erwarten, 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 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 unbefugte Nutzung und Belastungen Ihres Rechnungskontos zu verhindern. Um dies zu tun, 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 beachtet werden, ist es möglich, dass ein API-Schlüssel kompromittiert wird. Sie sollten Maßnahmen ergreifen, um die Folgen eines kompromittierten Schlüssels abzumildern, z. B. die oben beschriebene Reduzierung des API-Kontingents pro Benutzer, die Implementierung von Schlüsselrotationsrichtlinien und die Ausgabe unterschiedlicher Schlüssel an verschiedene Benutzergruppen.
Nachdem Ihre App den API-Schlüssel sicher erhalten hat und Sie eine Firebase ML Cloud-API aufrufen möchten, geben Sie den Schlüssel an:
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 die allgemeinen Hinweise unter Sichern eines API-Schlüssels befolgen.
Nächste Schritte
Informationen zum Vorbereiten Ihrer App für den Start bei Verwendung anderer Firebase-Funktionen finden Sie in der Start-Checkliste .