Jeśli Twoja aplikacja Apple używa jednego z interfejsów Cloud API w usłudze Firebase ML, zanim ją opublikujesz wersji produkcyjnej, należy podjąć pewne dodatkowe kroki, aby zapobiec nieautoryzowanym Dostęp do interfejsu API.
1. Ograniczanie zakresu działania istniejących kluczy interfejsu API
Najpierw skonfiguruj istniejące klucze interfejsu API, aby zablokować dostęp do Cloud Vision Interfejs API:
Otwórz stronę Dane logowania w konsoli Google Cloud. Gdy pojawi się taka prośba, wybierz projekt.
W przypadku każdego klucza API na liście otwórz widok edycji.
W sekcji Ograniczenia interfejsów API wybierz Ogranicz klucz, a potem dodaj do listy wszystkie interfejsy API, do których klucz interfejsu 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.
Twoje dotychczasowe klucze interfejsu API nie będą już przyznawać dostępu do usług ML w chmurze, ale każdy klucz nadal będzie działać w przypadku interfejsów API dodanych do listy ograniczeń interfejsu API.
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. Utwórz nowy klucz interfejsu API do użycia z funkcją Firebase ML
Następnie utwórz nowy klucz interfejsu API dla usługi Firebase ML, który zezwala tylko na wywołania interfejsu Cloud Vision API:
Wróć na stronę Dane logowania. Sprawdź, czy nadal wybrany jest projekt Firebase.
Kliknij Utwórz dane logowania > API. Zanotuj nowy klucz interfejsu API, a potem kliknij Ogranicz klucz.
W sekcji Ograniczenia interfejsów API wybierz Ogranicz klucz, a potem do listy tylko dodaj 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.
3. Zalecane: zmniejszenie limitu Cloud Vision API
Aby ograniczyć skutki przejęcia klucza, zmniejsz Limit na użytkownika interfejsu Cloud Vision API jest niższy niż domyślny. Aby to zrobić:
Otwórz stronę Limity interfejsu Cloud Vision API konsoli Google Cloud. Gdy pojawi się taka prośba, wybierz projekt.
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 API Firebase ML
Na koniec skonfiguruj w aplikacji Firebase ML, aby używać nowego klucza interfejsu API.
Ponieważ klucz interfejsu API Firebase ML 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. Aby to zrobić, nie dodawaj klucza interfejsu API do pliku binarnego 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ć 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
W liście kontrolnej przed uruchomieniem znajdziesz informacje o przygotowywaniu aplikacji do uruchomienia, gdy korzystasz z innych funkcji Firebase.