Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

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 Projekteinstellungen und wählen Sie dann die Registerkarte Einstellungen .

  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:

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

    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)

Nächste Schritte

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