Chroń dane uwierzytelniające w chmurze aplikacji Firebase ML firmy Apple

Jeśli Twoja aplikacja Apple korzysta z jednego z chmurowych interfejsów API Firebase ML, przed uruchomieniem aplikacji w środowisku produkcyjnym wykonaj dodatkowe kroki, 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 interfejsu Cloud Vision API:

  1. Otwórz stronę Dane logowania w konsoli Google Cloud. Po wyświetleniu monitu wybierz projekt.

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

  3. W sekcji Ograniczenia API wybierz opcję Ogranicz klucz , a następnie dodaj do listy wszystkie interfejsy API, do których chcesz, aby klucz API miał dostęp. Pamiętaj, aby nie uwzględnić interfejsu API Cloud Vision.

    Konfigurując ograniczenia API klucza API , jawnie deklarujesz interfejsy API, do których klucz ma dostęp. Domyślnie, gdy w sekcji Ograniczenia interfejsu API jest wybrana opcja Nie ograniczaj klucza , klucz API może służyć do uzyskiwania dostępu do dowolnego interfejsu API włączonego dla projektu.

Teraz Twoje istniejące klucze API nie będą zapewniać dostępu do usług Cloud ML, ale każdy klucz będzie nadal działać w przypadku wszystkich interfejsów API dodanych do listy ograniczeń API .

Pamiętaj, że jeśli w przyszłości włączysz dodatkowe interfejsy API, musisz je dodać do listy ograniczeń API dla odpowiedniego 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 API Cloud Vision:

  1. Wróć do strony Poświadczenia . Upewnij się, że projekt Firebase jest nadal wybrany.

  2. Kliknij opcję Utwórz dane uwierzytelniające > Klucz API . Zanotuj nowy klucz API, a następnie kliknij Ogranicz klucz .

  3. W sekcji Ograniczenia API wybierz opcję Ogranicz klucz , a następnie dodaj do listy wyłącznie interfejs API Cloud Vision.

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

Aby złagodzić konsekwencje złamanego klucza, należy zmniejszyć limit przydziału interfejsu API Cloud Vision na użytkownika z ustawienia domyślnego. Aby to zrobić:

  1. Otwórz stronę Limity interfejsu API Cloud Vision w konsoli Google Cloud. Po wyświetleniu monitu wybierz projekt.

  2. W sekcji Żądania ustaw liczbę żądań na minutę na przydział użytkownika na rozsądną dla Twojej aplikacji. Na przykład, jeśli Twoja aplikacja wymaga przesłania obrazu dokumentu w celu odzyskania jego tekstu, jest mało prawdopodobne, że użytkownik będzie to robił częściej niż raz na kilka sekund, więc limit 30–40 będzie prawdopodobnie bezpieczny.

    Należy pamiętać, że w tym kontekście „żądania na użytkownika” odnoszą się do żądań z jednego adresu IP. Być może będziesz musiał wziąć to pod uwagę, jeśli spodziewasz się, że wielu użytkowników będzie korzystać z Twojej aplikacji w tym samym czasie za NAT.

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

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

Ponieważ klucz Firebase ML API umożliwia nieuwierzytelniony dostęp do Cloud Vision API, ważne jest, aby zachować klucz w poufności, aby zapobiec nieautoryzowanemu użyciu i obciążeniom Twojego konta rozliczeniowego. Aby to zrobić, nie należy dołączać klucza API do pliku binarnego aplikacji. Zamiast tego w czasie wykonywania aplikacji sprawdź, czy zalogowany jest znany dobry użytkownik, i dopiero wtedy pobierz klucz API z serwera.

Nawet jeśli te praktyki są przestrzegane, istnieje możliwość naruszenia bezpieczeństwa klucza API. Należy podjąć kroki, aby złagodzić konsekwencje skompromitowanego klucza, takie jak zmniejszenie limitu 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 uzyska klucz API, jeśli chcesz wywołać interfejs API Firebase ML Cloud, 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 postępować zgodnie z ogólnymi wskazówkami zawartymi w części Zabezpieczanie klucza API .

Następne kroki

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