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

Chroń poświadczenia Cloud aplikacji Firebase ML Apple

Jeśli Twoja aplikacja Apple 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.

1. Zmniejsz zakres istniejących kluczy API

Najpierw 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.

2. Utwórz nowy klucz API do użytku z Firebase ML

Następnie utwórz nowy klucz API dla Firebase ML, który zezwala tylko na wywołania interfejsu Cloud Vision API:

  1. Powrót do Poświadczenia stronie. Upewnij się, że Twój projekt Firebase jest nadal wybrany.

  2. Kliknij Utwórz poświadczenia> klucz API. Zapoznanie się z nowym kluczem API, a następnie kliknij przycisk Ogranicz.

  3. W sekcji ograniczenia API, wybierz przycisk Ogranicz, a następnie dodać do listy tylko API Chmura Vision.

Ten klucz interfejsu API zapewnia dostęp tylko do interfejsu Cloud Vision API i może być używany przez Firebase ML do uzyskiwania dostępu do modeli w chmurze.

Aby złagodzić konsekwencje złamania klucza, zmniejsz limit na użytkownika interfejsu Cloud Vision API z ustawienia domyślnego. Aby to zrobić:

  1. Otwórz Quota API Chmura Vision stronę konsoli Google Cloud. Po wyświetleniu monitu wybierz swój projekt.

  2. We wnioskach sekcja ustaw żądań na minutę na kwotę użytkownikowi na coś sensownego dla swojej aplikacji. Na przykład, jeśli Twoja aplikacja wymaga przesyłania obrazu dokumentu w celu odzyskania jego tekstu, jest mało prawdopodobne, że użytkownik zrobi to częściej niż raz na kilka sekund, więc limit 30-40 byłby prawdopodobnie bezpieczny.

    Należy zauważyć, że w tym kontekście „żądania na użytkownika” odnoszą się do żądań z pojedynczego adresu IP. Może być konieczne rozważenie tego, jeśli oczekujesz, że wielu użytkowników będzie korzystać z Twojej aplikacji w tym samym czasie zza translatora NAT.

4. Wywołaj Cloud APIs przy użyciu klucza Firebase ML API

Na koniec w swojej aplikacji skonfiguruj Firebase ML tak, aby korzystała z nowego klucza interfejsu API.

Ponieważ klucz Firebase ML API umożliwia nieuwierzytelniony dostęp do interfejsu Cloud Vision API, ważne jest, aby zachować poufność klucza, aby zapobiec nieautoryzowanemu użyciu i obciążeniom konta rozliczeniowego. Aby to zrobić, powinieneś powstrzymać się od dołączania klucza API do pliku binarnego aplikacji. Zamiast tego w czasie wykonywania aplikacji sprawdź, czy zalogowany jest znany dobry użytkownik, a dopiero potem pobierz klucz interfejsu API z serwera.

Nawet jeśli przestrzegane są te praktyki, istnieje możliwość złamania klucza API. Należy podjąć kroki, które pomogą złagodzić konsekwencje złamanego klucza, takie jak zmniejszenie przydziału interfejsu API na użytkownika zgodnie z powyższym opisem, wdrożenie zasad rotacji kluczy i wydawanie różnych kluczy różnym grupom użytkowników.

Gdy aplikacja bezpiecznie pozyska klucz interfejsu API, jeśli chcesz wywołać interfejs Firebase ML Cloud API, określ klucz:

Szybki

if let cloudVisionKey = getYourApiKey() {  // See note above about securing your API key
    let options = VisionCloudDetectorOptions()
    options.apiKeyOverride = cloudVisionKey
    let cloudDetector = Vision.vision().cloudLandmarkDetector(options: options)
}

Cel C

NSString *cloudVisionKey = [self getYourApiKey];  // See note above about securing your API key
if (cloudVisionKey != nil) {
    FIRVisionCloudDetectorOptions *options =
            [[FIRVisionCloudDetectorOptions alloc] init];
    options.APIKeyOverride = cloudVisionKey;
    FIRVisionCloudLandmarkDetector *landmarkDetector =
            [vision cloudLandmarkDetectorWithOptions:options];
}

Ponadto, należy przestrzegać ogólnych porad w Zabezpieczanie klucz API .

Następne kroki

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