Chroń swoje dane logowania w chmurze dotyczące aplikacji Firebase ML Apple

Jeśli Twoja aplikacja Apple korzysta z jednego z interfejsów API Firebase ML, jeszcze zanim ją wprowadzisz wersji produkcyjnej, należy podjąć pewne dodatkowe kroki, aby zapobiec nieautoryzowanym Dostęp do interfejsu API.

1. Ogranicz zakres istniejących kluczy interfejsu API

Najpierw skonfiguruj istniejące klucze interfejsu API, aby zablokować dostęp do Cloud Vision Interfejs API:

  1. Otwórz stronę Credentials (Dane logowania) w interfejsie konsoli Google Cloud. Gdy pojawi się prośba, wybierz projekt.

  2. Otwórz widok edycji każdego klucza interfejsu API znajdującego się na liście.

  3. W sekcji Ograniczenia interfejsów API wybierz Ogranicz klucz, a potem dodaj wyświetlić listę wszystkich interfejsów API, do których klucz API ma mieć dostęp. Upewnij się, aby nie uwzględniać Cloud Vision API.

    Podczas konfigurowania ograniczeń interfejsu API klucza interfejsu API musisz jednoznacznie deklarowanie interfejsów API, do których klucz ma dostęp. Domyślnie, gdy interfejs API ograniczenia ma wybraną opcję Nie ograniczaj klucza, klucz interfejsu API może być w celu uzyskania dostępu do dowolnego interfejsu API włączonego w projekcie.

Obecnie Twoje istniejące klucze interfejsu API nie przyznają dostępu do usług Cloud ML, ale każde będzie nadal działać ze wszystkimi interfejsami API, które zostały dodane do jego ograniczeń interfejsu API z listy.

Pamiętaj, że jeśli w przyszłości włączysz dodatkowe interfejsy API, musisz je dodać do listę ograniczeń interfejsów API dla odpowiedniego klucza interfejsu API.

2. Tworzenie nowego klucza interfejsu API do użycia z Firebase ML

Następnie utwórz nowy klucz interfejsu API dla Firebase ML, który umożliwia wywoływanie tylko Interfejs Cloud Vision API:

  1. Wróć na stronę Dane logowania. Upewnij się, że atrybuty Projekt Firebase jest nadal wybrany.

  2. Kliknij Utwórz dane logowania > API. Zanotuj nowy klucz interfejsu API, a potem kliknij Ogranicz klucz.

  3. W sekcji Ograniczenia interfejsów API wybierz Ogranicz klucz, a potem dodaj podawać tylko interfejs Cloud Vision API.

Ten klucz interfejsu API daje dostęp tylko do interfejsu Cloud Vision API i może być używany przez Firebase ML, aby uzyskać dostęp do modeli w chmurze.

Aby ograniczyć skutki przejęcia klucza, zmniejsz Limit na użytkownika interfejsu Cloud Vision API jest niższy niż domyślny. Aby to zrobić:

  1. Otwórz stronę Limity interfejsu Cloud Vision API konsoli Google Cloud. Gdy pojawi się prośba, wybierz projekt.

  2. W sekcji Żądania ustaw limit Żądania na minutę na użytkownika do czegoś uzasadnionego w odniesieniu do aplikacji. Jeśli na przykład aplikacja wymaga gdy prześlesz zdjęcie dokumentu, by odzyskać jego tekst, robi to częściej niż co kilka sekund, więc limit wynosi 30-40 sekund które są prawdopodobnie bezpieczne.

    Pamiętaj, że w tym kontekście „żądania na użytkownika” odnosi się do żądań pojedynczy adres IP. Być może musisz wziąć to pod uwagę, jeśli spodziewasz się wielu aby użytkownicy mogli jednocześnie korzystać z aplikacji z serwera NAT.

4. Wywoływanie interfejsów Cloud APIs za pomocą klucza interfejsu Firebase ML API

Na koniec w aplikacji skonfiguruj Firebase ML tak, aby używał nowego klucza interfejsu API.

Ponieważ klucz interfejsu Firebase ML API umożliwia nieuwierzytelniony dostęp do Cloud Vision interfejsu API, należy zadbać o poufność klucza, aby zapobiec nieautoryzowanemu użyciu obciążenia Twojego konta rozliczeniowego. W tym celu nie dodawaj klucz API w pliku binarnym aplikacji. Zamiast tego w czasie działania aplikacji sprawdź, czy znany jest zalogowany i dopiero wtedy pobiera klucz interfejsu API z serwera.

Nawet w przypadku stosowania tych metod klucz interfejsu API może zostać przejętych. Należy podjąć działania, które pomogą złagodzić konsekwencje wynikające z przejęty klucz, taki jak zmniejszenie limitu interfejsu API na użytkownika w sposób opisany powyżej, wdrażanie zasad rotacji kluczy i przydzielanie różnych kluczy różnym dla grup użytkowników.

Gdy aplikacja bezpiecznie uzyska klucz interfejsu API, gdy chcesz wywołać Interfejs Firebase ML Cloud API podaj klucz:

Swift

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)
}

Objective-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 postępuj zgodnie z ogólnymi poradami dotyczącymi Zabezpieczanie klucza interfejsu API

Dalsze kroki

Zapoznaj się z listą kontrolną wprowadzania na rynek, aby dowiedzieć się więcej przygotowując aplikację do uruchomienia podczas korzystania z innych funkcji Firebase.