Jeśli Twoja aplikacja Apple korzysta z jednego z interfejsów API chmury Firebase ML, przed udostępnieniem aplikacji w wersji produkcyjnej musisz podjąć dodatkowe działania, które uniemożliwią nieautoryzowany dostęp przez interfejs API.
1. Ograniczanie zakresu działania istniejących kluczy interfejsu API
Najpierw skonfiguruj istniejące klucze interfejsu API, aby zablokować dostęp do interfejsu Cloud Vision API:
Otwórz stronę Dane logowania w konsoli Google Cloud. Gdy pojawi się 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ę, że nie zawiera on interfejsu Cloud Vision API.
Gdy konfigurujesz ograniczenia interfejsu API dotyczące klucza interfejsu API, wyraźnie deklarujesz, do których interfejsów API ma on dostęp. Domyślnie, gdy w sekcji Ograniczenia interfejsu API wybrana jest opcja Nie ograniczaj klucza, klucz interfejsu API może być używany do uzyskiwania 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 z nich będzie nadal działać z interfejsami API, które zostały dodane do listy ograniczeń interfejsu API.
Pamiętaj, że jeśli w przyszłości włączysz dodatkowe interfejsy API, musisz dodać je do listy Ograniczenia interfejsu API 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 usługi Firebase ML, który umożliwia wyłącznie wywoływanie interfejsu Cloud Vision API:
Wróć na stronę Dane logowania. Sprawdź, czy nadal wybrany jest projekt Firebase.
Kliknij Utwórz dane logowania > Klucz interfejsu 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 API zapewnia dostęp tylko do interfejsu Cloud Vision API i może być używany przez aplikację Firebase ML do uzyskiwania dostępu do modeli opartych na chmurze.
3. Zalecane: zmniejsz limit Cloud Vision API
Aby ograniczyć konsekwencje związane z przejęciem klucza, zmniejsz domyślny limit przydziału Cloud Vision API na użytkownika. Aby to zrobić:
Otwórz stronę Limity interfejsu Cloud Vision API w konsoli Google Cloud. Gdy pojawi się prośba, wybierz projekt.
W sekcji Żądania ustaw limit żądań na minutę na użytkownika na rozsądną wartość w przypadku Twojej aplikacji. Jeśli na przykład aplikacja wymaga przesłania zdjęcia dokumentu, aby odzyskać tekst, jest mało prawdopodobne, aby użytkownik powtarzał to więcej niż raz na kilka sekund, więc limit 30–40 zostanie prawdopodobnie bezpieczny.
Pamiętaj, że w tym kontekście „żądania na użytkownika” odnoszą się do żądań z jednego adresu IP. Możesz to wziąć pod uwagę, jeśli oczekujesz, że wielu użytkowników będzie korzystać z Twojej aplikacji jednocześnie, korzystając z przekierowania NAT.
4. Wywoływanie interfejsów Cloud API za pomocą klucza interfejsu API Firebase ML
Na koniec skonfiguruj w aplikacji element Firebase ML, aby używać nowego klucza interfejsu API.
Klucz API Firebase ML umożliwia nieautoryzowany dostęp do interfejsu Cloud Vision, dlatego ważne jest, aby zachować go w tajemnicy. Pozwoli to zapobiec nieautoryzowanemu użyciu i obciążeniom na Twoim koncie rozliczeniowym. Aby to zrobić, nie dodawaj klucza interfejsu API do pliku binarnego aplikacji. Zamiast tego podczas działania aplikacji sprawdź, czy zalogowany jest znany użytkownik, a dopiero potem pobieraj klucz interfejsu API z serwera.
Nawet w przypadku stosowania tych metod istnieje możliwość przejęcia klucza interfejsu API. Należy podjąć działania, aby ograniczyć skutki ujawnienia klucza, np. zmniejszyć limit na użytkownika w usłudze API zgodnie z opisem powyżej, wdrożyć zasady rotacji kluczy i wydać różne klucze różnym grupom użytkowników.
Gdy aplikacja bezpiecznie uzyska klucz interfejsu API, możesz go użyć do wywołania interfejsu Cloud API:Firebase ML:
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];
}
Dodatkowo należy postępować zgodnie ze wskazówkami podanymi w artykule Zabezpieczanie klucza API.
Dalsze kroki
W liście kontrolnej przed uruchomieniem znajdziesz informacje o przygotowywaniu aplikacji do uruchomienia, gdy korzystasz z innych funkcji Firebase.