了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

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

Wenn Ihre Android-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.

Für Ihre Produktions-Apps stellen Sie sicher, dass nur authentifizierte Clients auf Cloud-Dienste zugreifen können. (Beachten Sie, dass sich nur nicht gerootete Geräte mit der beschriebenen Methode authentifizieren können.)

Anschließend erstellen Sie einen Nur-Debug-API-Schlüssel, den Sie beim Testen und Entwickeln bequem verwenden können.

1. Registrieren Sie Ihre Produktions-Apps bei Firebase

Registrieren Sie zunächst Ihre Produktions-Apps bei Firebase.

  1. Stellen Sie sicher, dass Sie über die SHA-1-Signaturen Ihrer App verfügen. Weitere Informationen dazu finden Sie unter Authentifizieren Ihres Clients .

  2. Gehen Sie in der Firebase-Konsole zu Ihren und wählen Sie dann die Registerkarte Einstellungen aus .

  3. Scrollen Sie nach unten zur Karte Ihre Apps und wählen Sie dann Ihre Android-App aus.

  4. Fügen Sie die SHA-1-Signatur Ihrer App zu den Informationen Ihrer App hinzu.

2. Beschränken Sie den Umfang Ihrer API-Schlüssel

Konfigurieren Sie als Nächstes 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.

3. Erstellen und verwenden Sie einen Nur-Debugging-API-Schlüssel

Erstellen Sie abschließend einen neuen API-Schlüssel, der nur für die Entwicklung verwendet werden soll. Firebase ML kann diesen API-Schlüssel verwenden, um auf Google Cloud-Dienste in Umgebungen zuzugreifen, in denen keine App-Authentifizierung möglich ist, z. B. bei der Ausführung auf Emulatoren.

  1. Erstellen Sie einen neuen API-Schlüssel, der für die Entwicklung verwendet werden soll:

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

    2. Klicken Sie auf Anmeldedaten erstellen > API-Schlüssel und notieren Sie sich den neuen API-Schlüssel. Dieser Schlüssel ermöglicht den API-Zugriff von nicht authentifizierten Apps, also behandeln Sie diesen Schlüssel vertraulich .

  2. Um sicherzustellen, dass der neue Debug-API-Schlüssel nicht mit Ihrer veröffentlichten App durchgesickert ist, geben Sie den Debug-API-Schlüssel in einer Android-Manifestdatei an, die nur für Debug-Builds verwendet wird:

    1. Wenn Sie noch kein Debugmanifest haben, erstellen Sie eines, indem Sie auf „Datei“ > „Neu“ > „Andere“ > „Android-Manifestdatei“ klicken und „ debug aus den Zielquellsätzen auswählen.

    2. Fügen Sie im Debugmanifest die folgende Deklaration hinzu:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. Konfigurieren Sie Firebase ML in Ihrer App so, dass der Zertifikat-Fingerabdruckabgleich verwendet wird, um Ihren Client in der Produktion zu authentifizieren, und dass API-Schlüssel – der Debug-Schlüssel – nur in Debug-Builds verwendet werden:

    Kotlin+KTX

    val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch()
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f)
    // ...
    
    // And lastly:
    val options = optionsBuilder.build()
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)

    Java

    FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =
            new FirebaseVisionCloudImageLabelerOptions.Builder();
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch();
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f);
    // ...
    
    // And lastly:
    FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);

Nächste Schritte

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