Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

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 vor dem Start Ihrer App in der Produktion einige zusätzliche Schritte unternehmen, um den unbefugten API-Zugriff zu verhindern.

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

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

1. Registrieren Sie Ihre Produktions-Apps bei Firebase

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

Der schnellste Weg, dies zu tun, besteht darin, Ihr Firebase-Projekt mit Ihrem Google Play-Projekt zu verknüpfen. Sie können dies im Abschnitt Integrationen Ihrer Projekteinstellungen in der Firebase-Konsole tun.

Wenn Sie Ihre Projekte verknüpfen, werden die SHA-1-Signaturen Ihrer Produktionsanwendungen in Ihr Firebase-Projekt importiert, was Sie auf der Seite Einstellungen bestätigen können. Beachten Sie, dass durch das Verknüpfen Ihrer Firebase- und Google Play-Projekte auch andere Google Play-Daten, einschließlich Absturz- und Ertragsstatistiken, für Firebase und Firebase-Daten, einschließlich Analysen, für Google Play zugänglich sind.

Wenn Sie keine Daten zwischen Ihren Firebase- und Google Play-Projekten austauschen möchten, können Sie alternativ die SHA-1-Signaturen Ihrer Apps selbst auf der Seite "Einstellungen" angeben. Unter Authentifizieren Ihres Clients erfahren Sie, wie Sie die SHA-1-Signaturen Ihrer Apps erhalten.

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

Konfigurieren Sie als Nächstes Ihre vorhandenen API-Schlüssel so, dass der Zugriff auf die Cloud Vision-API nicht zulässig ist:

  1. Öffnen Sie die Seite Anmeldeinformationen der Cloud-Konsole.

  2. Öffnen Sie für jeden API-Schlüssel in der Liste die Bearbeitungsansicht und fügen Sie im Abschnitt Schlüsseleinschränkungen alle verfügbaren APIs mit Ausnahme der Cloud Vision-API zur Liste hinzu.

3. Erstellen und verwenden Sie einen Nur-Debug-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 Cloud-Dienste in Umgebungen zuzugreifen, in denen keine App-Authentifizierung möglich ist, z. B. wenn sie auf Emulatoren ausgeführt werden.

  1. Erstellen Sie einen neuen API-Schlüssel für die Entwicklung:

    1. Öffnen Sie die Seite Anmeldeinformationen der Cloud-Konsole.
    2. Klicken Sie auf Anmeldeinformationen 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 aus. Bewahren Sie diesen Schlüssel daher vertraulich auf .
  2. Geben Sie den Debug-API-Schlüssel in einer Android-Manifestdatei an, die nur für Debug-Builds verwendet wird, um sicherzustellen, dass der neue Debug-API-Schlüssel nicht mit Ihrer freigegebenen App verloren geht.

    1. Wenn Sie noch kein Debug-Manifest haben, erstellen Sie eines, indem Sie auf Datei> Neu> Andere> Android-Manifest-Datei klicken und debug aus den debug auswählen.

    2. Fügen Sie im Debug-Manifest 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 API-Schlüssel - den Debug-Schlüssel - nur in Debug-Builds zu verwenden:

    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

Informationen zum Vorbereiten der App für den Start bei Verwendung anderer Firebase-Funktionen finden Sie in der Start-Checkliste .