Gdy wywołujesz interfejs API bezpośrednio z aplikacji mobilnej lub aplikacji internetowej (np. interfejsy API, które umożliwiają dostęp do generatywnych modeli AI), jest on narażony na nadużycia ze strony nieautoryzowanych klientów. Aby chronić te interfejsy API przed nadużyciami, możesz użyć Firebase App Check, aby sprawdzić, czy wszystkie przychodzące wywołania interfejsu API pochodzą z Twojej prawdziwej aplikacji i z urządzenia, które nie zostało zmodyfikowane.
Firebase AI Logic udostępnia bramę proxy, która umożliwia integrację z Firebase App Check i ochronę interfejsów API modeli generatywnej AI wywoływanych przez Twoje aplikacje mobilne i internetowe. Korzystanie z App Check z Firebase AI Logic pakietami SDK obsługuje wszystkie nasze konfiguracje:
Chroni obu dostawców "Gemini API": Gemini Developer API i Vertex AI Gemini API.
Chroni wszystkie obsługiwane modele, zarówno Gemini modele, jak i Imagen modele.
App Check obsługuje też ochronę przed atakami typu replay, co oznacza, że token App Check można użyć tylko raz.
Ogólne informacje o działaniu App Check
W przypadku App Check urządzenia, na których działa Twoja aplikacja, korzystają z dostawcy potwierdzenia aplikacji lub urządzenia , który sprawdza co najmniej 1 z tych elementów:
- Żądania pochodzą z Twojej autentycznej aplikacji.
- Żądania pochodzą z autentycznego, niezmodyfikowanego urządzenia.
To potwierdzenie jest dołączane do każdego żądania wysyłanego przez Twoją aplikację za pomocą pakietu Firebase AI Logic SDK. Gdy App Check jest wymuszane, żądania od klientów bez prawidłowego potwierdzenia zostaną odrzucone, podobnie jak wszystkie żądania pochodzące z aplikacji lub platformy, na które nie masz autoryzacji.
Podczas konfigurowania App Check rozważ dodanie ochrony przed atakami typu replay, która sprawia, że tokeny App Check są jednorazowe. Ta opcja zapewnia lepszą ochronę niż podstawowa i umożliwia ustawienie odpowiedniego poziomu ochrony aplikacji i przypadków użycia.
Szczegółowe informacje o App Check, w tym o jego limitach i limitach przydziału, znajdziesz w jego dokumentacji.
Konfigurowanie App Check
Dokumentacja App Check zawiera szczegółowe opisy dostawców potwierdzenia oraz szczegółowe instrukcje implementacji.
Wybierz dostawcę potwierdzenia i postępuj zgodnie z instrukcjami implementacji podanymi w tych linkach:
- Platformy Apple: DeviceCheck lub App Attest
- Android: Play Integrity
- Internet: reCAPTCHA Enterprise
- Flutter: Obsługuje
wszystkich domyślnych dostawców wymienionych powyżej
Jeśli używasz starszych wersji wtyczek, zapoznaj się z uwagą dotyczącą specjalnej instancji poniżej. w przypadku Flutter i App Check. - Unity: obsługuje wszystkich domyślnych dostawców wymienionych powyżej.
Jeśli żaden z tych dostawców potwierdzenia nie spełnia Twoich potrzeb, możesz zaimplementować dostawcę niestandardowego który korzysta z zewnętrznego dostawcy potwierdzenia lub własnych technik potwierdzania.
(Wymagane) Włącz egzekwowanie App Check zanim prześlesz aplikację do publicznie dostępnego systemu kontroli kodu źródłowego, udostępnisz ją lub udostępnisz publicznie.
(Zalecane) Zwiększ ochronę, dodając ochronę przed atakami typu replay, co oznacza, że token App Check można użyć tylko raz.
W przypadku lokalnego programowania, gdy App Check jest wymuszane, skonfiguruj App Check dostawcę debugowania, aby pominąć potwierdzenie, ale nadal wymuszać App Check. Zapoznaj się z instrukcjami konfiguracji na swojej platformie: iOS+ | Android | Internet | Flutter | Unity.
Zwiększanie ochrony przez dodanie ochrony przed atakami typu replay
|
Zalecamy używanie najnowszych wersji pakietu SDK, ale
upewnij się, że używasz co najmniej jednej z tych wersji, aby korzystać z ochrony przed atakami typu replay: Platformy Apple w wersji 12.2.0 lub nowszej | Android BoM w wersji 34.14.0 lub nowszej (App Check w wersji 19.1.0 lub nowszej) | Internet w wersji 12.14.0 lub nowszej | Flutter w wersji 4.15.0 lub nowszej (App Check w wersji 4.10.0 lub nowszej) | Unity w wersji 13.12.0 lub nowszej |
Domyślnie App Check używa tokenów sesji, które mają konfigurowalny
czas życia (TTL) od
Możesz jednak zwiększyć ochronę poza tę podstawową, wymuszając ochronę przed atakami typu replay, która zamiast tego używa tokenów o ograniczonym użyciu. Gdy wymuszana jest ochrona przed atakami typu replay, dzieje się to:
App Check będzie blokować żądania do Firebase AI Logic, które używają tokenów sesji. Zamiast tego App Check będzie tylko zezwalaj na żądanie do Firebase AI Logic tylko wtedy, gdy używa ono nowo wygenerowanego tokena o ograniczonym użyciu.
Po zweryfikowaniu tokena o ograniczonym użyciu jest on zużywany, dzięki czemu można go użyć tylko raz, co zapobiega atakom typu replay.
Pakiet SDK App Check generuje nowy token o ograniczonym użyciu dla każdego żądania. Pamiętaj, że ten proces może wpłynąć na Twoje żądania, dodając pewne opóźnienie i czasami koszt (w zależności od dostawcy potwierdzenia).
Konfigurowanie i wymuszanie ochrony przed atakami typu replay
|
Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod specyficzne dla dostawcy. |
Oto jak skonfigurować i wymusić ochronę przed atakami typu replay:
Jeśli jeszcze tego nie zrobisz, zaimplementuj App Check i włącz wymuszanie App Check w swojej aplikacji.
Włącz używanie tokenów o ograniczonym użyciu.
W aplikacji podczas tworzenia instancji ustaw parametr
useLimitedUseAppCheckTokensnatrue:Swift
// ... // During instantiation, enable usage of limited-use tokens let ai = FirebaseAI.firebaseAI( backend: .googleAI(), useLimitedUseAppCheckTokens: true ) // ...Kotlin
// ... // During instantiation, enable usage of limited-use tokens val ai = Firebase.ai( backend = GenerativeBackend.googleAI(), useLimitedUseAppCheckTokens = true ) // ...Java
// ... // During instantiation, enable usage of limited-use tokens FirebaseAI ai = FirebaseAI.getInstance( /* backend: */ GenerativeBackend.googleAI(), /* useLimitedUseAppCheckTokens: */ true ); // ...Web
// ... // During instantiation, enable usage of limited-use tokens const ai = getAI(firebaseApp, { backend: new GoogleAIBackend(), useLimitedUseAppCheckTokens: true }); // ...Dart
// ... // During instantiation, enable usage of limited-use tokens final ai = await FirebaseAI.googleAI( useLimitedUseAppCheckTokens: true, ); // ...Unity
// ... // During instantiation, enable usage of limited-use tokens var ai = FirebaseAI.GetInstance( useLimitedUseAppCheckTokens: true ); // ...Wymuś ochronę przed atakami typu replay.
W kodzie aplikacji upewnij się, że masz włączone używanie tokenów o ograniczonym użyciu (patrz poprzedni krok).
W konsoli Firebase otwórz Bezpieczeństwo > Sprawdzanie aplikacji.
Rozwiń widok danych Firebase AI Logic.
Upewnij się, że podstawowa ochrona jest wymuszana, a następnie kliknij Dalej.
W przypadku ochrony przed atakami typu replay wybierz Niewymuszana (tylko monitorowanie) lub Wymuszana.
Aby zdecydować, kiedy wymusić ochronę przed atakami typu replay, weź pod uwagę te kwestie:
Monitorowanie żądań jest zalecane, jeśli znaczna liczba użytkowników prawdopodobnie używa starszych wersji aplikacji bez włączonego używania tokenów o ograniczonym użyciu. Jeśli od razu wymusisz ochronę przed atakami typu replay, żądania od tych użytkowników zostaną zablokowane.
Możesz monitorować wskaźnik Niezweryfikowane: token użyty ponownie , który oznacza liczbę żądań z tokenem, który został już użyty w poprzednim żądaniu. Monitoruj ten wskaźnik w konsoli Firebase (otwórz kartę Bezpieczeństwo > Sprawdzanie aplikacji > Interfejsy API).
Jeśli znaczna część ostatnich żądań należy do tej kategorii, możesz uniknąć zakłóceń u użytkowników i poczekać z wymuszeniem ochrony przed atakami typu replay, aż więcej użytkowników zaktualizuje aplikację do wersji, która używa tokenów o ograniczonym użyciu.
Informacje o integracji Firebase AI Logic z App Check
Aby korzystać z pakietów SDK Firebase AI Logic, interfejs API
Firebase AI Logic (firebasevertexai.googleapis.com)
musi być włączony w projekcie w Firebase. Dzieje się tak, ponieważ żądania wysyłane przez pakiety SDK
Firebase AI Logic są najpierw wysyłane na serwer Firebase AI Logic
, który działa jako brama proxy, gdzie weryfikacja Firebase App Check odbywa się zanim żądanie zostanie przekazane do backendu wybranego dostawcy
"Gemini API" i interfejsów API umożliwiających dostęp do modeli Gemini
i Imagen.
(Opcjonalnie) Wymuszanie App Check bez dostawcy potwierdzenia w środowisku produkcyjnym (tylko dostawca debugowania)
Możesz wymusić App Check w przypadku AI Logic bez rejestrowania aplikacji u dostawcy potwierdzenia w środowisku produkcyjnym. Ta konfiguracja umożliwia korzystanie z App Check dostawcy debugowania, aby łatwiej rozpocząć pracę z AI Logic, a jednocześnie chronić Gemini API.
Sprawdź, czy App Check jest już wymuszane w przypadku AI Logic.
W konsoli Firebase otwórz kartę Bezpieczeństwo > Sprawdzanie aplikacji > Interfejsy API.
Znajdź wiersz dla Firebase AI Logic. Jeśli jest w nim napisane
Unenforced, wykonaj pozostałe instrukcje.
Kliknij wiersz Firebase AI Logic, a zobaczysz wykresy danych. Pod tymi wykresami kliknij Skonfiguruj.
Na pierwszym ekranie okna (Podstawowa ochrona) wybierz Wymuszane, a następnie kliknij Dalej.
Na następnym ekranie (Ochrona przed atakami typu replay) wybierz Wyłączone. W każdej chwili możesz skonfigurować tę opcję później i wrócić do tego procesu konfiguracji. Kliknij Dalej.
Na ostatnim ekranie zapoznaj się z kwestiami dotyczącymi wymuszania App Check , aby upewnić się, że jesteś gotowy na wymuszenie App Check. Jeśli tak, kliknij Dalej.
Jeśli chcesz tylko wymusić App Check i tylko używać dostawcy debugowania z AI Logic w aplikacji w wersji przedprodukcyjnej, nie musisz rejestrować aplikacji. Gdy jednak będziesz gotowy(-a) do udostępnienia aplikacji użytkownikom, musisz zarejestrować aplikacje w ramach konfigurowania dostawcy potwierdzenia w środowisku produkcyjnym (np. App Attest, Play Integrity lub reCAPTCHA Enterprise).
W przypadku lokalnego programowania, gdy App Check jest wymuszane, musisz skonfigurować dostawcę debugowania App Check , aby pominąć potwierdzenie, ale nadal wymuszać App Check.
Szczegółowe informacje o konfigurowaniu dostawcy debugowania znajdziesz w instrukcjach dotyczących Twojej platformy: iOS+ | Android | Internet | Flutter | Unity.