Catch up on everthing we announced at this year's Firebase Summit. Learn more

Chroń dane logowania do chmury w aplikacji Firebase ML na Androida

Jeśli Twoja aplikacja na Androida korzysta z jednego z chmurowych interfejsów API Firebase ML, przed uruchomieniem aplikacji w środowisku produkcyjnym wykonaj dodatkowe czynności, aby zapobiec nieautoryzowanemu dostępowi do interfejsu API.

W przypadku aplikacji produkcyjnych zapewnisz, że tylko uwierzytelnieni klienci będą mieli dostęp do usług w chmurze. (Pamiętaj, że tylko nierootowane urządzenia mogą uwierzytelniać się przy użyciu opisanej metody).

Następnie utworzysz klucz API tylko do debugowania, którego możesz użyć dla wygody podczas testowania i programowania.

1. Zarejestruj swoje aplikacje produkcyjne w Firebase

Najpierw zarejestruj aplikacje produkcyjne w Firebase.

  1. Upewnij się, że masz podpisy SHA-1 swojej aplikacji. Patrz Uwierzytelnianie klienta , aby dowiedzieć się jak to zrobić.

  2. Przejdź do ustawieniach projektu w konsoli Firebase, następnie wybrać zakładkę Ustawienia.

  3. Przewiń w dół do swojej karty aplikacje, a następnie wybierz aplikację dla systemu Android.

  4. Dodaj podpis SHA-1 swojej aplikacji do informacji o aplikacji.

2. Ogranicz zakres kluczy API

Następnie skonfiguruj istniejące klucze API, aby uniemożliwić dostęp do Cloud Vision API:

  1. Otwórz Poświadczenia stronę konsoli Google Cloud. Po wyświetleniu monitu wybierz swój projekt.

  2. Dla każdego istniejącego klucza API na liście otwórz widok do edycji.

  3. W sekcji ograniczenia API, wybierz przycisk Ogranicz, a następnie dodać do listy wszystkich interfejsów API, do której chcesz klucz API do dostępu. Upewnij się, że nie zawierają API Chmura Vision.

    Po skonfigurowaniu ograniczeń API klucz API, jesteś wyraźnie deklarując API, do którego klucz ma dostęp. Domyślnie, gdy sekcja ograniczenia API nie ograniczają wybrany klucz, klucz API może być używany do dostępu do dowolnej API, które jest włączone do projektu.

Teraz swoje istniejące klucze API nie udzieli dostępu do usług cloud ml, ale każdy klawisz będzie kontynuować pracę dla wszelkich API, które zostały dodane do listy ograniczeń API.

Zauważ, że jeśli włączysz żadnych dodatkowych funkcji API w przyszłości, należy dodać je do listy ograniczeń API dla obowiązującego klucza API.

3. Utwórz i użyj klucza API tylko do debugowania

Na koniec utwórz nowy klucz API, który będzie używany tylko do programowania. Firebase ML może używać tego klucza interfejsu API do uzyskiwania dostępu do usług Google Cloud w środowiskach, w których uwierzytelnianie aplikacji nie jest możliwe, na przykład w przypadku uruchamiania na emulatorach.

  1. Utwórz nowy klucz API, który będzie używany do programowania:

    1. Otwórz Poświadczenia stronę konsoli Google Cloud. Po wyświetleniu monitu wybierz swój projekt.

    2. Kliknij Utwórz poświadczenia> klucz API i zapoznanie się z nowym kluczem API. Klucz ten umożliwia dostęp do interfejsu API z nieuwierzytelnionych aplikacji, więc zachować ten klucz poufne.

  2. Aby mieć pewność, że nowy klucz debugowania interfejsu API nie zostanie ujawniony w wydanej aplikacji, określ klucz debugowania interfejsu API w pliku manifestu systemu Android używanym tylko do kompilacji debugowania:

    1. Jeżeli nie masz jeszcze manifestu debugowania, utworzyć, klikając Plik> Nowy> Inne> Android plik manifestu i wybierając debug ze zbiorów źródłowych cel.

    2. W manifeście debugowania dodaj następującą deklarację:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. W swojej aplikacji skonfiguruj Firebase ML tak, aby używała dopasowywania odcisku cyfrowego certyfikatu do uwierzytelniania klienta w środowisku produkcyjnym i używała kluczy interfejsu API – klucza debugowania – tylko w kompilacjach debugowania:

    Jawa

    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)

Następne kroki

Zobacz listę kontrolną uruchamiania , aby uzyskać informacje na temat przygotowywania aplikacji do uruchomienia podczas korzystania z innych funkcji Firebase.