Schützen Sie die Cloud-Anmeldedaten 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 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 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 bei der Entwicklung 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. Siehe Authentifizieren Ihren Client zu lernen , wie.

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

  3. Blättern Sie nach unten auf die Ihre Anwendungen Karte, dann wählen Sie Ihre Android - App.

  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 verweigern:

  1. Öffnen Sie die Credentials - Seite der Google Cloud Console. Wählen Sie Ihr Projekt aus, wenn Sie dazu aufgefordert werden.

  2. Öffnen Sie für jeden vorhandenen API-Schlüssel in der Liste die Bearbeitungsansicht.

  3. In dem API - Einschränkungen Wählen Sie im Abschnitt Schlüssel einschränken, dann zu der Liste hinzufügen alle APIs , zu denen Sie der API - Schlüssel Zugang haben wollen. Achten Sie darauf, nicht schließen die Cloud - Vision - API.

    Wenn Sie einen API - Schlüssel API Einschränkungen konfigurieren, erklären Sie ausdrücklich die APIs zu dem der Schlüssel Zugriff hat. In der Standardeinstellung , wenn der API Einschränkungen Abschnitt hat Do Schlüssel ausgewählt nicht einschränken, kann ein API - Schlüssel verwendet werden , um eine API für den Zugriff auf die für das Projekt aktiviert ist.

Nun, Ihr bestehender API - Schlüssel keinen Zugriff auf Cloud - ML Dienste gewähren, aber jeder Schlüssel zur Arbeit für alle APIs weiterhin , dass Sie auf seine API Einschränkungen Liste hinzugefügt.

Beachten Sie, dass , wenn Sie irgendwelche zusätzlichen APIs in Zukunft ermöglichen, können Sie sie in die API - Einschränkungen Liste für den entsprechenden API - Schlüssel hinzufügen.

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 wird. Firebase ML kann diesen API-Schlüssel verwenden, um in Umgebungen, in denen keine App-Authentifizierung möglich ist, auf Google Cloud-Dienste zuzugreifen, z. B. bei der Ausführung auf Emulatoren.

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

    1. Öffnen Sie die Credentials - Seite der Google Cloud Console. Wählen Sie Ihr Projekt aus, wenn Sie dazu aufgefordert werden.

    2. Klicken Sie auf Create credentials> API - Schlüssel und nimmt den neuen API - Schlüssel. Dieser Schlüssel ermöglicht den Zugriff API von nicht authentifizierten Anwendungen, so halten Sie diese Taste 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 nicht bereits über ein Debug - Manifest haben, erstellen Sie ein , indem Sie Datei> Neu> Weitere> Android Manifest - Datei und wählen Sie debug aus der Zielquelle setzt.

    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 Abgleich des Zertifikats-Fingerabdrucks verwendet wird, um Ihren Client in der Produktion zu authentifizieren, und um 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

Finden Sie in der Start - Checkliste , um Informationen zu Ihrer App zu starten Vorbereitung , wenn andere Firebase Funktionen verwenden.